将具有相同逻辑的图像添加到不同位置的游戏中?

时间:2013-07-23 14:15:29

标签: java image swing

我正在创造一个自上而下的射手,僵尸在追逐你。我添加了所有的逻辑,所以僵尸跟随中心的玩家,如果僵尸与玩家相交,则玩家输了。 目前只有一个僵尸在游戏中。但是我希望能够在没有更多代码的情况下添加更多的僵尸。 我希望有一个部分,我可以用它来例如在随机位置添加一个新的。

public void addZombie(){}

我正在使用绘画方法。

这是僵尸类。它被添加到面板中。提前谢谢。

package zombieGame;

import javax.swing.ImageIcon;

public class Zombie extends Sprite implements Commons {

String zombie = "/images/zombieUp.png";
int width1 = (int) screenSize.getWidth();
int height1 = (int) screenSize.getHeight();
//Move Left/Right
int dx;
int dy;
//Directions
boolean upLeft;
boolean upRight;
boolean downLeft;
boolean downRight;
boolean left;
boolean right;
boolean up;
boolean down;

public Zombie() {
    if (zombie != null) {
        ImageIcon ii = new ImageIcon(this.getClass().getResource(zombie));
        image = ii.getImage();
        width = image.getWidth(null);
        height = image.getHeight(null);
        resetState();
    }
}

public void move() {
    if (zombie != null) {
        x += dx;
        y += dy;
        animate();
    }
}

public void animate() {
    if (zombie != null) {
        //If inbetween X
        if (x + Board.amountX > width1 / 2 && x + Board.amountX < width1 / 2 + 3) {
            dx = 0;
        }
        //Move right
        if (x + Board.amountX < width1 / 2) {
            dx = 1;
            right = true;
            left = false;
        } else {

            right = false;
        }
        //move left
        if (x + Board.amountX > width1 / 2 + 3) {
            dx = -1;
            left = true;
            right = false;
        } else {

            left = false;
        }
        //If inbetween Y
        if (y + Board.amountY > height1 / 2 - 2 && y + Board.amountY < height1 / 2 + 3) {
            dy = 0;
        }
        //move down
        if (y + Board.amountY < height1 / 2 - 2) {
            dy = 1;
            down = true;
            up = false;
        } else {
            down = false;
        }
        //Move up
        if (y + Board.amountY > height1 / 2 + 3) {
            dy = -1;
            up = true;
            down = false;
        } else {
            up = false;
        }
        if (left) {
            zombie = "/images/zombieLeft.png";
        }
        if (right) {
            zombie = "/images/zombieRight.png";
        }
        if (up) {
            zombie = "/images/zombieUp.png";
        }
        if (down) {
            zombie = "/images/zombieDown.png";
        }
        if (up && left) {
            zombie = "/images/zombieUpLeft.png";
        }
        if (up && right) {
            zombie = "/images/zombieUpRight.png";
        }
        if (down && left) {
            zombie = "/images/zombieDownLeft.png";
        }
        if (down && right) {
            zombie = "/images/zombieDownRight.png";
        }
        ImageIcon ii = new ImageIcon(this.getClass().getResource(zombie));
        image = ii.getImage();
        width = image.getWidth(null);
        height = image.getHeight(null);
    }
}

public void resetState() {
    x = 200;
    y = 385;
}

1 个答案:

答案 0 :(得分:1)

假设您希望在给定时间内拥有最多10个僵尸。因此,在开始时创建一个由10个僵尸组成的池(一组10个僵尸)。从你的阵列/池中随机生成一个僵尸。当你想要产生另一个时,从你的游泳池中获取另一个僵尸,这个僵尸不活跃或在屏幕上产生它。更新活着的僵尸(你应该在你的僵尸类中有一个布尔标志,也许你知道僵尸是否在屏幕上,所以你不更新/渲染一个看不见的僵尸)。