我很不确定如何解决这个问题,但我会尽我所能。
我有一些用于列出图像的相关类,另一个用于机器人,它告诉他们要做什么,另一个用于绘制到屏幕上。我遇到的问题是让机器人复制自己,然后在按下空间时使用与原始代码相同的代码。
Java对我来说还是一个新手。
我用它来说明图像:
Bot = new ImageIcon(getClass().getResource("/res/botDown.gif")).getImage();
操纵机器人执行操作的代码只是一堆if语句改变botx
和boty
。我猜测通过使用数组来分配更多的机器人,当按下空格是要走的路。否则,我会这样做是代码更多的机器人自己复制和粘贴所有的IF,然后设置空间将值增加1并相应地分配每个机器人(坏方法)。希望有助于解释。
感谢任何建议,谢谢!
添加了bot类代码示例:
if (Botx < Botx2 + 50 && Botx > Botx2 && Boty > Boty2 - 50
&& Boty < Boty2 + 50) {
Botx = Botx + 2;
}
if (Botx > Botx2 - 50 && Botx < Botx2 && Boty < Boty2 + 50
&& Boty > Boty2 - 50) {
Botx = Botx - 2;
}
if (Boty > Boty2 && Boty < Boty2 + 50 && Botx < Botx2 + 50
&& Botx > Botx2 - 50) {
Boty = Boty + 2;
}
if (Boty < Boty2 && Boty > Boty2 - 50 && Botx < Botx2 + 50
&& Botx > Botx2 - 50) {
Boty = Boty - 2;
}
//Anti Collision push BOT2
if (Botx2 < Botx + 50 && Botx2 > Botx && Boty2 > Boty - 50
&& Boty2 < Boty + 50) {
Botx2 = Botx2 + 2;
}
if (Botx2 > Botx - 50 && Botx2 < Botx && Boty2 < Boty + 50
&& Boty2 > Boty - 50) {
Botx2 = Botx2 - 2;
}
if (Boty2 > Boty && Boty2 < Boty + 50 && Botx2 < Botx + 50
&& Botx2 > Botx - 50) {
Boty2 = Boty2 + 2;
}
if (Boty2 < Boty && Boty2 > Boty - 50 && Botx2 < Botx + 50
&& Botx2 > Botx - 50) {
Boty2 = Boty2 - 2;
}
答案 0 :(得分:0)
处理任意数量的机器人:
for(Bot bot : botArray) {
for(Bot bot2 : botArray) {
if(!bot.equals(bot2) {
// Push bot around (not bot2 since it will be handled in another iteration)
}
}
}
但是根据条件,机器人可能会在尝试避开第三个机器人时与第二个机器人发生碰撞。
顺便说一句,我认为使用Math.abs(x - x2)