Нажатие двух клавиш сразу
Итак, решил я, значит, начать изучение языка Java, изучал себе, изучал, по обучающим роликам создал что-то похожее на змейку (игра). И вот все бы ничего, но при нажатии двух кнопок одновременно происходит ужасное - змейка съедает сама себя. Подскажите, где же ошибка?
Вся суть в том, что мне нужно сделать так, чтобы проверялось нажатие двух кнопок одновременно, и если они нажаты, змейка не поворачивала. Ну, надеюсь, поймете.
P.S. Я еще совсем начинающий, не ругайтесь сильно на мой мега код. )
P.P.S. Все лишнее я убрал, поэтому не пишите "втф афтар у тебя же змейка не объявлена".
public class Main extends JPanel implements ActionListener {
public static final int SCALE = 32;
public static final int WIDTH = 20;
public static final int HEIGHT = 20;
public static int SPEED = 10;
Snake s = new Snake(10, 10, 9, 10);
Timer t = new Timer(1000/SPEED, this);
private class keyboard extends KeyAdapter{
public void keyPressed(KeyEvent Kevent){
int key = Kevent.getKeyCode();
//я пытался...
if((((key == KeyEvent.VK_RIGHT & s.direction!= 2)& key != KeyEvent.VK_DOWN) & key != KeyEvent.VK_UP )& key != KeyEvent.VK_LEFT) s.direction = 0;
if((((key == KeyEvent.VK_DOWN & s.direction!= 3)& key != KeyEvent.VK_UP) & key != KeyEvent.VK_RIGHT )& key != KeyEvent.VK_LEFT) s.direction = 1;
if((((key == KeyEvent.VK_LEFT & s.direction != 0)& key != KeyEvent.VK_UP) & key != KeyEvent.VK_RIGHT )& key != KeyEvent.VK_DOWN) s.direction = 2;
if((((key == KeyEvent.VK_UP & s.direction != 1)& key != KeyEvent.VK_DOWN) & key != KeyEvent.VK_RIGHT )& key != KeyEvent.VK_LEFT) s.direction = 3;
}
}
public Main(){
t.start();
addKeyListener(new keyboard());
setFocusable(true);
}
public static void main(String[] args) {
JFrame f = new JFrame("Amazing snake");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(false);
f.setSize(WIDTH * SCALE+6 , HEIGHT * SCALE + 29);
f.setLocationRelativeTo(null);
f.add(new Main());
f.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
s.move();
repaint();
}
}