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
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;
}
//ball hits the ground
if(y>sp.getHeight()-radius-1)
{
y=sp.getHeight()-radius-1;
dy*=energyloss;
dy=-dy;
}
else
{
//change in displacement
dy+=gravity*dt;
//new position of the ball
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