001 package test;
002
003 import java.awt.Container;
004
005 import javax.media.opengl.GLCanvas;
006 import javax.media.opengl.GLCapabilities;
007 import javax.media.opengl.GLEventListener;
008 import javax.swing.JFrame;
009
010 import physics3d.Angle;
011 import physics3d.GamePhysics;
012 import physics3d.Vect3;
013
014 import rendering.Renderer;
015
016 import components.Ball;
017 import components.GameObject;
018 import components.GameSettings;
019 import components.GameSpace;
020 import components.SquareBumper;
021 import components.TriangleBumper;
022
023 public class WallTest extends JFrame implements Runnable {
024 static final long serialVersionUID = 1495;
025
026 //GameSpace
027 private GameSpace gs;
028 private Ball b; //shall bounce!... maybe
029
030 //rendering stuff
031 private final GLCanvas canvasPanel;
032 private final Renderer myRenderer;
033
034 public WallTest() {
035 super("A Bouncing Ball");
036
037 this.setDefaultCloseOperation(EXIT_ON_CLOSE);
038 this.setResizable(false);
039 this.setSize(600, 600);
040
041 //GameSpace
042 gs = new GameSpace(new GameSettings());
043 b = new Ball(Vect3.ZERO, new Vect3(50, 50, 20), "bouncing ball", gs);
044 gs.add(b);
045 //b.setFrozen(true);
046 b.setTLF(new Vect3(10, 5, 5)); // start ball at 2.5 in y direction
047 gs.getSettings().setGravity(new Vect3(0, 60, 0)); //-1 in y direction
048 gs.getSettings().setMu2(0.9); //no drag
049 //TriangleBumper bumper = new TriangleBumper(new Vect3(10, 12, 0), "sq bumper", gs);
050 //SquareBumper bumper = new SquareBumper(new Vect3(10, 12, 0), "sq bumper", gs);
051 TriangleBumper bumper = new TriangleBumper(new Vect3(10, 12, 5), "sq bumper", gs);
052 SquareBumper tlf = new SquareBumper(new Vect3(0, 0, 0), "tlf", gs);
053 SquareBumper tlb = new SquareBumper(new Vect3(0, 0, 9), "tlb", gs);
054 SquareBumper blf = new SquareBumper(new Vect3(0, 19, 0), "blf", gs);
055 SquareBumper blb = new SquareBumper(new Vect3(0, 19, 9), "blb", gs);
056 SquareBumper trf = new SquareBumper(new Vect3(19, 0, 0), "tlf", gs);
057 SquareBumper trb = new SquareBumper(new Vect3(19, 0, 9), "tlf", gs);
058 SquareBumper brf = new SquareBumper(new Vect3(19, 19, 0), "tlf", gs);
059 SquareBumper brb = new SquareBumper(new Vect3(19, 19, 9), "tlf", gs);
060 gs.add(tlf);
061 gs.add(tlb);
062 gs.add(blf);
063 gs.add(blb);
064 gs.add(brb);
065 gs.add(brf);
066 gs.add(trf);
067 gs.add(trb);
068
069 //bumper.setOrientVect(Vect3.Y_HAT);
070 //bumper.setOrientAngle(Angle.DEG_270);
071 //gs.add(bumper);
072
073 //renderer
074 canvasPanel = new GLCanvas(new GLCapabilities());
075 myRenderer = new Renderer(gs);
076 canvasPanel.addGLEventListener(myRenderer);
077 canvasPanel.setSize(600, 600);
078
079 Container mainPane;
080 mainPane = getContentPane();
081 mainPane.add(canvasPanel);
082 }
083
084 public void run() {
085 // TODO Auto-generated method stub -- change this to a loop
086 for (int f = 0; f < 40; f++) {
087 canvasPanel.display();
088 try {
089 Thread.sleep(33);
090 } catch (InterruptedException e) {
091 // TODO Auto-generated catch block
092 e.printStackTrace();
093 }
094 ////System.out.println("frame +"+f+": p="+b.getPosition()+", v="+b.getVelocity());
095 } //120 frames
096 for (GameObject g : gs.getObjects()) {
097 //System.out.println("g "+g.getName()+": "+g.getCenter());
098 }
099 }
100
101 /**
102 * @param args
103 */
104 public static void main(String[] args) {
105 // TODO Auto-generated method stub
106 WallTest myGUI = new WallTest();
107 myGUI.setVisible(true);
108 myGUI.run();
109 }
110
111 }