Java控制台中的运行时按键检测

时间:2018-10-05 14:17:32

标签: java

我正在尝试用Java制作俄罗斯方块游戏。我已经制作了在矩阵中移动形状的函数。但是我不知道在运行时从键盘上按下键时如何访问这些功能。

public class tetris
    {
      public static void main(String args[])throws InterruptedException
      {
        int score=0;
        int height=30;
        int width=30;
        board obj=new board(height,width);
        SquareShape sq=new SquareShape(height,width);
        while(true)
        {
          System.out.println("\t  Score: "+score);
          obj.createboard();
          board.update(sq);
          obj.dispboard();
          sq.movedown();
          Thread.sleep(1000);
          System.out.print("\033[H\033[2J");
        }
      }
    }

1 个答案:

答案 0 :(得分:0)

您在编写游戏机吗? 有点硬,但是如果您喜欢它的话:)

您需要从控制台捕获输入流。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String line = br.readLine(); // or br.read(byteBuffer);

通过JDK的默认实现,流仅在ENTER之后才会为您提供数据。

因此,如果您需要按键操作,请尝试一下。 这是一个Java / scala示例,但是可以很容易地更改为适用于纯Java: How to capture keyboard event without Enter key in java/scala? 跟随线程进入github实现!

或者,如果您有权访问awt软件包,也可以使用该软件包。

希望有帮助。

无论如何...我的2c:如果将代码编码为android或ios,它将是更好的游戏。