2016-04-15 54 views
-1
@Override 
public void keyPressed(KeyEvent e) { 
    int i = e.getKeyCode(); 
    if (i == KeyEvent.VK_A && direction != RIGHT && direction != DOWN && direction != UP) 
      direction = LEFT; 

    if (i == KeyEvent.VK_D && direction != LEFT && direction != UP && direction != DOWN) 
      direction = RIGHT; 

    if (i == KeyEvent.VK_W && direction != DOWN && direction != LEFT && direction != RIGHT) 
      direction = UP; 

    if (i == KeyEvent.VK_S && direction != UP && direction != LEFT && direction != RIGHT) 
      direction = DOWN; 


    if(i == KeyEvent.VK_SPACE) 
     if(over) 
      startGame(); 
     else 
      paused = !paused;   
} 
+2

你的問題是? – Abdelhak

+1

正如我所看到的,你只允許改變你已經使用的方向。您將方向設置爲左側,方向不正確時,向下並向上 - >所以它已經離開了? –

+0

嘗試添加一些括號{}以使您的代碼更清晰 – Abdelhak

回答

2

我想你只是不想停止180度轉彎,而不是像@ ThomasBehm已經提到的90度轉彎。

public void keyPressed(KeyEvent e) { 
     int i = e.getKeyCode(); 
     if (i == KeyEvent.VK_A && direction != RIGHT) 
       direction = LEFT; 

     if (i == KeyEvent.VK_D && direction != LEFT) 
       direction = RIGHT; 

     if (i == KeyEvent.VK_W && direction != DOWN) 
       direction = UP; 

     if (i == KeyEvent.VK_S && direction != UP) 
       direction = DOWN; 


     if(i == KeyEvent.VK_SPACE) 
      if(over) 
       startGame(); 
      else 
       paused = !paused;   
    }