Java开关带有用户输入键击



我正在使用Java制作蛇游戏,需要使用用户击键来控制运动的方向。这是否可以通过switch语句?我最初使用Scanner s = new Scanner(System.in)来允许用户键入'u','d'等。移动蛇,但我想使用键盘箭头。

这是我现在拥有的:

public void controlSnake(){
Scanner s = new Scanner(System.in);
String inputString = s.next();
    switch (inputString) {
    case "u":
    case "U":
        snake.changeDirection(Point.NORTH);
        break;
    case "d":
    case "D":
        snake.changeDirection(Point.SOUTH);
        break;
    case "r":
    case "R":
        snake.changeDirection(Point.EAST);
        break;
    case "l":
    case "L":
        snake.changeDirection(Point.WEST);
        break;
    } 
}

我要插入这样的东西,但不确定如何:

     map1.put(KeyStroke.getKeyStroke("LEFT"), "moveLeft");
     getActionMap().put("moveLeft", new AbstractAction() {
     private static final long serialVersionUID = 1L;
     public void actionPerformed(ActionEvent e) {
     snake.changeDirection(Point.WEST);
     }
     });

完成此操作的最佳方法是什么?

可以从JDK 7使用String使用Switch语句:

开关语句中的字符串

似乎您正在开发游戏机游戏。如果您使用的是秋千,则可以考虑将InputMapActionMap一起使用:

如何使用密钥绑定

我看到您正在使用秋千。您可以使用KeyListener接口。这样的东西。

yourButton.addKeyListener(new KeyListener(){
         @Override
            public void keyPressed(KeyEvent e) {
                if(e.getKeyCode() == KeyEvent.VK_UP){
                    snake.changeDirection(Point.NORTH);
                }
                if(e.getKeyCode() == KeyEvent.VK_DOWN){
                    snake.changeDirection(Point.SOUTH);
                }
                //Likewise for left and right arrows
            }
            @Override
            public void keyTyped(KeyEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }
            @Override
            public void keyReleased(KeyEvent e) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }
    });

相关内容

  • 没有找到相关文章

最新更新