1

ゾンビが追いかけてくるトップダウン シューティング ゲームを作成しています。ゾンビが中央のプレーヤーを追いかけ、ゾンビがプレーヤーと交差するとプレーヤーが負けるように、すべてのロジックを追加しました。現在、ゲーム内にはゾンビが 1 体だけいます。しかし、コードを増やすことなくゾンビを追加できるようにしたいと考えています。たとえば、ランダムな位置に新しいものを追加するために使用できる部分が必要です。

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

1 に答える 1