Hi there
I am new here as well as game dev. After three years of programming i have finally zeroed in on what i want to do i.e. develop games.
Enough of the introduction, I need your help to figure out the order of execution of an applet program.I am developing my first GUI based game using Applet(I am following a tutorial). So here it is
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
| public class StartingPoint extends Applet implements Runnable {
private Image i; private Graphics double_G; Ball b; public void run() { while(true) { repaint(); try { Thread.sleep(17); } catch(InterruptedException ie) { ie.printStackTrace(); } } } public void init() { setSize(800,600); } public void start() { b= new Ball(); Thread t=new Thread(this); t.start(); } public void update(Graphics g) { b.update(this); if(i==null) { i=createImage(this.getWidth(),this.getHeight()); double_G=i.getGraphics(); } double_G.setColor(getBackground()); double_G.fillRect(0, 0, this.getWidth(), this.getHeight()); paint(double_G); g.drawImage(i, 0, 0, this); } public void paint(Graphics g) { b.paint(g); } public void stop() {} public void destroy() {}
}
public class Ball { private int x=0,y=0; private double dx=20,dy=0; private int radius=30; private double gravity=15,energyloss=0.65,dt=0.2,xFriction=0.9; public void update(StartingPoint sp) { if(x+dx>sp.getWidth()-radius-1) { x=sp.getWidth()-radius-1; dx=-dx; } else if(x+dx<0) { x=0; dx=-dx; } else { x+=dx; } if(y==sp.getHeight()-radius-1) { dx*=xFriction; if(Math.abs(dx)<0.8) dx=0; } if(y>sp.getHeight()-radius-1) { y=sp.getHeight()-radius-1; dy*=energyloss; dy=-dy; } else { dy+=gravity*dt; y+=dy*dt+0.5*gravity*dt*dt; }
} public void paint(Graphics g) { g.setColor(Color.BLUE); g.fillOval(x, y, radius, radius); } } |
i am a little confused about the order of execution of the above code.
Here is what i think it should be
init()
start()
run()-->repaint()(which actually calls paint() and paint() calls update())
Am I correct?
If I am correct and the update() gets called before the paint(), when the applet runs the first how does it obtain the graphics context/Canvas to print upon?
Also, initially I assign x and y, the value 0, because i want it start at 0,0 but since the update method is called before paint the x and y values get updated before the first paint().
I think the source code I have posted is really long.I am sorry for that.It would be really kind if someone would help me.
Thanks in advance