   Java problem
  I am using BlueJ as a compiler. You see I have a basic source code for my game, nothing to complicated. However, when I ad a while loop to the game to make it so when he falls he goes faster and faster, it just crashes, I have no idea what happens, I run the applet and nothing shows up and I am not able to close the applet, it just says applet started, it makes utterly no sense at all, without the loop everything works fine, but no matter where I put it, as long as I have a while loop it does the exact same thing. Please help.   
Quote:Original post by ZeronHowever, when I ad a while loop to the game to make it so when he falls he goes faster and faster, it just crashes, I have no idea what happens, I run the applet and nothing shows up and I am not able to close the applet, it just says applet started, it makes utterly no sense at all, without the loop everything works fine, but no matter where I put it, as long as I have a while loop it does the exact same thing. Please help.Well, don't add the while loop, so it won't crash, although I have no idea how to solve it, although you should probably fix it so it won't crash.Hint: Post some useful details, such as source code, stack trace, core dump, ....   ;  Well heres the source code.import java.awt.*;import java.awt.event.*;import java.applet.Applet;import javax.swing.*;public class LessonOne extends Applet implements ActionListener, KeyListener{   private int x;   private int y;   private int incx;   private int incy;   private Timer timer;   private int color;   private int yspeed = 0;   boolean falling = false;   public void init()    {    x=200;   y=200;   incx=0;   incy=0;   timer = new Timer(20, this);   timer.start();   setBackground(Color.WHITE);   addKeyListener(this);    }   public void actionPerformed(ActionEvent ae){   repaint();    }    public void keyReleased(KeyEvent ke)    {   incx=0;   incy=0;   }    public void falling()    {    if(y <= 490)    {   falling = true;   yspeed = 6;    }    else    {   falling = false;   yspeed = 0;    }    }    public void keyPressed(KeyEvent ke)    {   int key = ke.getKeyCode();   if (key == KeyEvent.VK_RIGHT)   {  incx=3;    }   if (key == KeyEvent.VK_LEFT)   {  incx=-3;    }   if (key == KeyEvent.VK_UP)   {  incx=0;   }   if (key == KeyEvent.VK_DOWN)   {  incx=0;   }   if (key == KeyEvent.VK_SPACE)   {  yspeed=-15;  if(y == y+30)  {  yspeed = 15;   if(y <= 490){ yspeed = 0; }   }   }if (key == KeyEvent.VK_S)   {  incx = incx + 0;   }if (key == KeyEvent.VK_W)   {  incx = incx + 0;   }if (key == KeyEvent.VK_A)   {  incx = incx - 3;   }if (key == KeyEvent.VK_D)   {  incx = incx + 6;   }if (key == KeyEvent.VK_Q)   {  incx = incx + -6;   }if (key == KeyEvent.VK_E)   {  incx = incx + 6;   }if (key == KeyEvent.VK_1)   {  color = 1;   }if (key == KeyEvent.VK_2){color = 2;}   repaint();    }    public void keyTyped(KeyEvent ke)    {} public void paint(Graphics g){y = y + yspeed-5;pacman(g, x, y, 50, 50, Color.BLUE);x+= incx;y+= incy;if (color == 1){g.setColor(Color.BLUE);}if (color == 2){g.setColor(Color.YELLOW);}}public void pacman(Graphics g, int x, int y, int width, int height, Color col){    falling();    System.out.println((y-yspeed+","+yspeed));g.setColor(col);g.fillOval(x+2*width/3,y,width/6,height/6);g.setColor(Color.GREEN);g.fillRect(0, 500, 1000000, 500);g.setColor(Color.YELLOW);g.fillRect(0, 0, 130, 15);g.setColor(Color.BLACK);g.drawString("Move: Arrow Keys", 10, 10);g.setColor(Color.GREEN);g.fillRect(0, 15, 130, 15);g.setColor(Color.BLACK);g.drawString("Move faster: WASD.", 10, 25);g.setColor(Color.RED);g.fillRect(0, 30, 130, 15);g.setColor(Color.BLACK);g.drawString("Move Diagnoly: Q&E", 10, 40);}}The while loop I usually add it in the falling void.   ;  Is the while loop without an end condition? If so .. every time paint() is called you call pacman(..) where you call falling() which has the loop. You should add another thread if you want to loop something outside the main program cycle.   ;  Use the source code tag to make your code more readable.The while loop you "usually" add that crashes your program? It is difficult to help you solve a problem with your code when you remove the problem. :)What does your while loop look like? I would guess your loop is not correctly terminating - which probably causes some undesirable result.   ;  While(falling = true){yspeed = yspeed + 1;}   ;  And if I don't add it then I won't have the gravity. Or at least increasing velocity, which I want.   ;  Hmm, try putting it back in, but replacing the while keyword with if, and the = with ==. If that doesn't work, I guess I'll start figuring out your code.   ;  so your saying if you have this code it breaks?Quote:bool flag = false;while(!flag){flag = true;}If thats the case then theres probably something wrong with your build enviroment because that is perfectly valid code, otherwise check your stack trace, logs and try debugging, its hard to believe that a simple while loop wont work unless your programming it wrong.   ;  You're updating yspeed but never recalculating falling. There's an infinite loop. Also, you should replacewhile( falling = true )..Withwhile( falling ) // or while( falling == true )..