【发布时间】:2019-09-19 03:00:31
【问题描述】:
在一个学校项目中工作,我们应该修改游戏以使其具有教育意义。我想通过变量 moduleThree 在数字 0、1 和 2 之间循环。但是,当我将它设置为与我最初定义的值不同的值时,该变量将不会更新,这非常令人沮丧。
我尝试将 if/else 链放入带 return 的不同方法中,但这不起作用。我尝试将它放在多个位置。
public class Alien extends Actor
{
int SPEED = -7; // Speed of 10 in left direction "-"
int tempType = (int)(Math.random() * ((2-0) + 1));
int controlType = 0;
int moduleThree = 0;
public Alien() {
}
public void act() {
move (SPEED);
int timer = 10;
if (timer>0){
timer--;
if(timer == 0) {
timer = 10;
controlType++;
moduleThree = controlType % 3;
if(moduleThree == 0){
((SpaceLand)(getWorld())).pos.swap("bee");
}
else if(moduleThree == 1){
((SpaceLand)(getWorld())).pos.swap("alien");
}
else if(moduleThree == 2){
((SpaceLand)(getWorld())).pos.swap("soldier");
}
}
}
moduleThree 在计算 controlType % 3 时应该循环 0、1 和 2,但不会发生更新。即使我手动将其设置为 4,也没有任何反应。非常烦人。
【问题讨论】:
-
这段代码看起来似是而非;
timer是9不是0,所以if(timer == 0) {将是false。另外,((SpaceLand)(getWorld()))吓到我了。 -
@ElliottFrisch 计时器 9 怎么样?计时器不应该循环吗,因为当计时器高于0时它会不断循环?
-
timer--不是循环。是timer = timer - 1;因为timer是 10,之后是9。 -
@JackTapia 您可以通过将
if (timer>0)更改为while(timer > 0)来使其循环,但请注意,当timer达到0 时,您会将其重置为10,这将导致无限循环。
标签: java variables if-statement greenfoot