Advertisement
TheCodingUniverse

EntityDemo.java

Nov 15th, 2011
650
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.69 KB | None | 0 0
  1. // EntityDemo.java
  2.  
  3. package examples;
  4.  
  5. import static org.lwjgl.opengl.GL11.*;
  6.  
  7. import org.lwjgl.input.Mouse;
  8. import org.lwjgl.opengl.*;
  9. import org.lwjgl.*;
  10.  
  11. import entities.AbstractEntity;
  12. import entities.AbstractMoveableEntity;
  13. import entities.Entity;
  14. import entities.MoveableEntity;
  15.  
  16. public class EntityDemo {
  17.  
  18.     private long lastFrame;
  19.  
  20.     private long getTime() {
  21.         return (Sys.getTime() * 1000) / Sys.getTimerResolution();
  22.     }
  23.  
  24.     private int getDelta() {
  25.         long currentTime = getTime();
  26.         int delta = (int) (currentTime - lastFrame);
  27.         lastFrame = getTime();
  28.         return delta;
  29.     }
  30.  
  31.     private static class Box extends AbstractMoveableEntity {
  32.  
  33.         public Box(double x, double y, double width, double height) {
  34.             super(x, y, width, height);
  35.         }
  36.  
  37.         @Override
  38.         public void draw() {
  39.             glRectd(x, y, x + width, y + height);
  40.         }
  41.  
  42.     }
  43.  
  44.     private static class Point extends AbstractEntity {
  45.  
  46.         public Point(double x, double y) {
  47.             super(x, y, 1, 1);
  48.         }
  49.  
  50.         @Override
  51.         public void draw() {
  52.             glBegin(GL_POINTS);
  53.             glVertex2d(x, y);
  54.             glEnd();
  55.         }
  56.  
  57.         @Override
  58.         public void update(int delta) {
  59.             // Do nothing
  60.         }
  61.  
  62.     }
  63.  
  64.     public EntityDemo() {
  65.         try {
  66.             Display.setDisplayMode(new DisplayMode(640, 480));
  67.             Display.setTitle("Entity Demo");
  68.             Display.create();
  69.         } catch (LWJGLException e) {
  70.             e.printStackTrace();
  71.         }
  72.  
  73.         // Initialization code Entities
  74.  
  75.         MoveableEntity box = new Box(100, 100, 50, 50);
  76.         Entity point = new Point(10, 10);
  77.  
  78.         // Initialization code OpenGL
  79.         glMatrixMode(GL_PROJECTION);
  80.         glLoadIdentity();
  81.         glOrtho(0, 640, 480, 0, 1, -1);
  82.         glMatrixMode(GL_MODELVIEW);
  83.        
  84.         lastFrame = getTime();
  85.  
  86.         while (!Display.isCloseRequested()) {
  87.             // Render
  88.  
  89.             point.setLocation(Mouse.getX(), 480 - Mouse.getY() - 1);
  90.            
  91.             glClear(GL_COLOR_BUFFER_BIT);
  92.  
  93.             int delta = getDelta();
  94.             box.update(delta);
  95.             point.update(delta);
  96.            
  97.             if (box.intersects(point)) {
  98.                 box.setDX(0.2);
  99.             }
  100.            
  101.             point.draw();
  102.             box.draw();
  103.            
  104.             Display.update();
  105.             Display.sync(60);
  106.         }
  107.  
  108.         Display.destroy();
  109.     }
  110.  
  111.     /**
  112.      * @param args
  113.      */
  114.     public static void main(String[] args) {
  115.         new EntityDemo();
  116.     }
  117.  
  118. }
  119.  
  120. // Entity.java
  121.  
  122. package entities;
  123.  
  124. public interface Entity {
  125.     public void draw();
  126.     // See episode 7
  127.     public void update(int delta);
  128.     public void setLocation(double x, double y);
  129.     public void setX(double x);
  130.     public void setY(double y);
  131.     public void setWidth(double width);
  132.     public void setHeight(double height);
  133.     public double getX();
  134.     public double getY();
  135.     public double getHeight();
  136.     public double getWidth();
  137.     public boolean intersects(Entity other);
  138. }
  139.  
  140. // MoveableEntity.java
  141.  
  142. package entities;
  143.  
  144. public interface MoveableEntity extends Entity {
  145.     public double getDX();
  146.     public double getDY();
  147.     public void setDX(double dx);
  148.     public void setDY(double dy);
  149. }
  150.  
  151. // AbstractEntity.java
  152.  
  153. package entities;
  154.  
  155. import java.awt.Rectangle;
  156.  
  157. public abstract class AbstractEntity implements Entity {
  158.  
  159.     protected double x, y, width, height;
  160.     protected Rectangle hitbox = new Rectangle();
  161.    
  162.     public AbstractEntity(double x, double y, double width, double height) {
  163.         this.x = x;
  164.         this.y = y;
  165.         this.width = width;
  166.         this.height = height;
  167.     }
  168.  
  169.     @Override
  170.     public void setLocation(double x, double y) {
  171.         this.x = x;
  172.         this.y = y;
  173.     }
  174.  
  175.     @Override
  176.     public void setX(double x) {
  177.         this.x = x;
  178.     }
  179.  
  180.     @Override
  181.     public void setY(double y) {
  182.         this.y = y;
  183.     }
  184.  
  185.     @Override
  186.     public void setWidth(double width) {
  187.         this.width = width;
  188.     }
  189.  
  190.     @Override
  191.     public void setHeight(double height) {
  192.         this.height = height;
  193.     }
  194.  
  195.     @Override
  196.     public double getX() {
  197.         return x;
  198.     }
  199.  
  200.     @Override
  201.     public double getY() {
  202.         return y;
  203.     }
  204.  
  205.     @Override
  206.     public double getHeight() {
  207.         return height;
  208.     }
  209.  
  210.     @Override
  211.     public double getWidth() {
  212.         return width;
  213.     }
  214.  
  215.     @Override
  216.     public boolean intersects(Entity other) {
  217.         hitbox.setBounds((int) x, (int) y, (int) width, (int) height);
  218.         return hitbox.intersects(other.getX(), other.getY(), other.getWidth(), other.getHeight());
  219.     }
  220.  
  221. }
  222.  
  223. // AbstractMoveableEntity.java
  224.  
  225. package entities;
  226.  
  227. public abstract class AbstractMoveableEntity extends AbstractEntity implements MoveableEntity {
  228.  
  229.     protected double dx ,dy;
  230.    
  231.     public AbstractMoveableEntity(double x, double y, double width,
  232.             double height) {
  233.         super(x, y, width, height);
  234.         this.dx = 0;
  235.         this.dy = 0;
  236.     }
  237.    
  238.     @Override
  239.     public void update(int delta) {
  240.         this.x += delta * dx;
  241.         this.y += delta * dy;
  242.     }
  243.    
  244.     public double getDX() {
  245.         return dx;
  246.     }
  247.     public double getDY() {
  248.         return dy;
  249.     }
  250.     public void setDX(double dx) {
  251.         this.dx = dx;
  252.     }
  253.     public void setDY(double dy) {
  254.         this.dy = dy;
  255.     }
  256.  
  257. }
  258.  
  259.  
  260.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement