如何在蛇游戏中设置边框

时间:2017-10-07 18:24:51

标签: java

我在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行。

1 个答案:

答案 0 :(得分:0)

你试过在墙前1个像素调用dead()函数吗?即

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