【发布时间】:2011-11-15 10:47:11
【问题描述】:
此作业的目的是创建一个 Field 和 Robot 类以及这些类的对象。
单场对象仅限于从 (0, 0) 到 (50, 50) 的正方形点,并且包含 3 块金子和 3 颗炸弹。
三个机器人对象(一个接一个)从左到右 (0, 0) 到 (0, 50) 搜索黄金,然后通过 (1, 0) 到 1, 50) 的字段下降,依此类推。
机器人被用户输入放置的炸弹摧毁。一旦收集到黄金,它就不能被另一个机器人捡起,而且一个炸弹爆炸了它就不会再这样做了。
到目前为止,这是我解决问题的尝试,我将继续努力,但希望能有第二双眼睛看到我遗漏的东西。程序可以编译,但是炸弹和金币没有被正确“找到”,输出表明后面的机器人和前面的机器人死在同一个炸弹上。此外,cmets 删除了几段代码,我这样做是为了测试程序的不同部分。我认为这部分是我遇到麻烦的地方。方法 field.alreadyFound() 和 field.alreadyBombed() 返回值为 true 的布尔值。我的 if 语句应该是说如果黄金/炸弹已经找到,请忽略它。
while(x <= 50 && y <= 50 && alive2 == true) {
foundGold1 = robot2.look(field.locateGold1());
foundGold2 = robot2.look(field.locateGold2());
foundGold3 = robot2.look(field.locateGold3());
foundBomb1 = robot2.look(field.locateBomb1());
foundBomb2 = robot2.look(field.locateBomb2());
foundBomb3 = robot2.look(field.locateBomb3());
/*gotBomb1 = field.alreadyBombed1();
gotBomb2 = field.alreadyBombed2();
gotBomb3 = field.alreadyBombed3();
gotGold1 = field.alreadyFound1();
gotGold2 = field.alreadyFound2();
gotGold3 = field.alreadyFound3();*/
if (foundGold1 == true){
if (field.alreadyFound1() == true){}
else {robot2.addGold();
field.foundGold1();}
}
if (foundGold2 == true) {
if (field.alreadyFound2() == true){}
else {robot2.addGold();
field.foundGold2();}
}
if (foundGold3 == true) {
if (field.alreadyFound3() == true){}
else {robot2.addGold();
field.foundGold3();}
}
if (foundBomb1 == true) {
if (field.alreadyBombed1() == true){}
else alive2 = false;
}
if (foundBomb2 == true) {
if (field.alreadyBombed2() == true){}
else alive2 = false;
}
if (foundBomb3 == true) {
if (field.alreadyBombed3() == true){}
else alive2 = false;
}
y = y + 1;
robot2.setLocation(x, y);
//System.out.println(y);
if (y == 50)
{x = x + 1;
y = 0;}
}
【问题讨论】:
-
代码审查只针对工作代码。如果您希望在代码运行后将其带回代码审查以进一步改进,请随时将其带回。
标签: java