0

我试过在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 有谁知道这样做的简单方法?

4

4 回答 4

3

我们说话的速度有多快,在这里?如果您想在一秒钟内切换它(比一秒钟快得多),只需执行以下操作:

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
}
于 2012-12-21T03:46:22.180 回答
1

如果你真的想要一个循环,使用这个:

do {
    your code here
} while (false);

IMO,这有点傻......

于 2012-12-21T03:55:14.653 回答
0

可能尝试这样的事情:

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()是可选的,具体取决于您是否需要这些值在短时间内保持不变。

于 2012-12-21T09:16:02.927 回答
0

为什么要使用循环?如果您只想让某事稍等片刻,为什么不使用等待命令:

Thread.sleep(int 毫秒)

您可以只执行您想要的代码块,等待规定的毫秒数,然后执行另一个代码块:

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;
于 2012-12-21T03:48:31.450 回答