0

I am writing a snake game in java and the turns are controlled by keyboard. everything works fine, but when i by mistake press 2 keys then the whole application freezes (the gui) snake stops moving, but thread keeps running according to my eclipse, i thought it might be the default case that causes problems, but the statement does not get printed.

private class KeyboardListener extends KeyAdapter {

    public void keyPressed(KeyEvent e) {
        Directions direc = c.getDirectionSnake();
        switch (e.getKeyCode()) {
        case KeyEvent.VK_RIGHT:
        case KeyEvent.VK_NUMPAD6:
            // if it's not the opposite direction
            if (c.getDirectionSnake() != Directions.LEFT)
                c.setDirectionSnake(Directions.RIGHT);
            break;
        case KeyEvent.VK_UP:
        case KeyEvent.VK_NUMPAD8:
            if (c.getDirectionSnake() != Directions.BOTTOM)
                c.setDirectionSnake(Directions.TOP);
            break;

        case KeyEvent.VK_LEFT:
        case KeyEvent.VK_NUMPAD4:
            if (c.getDirectionSnake() != Directions.RIGHT)
                c.setDirectionSnake(Directions.LEFT);
            break;

        case KeyEvent.VK_DOWN:
        case KeyEvent.VK_NUMPAD2:
            if (c.getDirectionSnake() != Directions.TOP)
                c.setDirectionSnake(Directions.BOTTOM);
            break;
        default:
        System.out.println("here");
            break;
        }
    }
}

jframe

public Window() throws FileNotFoundException {

    this.setTitle("Snake");
    this.setSize(400, 450);
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setLocationRelativeTo(null);

    gamePanel = new GamePanel();
    topPanel = new TopPanel();

    this.add(new TopPanel(), BorderLayout.NORTH);

    this.add(gamePanel, BorderLayout.CENTER);
    c = new ThreadsController(gamePanel.getSnakeDepartPosition());
    c.start();
    this.buttonPanel = new ButtonPanel(this, c);
    this.add(buttonPanel, BorderLayout.SOUTH);
    this.setVisible(true);

    this.addKeyListener(new KeyboardListener());

}
Jenny
  • 445
  • 2
  • 6
  • 23

0 Answers0