我正在做一个while循环,它将执行每1/3秒左右(为蛇游戏)。如果有输入,我希望循环能够处理扫描仪输入,如果没有用户输入,我希望循环执行一些默认任务(在最后一个输入方向移动蛇)。
我知道一个更简单的方法是创建一个带有事件处理程序的javafx程序,但是我只是想看看我是否可以在终端中为个人项目实现这种游戏。每当我在while循环中打开扫描器时,我都会将一个变量设置为默认值。如果sc.nextline()存在,扫描器将更新这个变量。然后我的循环执行它的任务。问题是,即使sc.nextline()不存在,我的循环也会等待输入,不管我如何表达代码。
while(snek.currSnake.gameState){
if(snek.nextTurnTime - System.currentTimeMillis() > 0){
try{
TimeUnit.MILLISECONDS.sleep(snek.nextTurnTime-
System.currentTimeMillis());
}
catch(InterruptedException e){
break;
}
//This section handles how quickly each turn gets executed
}
System.out.println(snek.currSnake); //Print game board to terminal
char charInput = snek.currInput; //Update charInput to some
//default value
if(scanner.hasNext()){
charInput = scanner.nextLine().charAt(0);
}
//If there is user input, update charInput to that
if(charInput == 'w' || charInput == 'a' || charInput == 's'
|| charInput == 'd' || charInput == 'q'){ //If charInput is defined
snek.currInput = charInput;
snek.currSnake.move(charInput); //Move snake and update default value
}
snek.nextTurnTime = System.currentTimeMillis() + TURN_DELAY_VAL;
}
下面是一个示例,如果您想在设定的时间范围内轮询来自用户的输入,您可以做一些事情。
public static void main(String[] args) throws IOException, InterruptedException {
// wait time of 1/3 a second in milliseconds
long waitTime = (long) ((1.0 / 3.0) * 1000.0);
// standard input buffered reader
try (BufferedReader in = new BufferedReader(new InputStreamReader(System.in))) {
// loop for 100 polls used in testing (replace with game loop here)
for (int i = 0; i < 100; i++) {
// wait for user to input data
Thread.sleep(waitTime);
String s = null;
while (in.ready()) {
// get the last thing the user has input in the 1/3 second
// to protect you from multiple inputs
s = in.readLine();
}
if (s != null) {
// handle user input here
System.out.println("User input: " + s);
} else {
// handle no user input here
}
}
}
}
我正在设置一个,它在用户输入整数之前一直执行。但是,按照我现在的方式,循环在输入整数后再次打印消息,然后程序正常执行。有人能建议一种方法来使输入整数后不再打印该消息吗?谢了!
首先,感谢你阅读我的帖子并帮助我。 我试图编程,我定义了一个随机数,程序猜测这个随机数,然后,根据我说猜测太高或太低,程序再次猜测。 再次感谢!
问题内容: 这里的Python新手非常抱歉,我确定这是一个愚蠢的问题,但是我似乎无法在要求我使用while循环检查有效用户输入的教程中解决以下挑战。 (使用Python2.7) 这是我的代码,但无法正常工作: 上面打印输出到控制台: 这显然是不正确的-循环应该在用户输入“ y”或“ n”时结束,但是我不确定如何执行此操作。我在这里做错了什么? 注意:挑战要求我同时使用运算符和 问题答案: 较短的解
这里的Python新手非常抱歉,我确信这是一个愚蠢的问题,但在一个教程中,我似乎无法解决以下挑战,该教程要求我使用while循环来检查有效的用户输入。 (使用Python2.7) 这是我的代码,但它工作不正常: 上述内容打印到控制台: 这显然是不对的- 注意:挑战要求我同时使用运算符和
我试图通过使用Kryonet进行通信来创建一个基本的IRC。我遇到的问题是,在我的代码中,我不能安全地使用允许用户键入和发送消息的main while循环,因为Scanner给出了一个错误,并且似乎跳过了对nextLine()的调用。我想做的是让扫描仪在继续之前等待用户输入。 更准确地说,程序将首先在行的开头放一个“:”,然后在用户按enter键后获取用户键入的任何内容,然后将其发送到服务器。我得
我试图在PlayerOne类中放入一个while循环,这样就可以通过用户输入来选择玩家的职业。我不知道怎么让它起作用。你能给我一个建议或提示吗?谢谢!(我想你不需要玩家类或者主类,所以我就让他们置身事外)