来源:《Head First Java》
package games;
public class SimpleDotCom {//仅限于一维空间;
int[] locationCells;//目标的坐标位置;
int numOfHits = 0;//目标被击中多少次, 击中一次去掉对应击中的位置, 全部击中则胜利;
public void setLocationCells(int[] location) {
locationCells = location;//设置目标的坐标集合;
}
public String checkYourself(String guess) {//检测当前是否被击中;
int g = Integer.parseInt(guess);//将字符串转换为数字;
String result = "miss";//最终结果, 初始化为"miss";
for (int cell : locationCells) {//加强版for循环;
if (cell == g) {
result = "hit";//击中;
++numOfHits;//当前击中的次数;
break;//这一轮已经找到被击中的位置;
}
}
if (numOfHits == locationCells.length) {//所有位置均被击中;
result = "kill";//击沉;
}
System.out.println(result);
return result;
}
}
package games;
public class SimpleDotComTestDrive {
public static void main(String[] args) {
SimpleDotCom dot = new SimpleDotCom();
int[] local = {2, 3, 4};//假设目标的位置集合;
dot.setLocationCells(local);
String userGuess = "2";//假设用户命令攻击的位置;
dot.checkYourself(userGuess);//检查是否击中;
}
}
这个测试代码的目的是模拟一个简单的游戏。
游戏假设有一个线性一维空间(数轴),其中有一个目标(它占用了几个位置空间),用户指定攻击位置攻击该目标。如果击中则去掉那个位置(不属于目标),当所有原本属于目标的位置被击中去掉则击沉目标取得胜利。
考虑情况:
类成员变量:代表目标的位置集合,该目标被击中的次数。
类成员方法:设置目标位置的集合的方法,检查是否击中的方法。
推荐看一看《Head First Java》,上面有从伪码到测试码再到真实码的详细介绍。当然,这个代码本身仅供参考。