Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // EntityDemo.java
- package examples;
- import static org.lwjgl.opengl.GL11.*;
- import org.lwjgl.input.Mouse;
- import org.lwjgl.opengl.*;
- import org.lwjgl.*;
- import entities.AbstractEntity;
- import entities.AbstractMoveableEntity;
- import entities.Entity;
- import entities.MoveableEntity;
- public class EntityDemo {
- private long lastFrame;
- private long getTime() {
- return (Sys.getTime() * 1000) / Sys.getTimerResolution();
- }
- private int getDelta() {
- long currentTime = getTime();
- int delta = (int) (currentTime - lastFrame);
- lastFrame = getTime();
- return delta;
- }
- private static class Box extends AbstractMoveableEntity {
- public Box(double x, double y, double width, double height) {
- super(x, y, width, height);
- }
- @Override
- public void draw() {
- glRectd(x, y, x + width, y + height);
- }
- }
- private static class Point extends AbstractEntity {
- public Point(double x, double y) {
- super(x, y, 1, 1);
- }
- @Override
- public void draw() {
- glBegin(GL_POINTS);
- glVertex2d(x, y);
- glEnd();
- }
- @Override
- public void update(int delta) {
- // Do nothing
- }
- }
- public EntityDemo() {
- try {
- Display.setDisplayMode(new DisplayMode(640, 480));
- Display.setTitle("Entity Demo");
- Display.create();
- } catch (LWJGLException e) {
- e.printStackTrace();
- }
- // Initialization code Entities
- MoveableEntity box = new Box(100, 100, 50, 50);
- Entity point = new Point(10, 10);
- // Initialization code OpenGL
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(0, 640, 480, 0, 1, -1);
- glMatrixMode(GL_MODELVIEW);
- lastFrame = getTime();
- while (!Display.isCloseRequested()) {
- // Render
- point.setLocation(Mouse.getX(), 480 - Mouse.getY() - 1);
- glClear(GL_COLOR_BUFFER_BIT);
- int delta = getDelta();
- box.update(delta);
- point.update(delta);
- if (box.intersects(point)) {
- box.setDX(0.2);
- }
- point.draw();
- box.draw();
- Display.update();
- Display.sync(60);
- }
- Display.destroy();
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- new EntityDemo();
- }
- }
- // Entity.java
- package entities;
- public interface Entity {
- public void draw();
- // See episode 7
- public void update(int delta);
- public void setLocation(double x, double y);
- public void setX(double x);
- public void setY(double y);
- public void setWidth(double width);
- public void setHeight(double height);
- public double getX();
- public double getY();
- public double getHeight();
- public double getWidth();
- public boolean intersects(Entity other);
- }
- // MoveableEntity.java
- package entities;
- public interface MoveableEntity extends Entity {
- public double getDX();
- public double getDY();
- public void setDX(double dx);
- public void setDY(double dy);
- }
- // AbstractEntity.java
- package entities;
- import java.awt.Rectangle;
- public abstract class AbstractEntity implements Entity {
- protected double x, y, width, height;
- protected Rectangle hitbox = new Rectangle();
- public AbstractEntity(double x, double y, double width, double height) {
- this.x = x;
- this.y = y;
- this.width = width;
- this.height = height;
- }
- @Override
- public void setLocation(double x, double y) {
- this.x = x;
- this.y = y;
- }
- @Override
- public void setX(double x) {
- this.x = x;
- }
- @Override
- public void setY(double y) {
- this.y = y;
- }
- @Override
- public void setWidth(double width) {
- this.width = width;
- }
- @Override
- public void setHeight(double height) {
- this.height = height;
- }
- @Override
- public double getX() {
- return x;
- }
- @Override
- public double getY() {
- return y;
- }
- @Override
- public double getHeight() {
- return height;
- }
- @Override
- public double getWidth() {
- return width;
- }
- @Override
- public boolean intersects(Entity other) {
- hitbox.setBounds((int) x, (int) y, (int) width, (int) height);
- return hitbox.intersects(other.getX(), other.getY(), other.getWidth(), other.getHeight());
- }
- }
- // AbstractMoveableEntity.java
- package entities;
- public abstract class AbstractMoveableEntity extends AbstractEntity implements MoveableEntity {
- protected double dx ,dy;
- public AbstractMoveableEntity(double x, double y, double width,
- double height) {
- super(x, y, width, height);
- this.dx = 0;
- this.dy = 0;
- }
- @Override
- public void update(int delta) {
- this.x += delta * dx;
- this.y += delta * dy;
- }
- public double getDX() {
- return dx;
- }
- public double getDY() {
- return dy;
- }
- public void setDX(double dx) {
- this.dx = dx;
- }
- public void setDY(double dy) {
- this.dy = dy;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement