我正在尝试用Java重建经典的Snake游戏,但似乎无法让用户输入正确。我希望系统等待一段时间,或者直到用户点击WASD键(以先到者为准)然后继续使用代码。我在这里看到另一个答案,使用BufferedReader和bf.ready()作为可能的解决方案,但由于某些原因不起作用。
这是我目前正在使用的代码。目前它始终将输入打印为测试,这意味着它认为用户从未输入任何内容。有关如何解决它的任何想法?
double x = .75; // wait x seconds at most
InputStreamReader r = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(r);
long startTime = System.currentTimeMillis();
while ((System.currentTimeMillis() - startTime) < x * 1000
&& !in.ready()) {
}
Direction d = Direction.up;
String input = "test";
if (in.ready()) {
input = in.readLine().toLowerCase();
if (input.equals("a")) {
d = Direction.left;
} else if (input.equals("s")) {
d = Direction.down;
} else if (input.equals("d")) {
d = Direction.right;
}
} else {
d = snake.getDirection();
}
System.out.println(input);
in.close();
r.close();
return d;