gpt4 book ai didi

java - 我无法正确创建 "Enemy"Java 的多个实例

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:38 25 4
gpt4 key购买 nike

当我尝试创建多个“敌人”时,它们会相互堆叠并且行为不正确。整数敌人X和敌人Y代表它的坐标。我知道它们可能不应该是静态的,但另一个类使用 Enemy.enemyX/Y 引用它们。如何创建多个“敌人”并仍然使用 Enemy.enemyX/Y 为类(class)提供每个敌人的坐标。谢谢。

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;

public class Enemy extends GameObject {

public static int enemyX = 50;
public static int enemyY = 360;
public int enemyMoveX = (int) (Math.random() * 10) + 5,
enemyMoveY = (int) (Math.random() * 10) + 5;
public int angle;

public void tick() {
angle++;
if (angle == 360) {
angle = 0;
}
enemyX += enemyMoveX;
enemyY += enemyMoveY;
if (enemyX > 1250 || enemyX < 50) {
enemyMoveX = -enemyMoveX;
}
if (enemyY > 670 || enemyY < 50) {
enemyMoveY = -enemyMoveY;
}
enemyX = Main.clamp(enemyX, 0, Main.WIDTH - 32);
enemyY = Main.clamp(enemyY, 0, Main.HEIGHT - 53);
}

static int sizeX = 30, sizeY = 30;
Color randomColor = new Color(255, (int) (Math.random() * 125),
(int) (Math.random() * 125), 255);

public void render(Graphics g) {
g.setColor(randomColor);
Graphics2D g2d = (Graphics2D) g.create();
g2d.translate(enemyX + (sizeX / 2), enemyY + (sizeY / 2));
g2d.rotate(Math.toRadians(angle), 0, 0);
g2d.fill(new Rectangle2D.Double(sizeX / -2, sizeY / -2, sizeX, sizeY));
}
}

最佳答案

您好,不应该使用static的原因之一

public static int enemyX = 50;
public static int enemyY = 360;

这意味着 Enemy 的每个实例始终都具有精确的某个 x/y 值。

此外,如果您要使用 Graphics2D g2d = (Graphics2D) g.create();,则应确保在不再需要时调用 g2d.dispose();

关于java - 我无法正确创建 "Enemy"Java 的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30992675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com