使用阵列的产卵机器人也许

时间:2013-04-15 14:31:53

标签: java

我很不确定如何解决这个问题,但我会尽我所能。

我有一些用于列出图像的相关类,另一个用于机器人,它告诉他们要做什么,另一个用于绘制到屏幕上。我遇到的问题是让机器人复制自己,然后在按下空间时使用与原始代码相同的代码。

Java对我来说还是一个新手。

我用它来说明图像:

Bot = new ImageIcon(getClass().getResource("/res/botDown.gif")).getImage();

操纵机器人执行操作的代码只是一堆if语句改变botxboty。我猜测通过使用数组来分配更多的机器人,当按下空格是要走的路。否则,我会这样做是代码更多的机器人自己复制和粘贴所有的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;
}

1 个答案:

答案 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)

可以改善您的代码