我在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是一个变量,您可以切换为打开和关闭边框,并在此IF语句中使用borderDead。
if(borderDead) {
if(score > highScore) {
highScore = score;
}
playing = false;
dead();
deadGraphic(g);
}
dead()和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 :(得分:0)
你试过在墙前1个像素调用dead()函数吗?即
else {
if(snakexlength[i] > 849) {
borderDead = true;
}
}