2017-10-07 40 views
0

我有一個在Java中設置的蛇遊戲,我希望能夠切換穿過兩側的能力並彈出相反的一面,以及當你死時的經典版本你打了邊界。問題是我的蛇在邊界之後繼續前進,我該如何解決這個問題?如何在蛇遊戲中設置邊框

這是我的代碼,當右箭頭鍵被按下的作用的部件之一:

if(right) { 

     for(int i = lengthofsnake - 1; i >= 0; i--) { 
      snakeylength[i+1] = snakeylength[i]; 
     } 

     for(int i = lengthofsnake; i >= 0; i--) { 

      if(i == 0) { 
       snakexlength[i] = snakexlength[i] + 25; 
      } 

      else { 
       snakexlength[i] = snakexlength[i-1]; 
      } 

      if(!borderGameplay) { 
       if(snakexlength[i] > 850) { 
        snakexlength[i] = 25; 
       } 
      } 

      else { 
       if(snakexlength[i] > 850) { 
        borderDead = true; 
       } 
      } 
     } 

     repaint(); 
    } 

borderGameplay是,你可以切換到具有開啓和關閉,並borderDead在此使用邊界變量IF聲明。

if(borderDead) { 
     if(score > highScore) { 
      highScore = score; 
     } 
     playing = false; 
     dead(); 
     deadGraphic(g); 
} 

死()和deadGraphic(G):

public void deadGraphic(Graphics g) { 
    g.setColor(Color.WHITE); 
    g.setFont(new Font("arial", Font.BOLD, 50)); 
    g.drawString("Game Over", 300, 300); 

    g.setFont(new Font("arial", Font.BOLD, 20)); 
    g.drawString("Press \"Space\" To Restart And \"Enter\" To Toggle Borders", 160, 340); 

    if(borderGameplay) { 
     g.drawString("Borders ON", 370, 380); 
    } 
    else { 
     g.drawString("Borders OFF", 365, 380); 
    } 
} 

public void dead() { 
    right = false; 
    left = false; 
    up = false; 
    down = false; 
    dead = true; 
    score = 0; 
    moves = 0; 
} 

最後我的JFrame:

JFrame obj = new JFrame("Snake"); 
    gameplay Gameplay = new gameplay(); 
    obj.setBounds(10, 10, 905, 700); 
    obj.setBackground(Color.DARK_GRAY); 
    obj.setResizable(false); 
    obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    obj.add(Gameplay); 
    obj.setVisible(true); 

如果你需要看我的代碼的其他部分,請告訴我,因爲這個問題已經很長了,我的總代碼是550行。

+0

這個問題可能會得到來自[遊戲開發堆棧交易所(https://gamedev.stackexchange.com/)通道更好的反應。 – Bobulous

+0

好的,謝謝你會看到 –

回答

0

你有沒有試過在死牆前調用dead()函數1個像素?即

else { 
       if(snakexlength[i] > 849) { 
        borderDead = true; 
       } 
      } 
+0

剛剛嘗試過,問題是,當蛇從邊界「死亡」時會死亡(我將它設置爲25像素x 25像素的網格,因爲蛇體每個都是25x25部分 –