簡體   English   中英

Java中的一次循環?

[英]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命令:

Thread.sleep(以毫秒為單位)

您可以只執行所需的代碼塊,等待規定的毫秒數,然后執行另一個代碼塊:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM