[英]One Time Loop in java?
我试过在Java中执行一次仅执行一次的循环,
package com.notelek.programs.flat;
import java.awt.event.KeyEvent;
import com.notelek.programs.flat.input.Controller;
public class Game {
public static int time;
public Controller controls;
public Game(){
controls = new Controller();
}
public void tick(Boolean[] key){
time++;
Boolean forward = key[KeyEvent.VK_W];
Boolean back = key[KeyEvent.VK_S];
Boolean left = key[KeyEvent.VK_A];
Boolean right = key[KeyEvent.VK_D];
Boolean turnLeft = key[KeyEvent.VK_LEFT];
Boolean turnRight = key[KeyEvent.VK_RIGHT];
for(Boolean i = true; i == true; i = false){
forward = true;
back = true;
left = true;
right = true;
turnLeft = true;
turnRight = true;
}
controls.tick(forward,back,left,right,turnLeft,turnRight);
}
}
那就是我的代码,我需要将向前向后向左向右向右向左向右向右的变量全部设置为true,然后迅速(在几秒钟之内)将其设置为false。有人知道这样做的简单方法吗?
我们在这里说话有多快? 如果要在一秒内切换(比一秒快得多),请执行以下操作:
forward = true;
back = true;
left = true;
right = true;
turnLeft = true;
turnRight = true;
forward = false;
back = false;
left = false;
right = false;
turnLeft = false;
turnRight = false;
如果您正在寻找可以操纵的切换开关,那么我将使用您自己的方法:
public void toggle() {
forward = !forward;
back = !back;
// and so on
}
...然后在经过一定的毫秒数后调用它。
但是,本着回答所问问题的精神,如果您确实真的想要使用仅运行一次的循环,由于某种原因……这是它的语法:
for(int i = 0; i < 1; i++) {
// do stuff
}
如果您确实想要循环,请使用以下命令:
do {
your code here
} while (false);
IMO,这有点愚蠢...
为什么要使用循环? 如果您只想稍等片刻,为什么不使用wait命令:
您可以只执行所需的代码块,等待规定的毫秒数,然后执行另一个代码块:
int milliseconds = 1000;
forward = true;
back = true;
left = true;
right = true;
turnLeft = true;
turnRight = true;
Thread.sleep(milliseconds)
forward = false;
back = false;
left = false;
right = false;
turnLeft = false;
turnRight = false;
可能尝试这样的事情:
for(int i = 0; i < 2; i++) { Boolean state = (i == 0); forwards = state; back = state; left = state; right = state; turnLeft = state; turnRight = state; // Optional sleep int milliseconds = 100; Thread.sleep(milliseconds); }
循环将运行一次,将所有设置为true
(i == 0),然后在下一次重复时将所有设置为fasle
,然后退出。
Thread.sleep()
是可选的,具体取决于您是否需要这些值在短时间内保持原样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.