我正在开发一个创建太空入侵者风格游戏的项目:
这就是我目前所拥有的:
public void recordScore(int point){
if(/*an alien ship is hit*/){
point = 1;
}
else{
point = -1;
}
我将这样称呼方法:
//if there is a hit
recordScore(1)
//if there is no hit
recordScore(-1)
...我觉得这是一个提示,但我觉得使用循环是不正确的,因为我觉得无法调用该方法,但我目前无法想到任何其他方式来初始化变量两个值(或填充if子句)。
答案 0 :(得分:3)
这是倒退的想法:
public void recordScore(int point){
if(/*an alien ship is hit*/){
point = 1;
}
else{
point = -1;
}
您正在尝试为方法参数赋值,这与您应该执行的操作完全相反。请记住,该点将进入此方法,并指定一个值并将其传递给它。
而是使用参数保存的值来分配类字段的值,或者在您的情况下使用增加或减少字段值的值。
类似于:
public void recordScore(int point) {
score += point; // similar to score = score + point;
}
更接近您的需求。我不知道你是否有分数字段,你可能会将其命名为其他字段。
请注意,您声明:
我觉得使用循环不正确
如果您要引用if / else结构,请理解这不是循环,而是程序控制流语句或逻辑块。 循环会使代码重复,示例包括for循环和while循环。
如果您只想将分数递增或递减1,则另一个选项是使用使用布尔参数的方法。例如
public void attemptHit(boolean hitSuccessful) {
if (hitSuccessful) {
score++;
else {
score--;
}
}
你可以这样称呼它:
attemptHit(true); // for a successful hit
attemptHit(false); // for a miss
这样可以防止创建无意义但有效的代码,例如
recordScore(-23020);