0

我正在尝试为即将进行的测试编写一个简单的 pacman/snake 游戏。由于我们不会使用 GUI(它还没有教过,我不明白,我不知道他们是否允许它),游戏将在控制台/命令行上运行。当程序读取我的输入时,我怎样才能让我的吃豆人或蛇继续移动?例如,如果我按下右箭头或“D”,snake 或 pacman 将向右移动,并且它将继续向右运行,直到我按下另一个按钮(在我的程序中,这意味着我的数组中的 X 坐标将继续增加 1 )我不知道这是否可能,任何帮助表示赞赏

static void mapInit(){ // this is the map. I use 10x10 array. I made it so any blank space that pacman or snake can move have 0 value
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map.length; j++) {
                if(i == 0 || i == 9)
                map[i][j] = rand.nextInt(9)+1;
                else if(i != 0 && i != 9){
                 if( j == 9 || j == 0) map[i][j] = rand.nextInt(9)+1;
                }//else if
                } //second for
            } // top for

    } //mapInit
    static void world(){ // this prints out the map and the snake
        for (int i = 0; i < map.length; i++) {
            for (int j = 0; j < map.length; j++) {
                if(i == y && j == x) {  // X and Y is the coordinate of my snake or pacman
                    System.out.print("C");
                    System.out.print(" ");
                }
                    else if (map[i][j] == 0) {
                        System.out.print(" ");
                        System.out.print(" ");


                    }
                        else {
                        System.out.print(map[i][j]);
                        System.out.print(" "); 
                        }
            }
            System.out.println();
        }


    } // world
4

1 回答 1

2

看起来 alistener是您可能正在寻找的东西。您需要使您决定应处理输入的类,implements KeyListener然后覆盖以下一种或多种方法以获得所需的行为。最重要的是,您需要确保您的程序不会在第一次运行时退出,因此需要一个游戏循环。关于如何KeyListenerJava 文档中编写 a 有一个更完整的示例。

如果你想让 pacman 继续朝着一个方向前进,你可以设置一个currentDirection变量,让他在每帧所需的方向上移动,这是在你按下键时设置的。

public void keyTyped(KeyEvent e) {
    displayInfo(e, "KEY TYPED: ");
}

/** Handle the key-pressed event from the text field. */
public void keyPressed(KeyEvent e) {
    displayInfo(e, "KEY PRESSED: ");
}

/** Handle the key-released event from the text field. */
public void keyReleased(KeyEvent e) {
    displayInfo(e, "KEY RELEASED: ");
}
于 2014-09-29T09:19:31.470 回答