我有一个OOP项目,我必须在网格中编写小动物的动作。
这就是我现在所拥有的。
public class Frog implements Critter {
//below is what letter represents the Frog in the grid. Works fine.
public char getChar() {
return 'F';
}
public int getMove(CritterInfo info) {
//need to count the moves to determine how far to move
int countF;
countF++;
int moveF2 = 0;
if (countF % 3 == 1) {
int moveF = (int)(Math.random() * 100);
moveF2 = moveF;
countF = 0;
}
else {
if (moveF2 < 25) {
return NORTH;
}
else if (moveF2 < 50) {
return SOUTH;
}
else if (moveF2 < 75) {
return EAST;
}
else {
return WEST;
}
}
}
青蛙应该选择一个随机方向,向那个方向移动3,重复。
我不知道如何制作一个计数器以计算移动量。我想过:
public int getMove(CritterInfo info) {
int countF = 0;
countF++;
int moveF2 = 0;
if (countF % 3 == 1) {
int moveF = (int)(Math.random() * 100);
moveF2 = moveF;
countF = 0;
}
else {
...(cut)
}
}
但是上面显然不起作用,因为它每次运行时都会将countF重置为0。
答案 0 :(得分:1)
如果你将countF移到函数外部(作为成员字段而不是局部变量),它不会成功吗? 你似乎试图强迫countF为0,为什么?
public class Frog implements Critter {
private int countF;
public Frog(){
countF = 0;
}
//below is what letter represents the Frog in the grid. Works fine.
public char getChar() {
return 'F';
}
public int getMove(CritterInfo info) {
countF++;
int moveF2 = 0;
if (countF % 3 == 1) {
int moveF = (int)(Math.random() * 100);
moveF2 = moveF;
countF = 0;
} else {
....(cut)
}
}
}
答案 1 :(得分:1)
您的 countF 变量是一个局部变量,因此每次调用该方法时,它都将初始化为0.您需要将其设为字段变量。如果它是一个字段变量,那么它将属于该对象而不属于该方法。这意味着它只会在创建对象时初始化为0.
int countF = 0;
public int getMove(CritterInfo info) {
countF++;
int moveF2 = 0;
if (countF % 3 == 1) {
int moveF = (int)(Math.random() * 100);
moveF2 = moveF;
countF = 0;
} else {
}
}