0

我很不确定该怎么做,但我会尽力而为。

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

Java对我来说还是很新的。

我用它来说明图像:

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

操纵机器人做事的代码只是一堆不断变化的 ifbotx语句boty。我猜想通过使用数组在按下空间时分配更多机器人是可行的方法。否则,我会这样做的方式是编写更多机器人自己复制并粘贴所有 IF,然后设置空间以将值递增 1 并相应地分配每个机器人(不好的方式)。希望有助于解释。

任何建议表示赞赏谢谢!

添加了机器人类代码的示例:

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;
}
4

1 回答 1

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)

于 2013-04-15T16:02:34.467 回答