gpt4 book ai didi

java - 如何将图形组件存储在逻辑结构中?

转载 作者:行者123 更新时间:2023-11-30 07:41:15 25 4
gpt4 key购买 nike

我编写了一个刽子手游戏,我也想添加一些 Java2D 图形。我相信大多数人都知道这一点,但为了以防万一,让我明确说明一下。在刽子手中,每次犯错后都会绘制一个“悬挂”的简笔画,直到完成。

因此,当我绘制此图时,逻辑方法是运行 for 循环并绘制与错误一样多的组件。由于我知道需要按什么顺序绘制组件,因此我可以循环遍历数组类型以进行绘制。现在,如果我只是使用 java.awt.Rectangle,那么创建一个 Rectangle 数组就很容易了。但是,由于对于 Hangman,我还使用一个 Ellipse2D,因此我需要一种方法以数组类型格式将两个图形组件存储在一起。我可以用什么来做到这一点? (我听说过 ArrayList,但我真的不知道如何使用它们,我相信您仍然需要为它们指定一个对象类型)

示例代码也将不胜感激。如果这是不可能的,也请告诉我,因为我可以独立绘制头部。

static int mistakes = 3;
static Ellipse2D head = new Ellipse2D.Double(420, 210, 160, 160);
static Rectangle torso = new Rectangle(3, 3, 3, 3);
static Rectangle leftArm = new Rectangle(3, 3, 3, 3);
static Rectangle rightArm = new Rectangle(3, 3, 3, 3);
static Rectangle leftLeg = new Rectangle(3, 3, 3, 3);
static Rectangle rightLeg = new Rectangle(3, 3, 3, 3);

Rectangle[] hangman = new Rectangle[5];
hangman[0] = torso;
hamgman[1] = leftArm;
//continue...

for(int i = 0; i < mistakes; i++) g2d.draw(hangman[i]); //but then the head is left out :(

最佳答案

您可以使用形状数组:[Shape]说叫shapes ,或 ArrayList<Shape>然后填写 Ellipse2D , Rectangle2D , Line2D和类似的物体。请注意,要绘制 Shape 派生对象,您将需要使用 Graphics2D 对象,因此在 JPanel 的 paintComponent(Graphics g) 中方法中,请确保首先将 Graphics 对象转换为 Graphics2D:

Graphics2D g2 = (Graphics2D) g;

然后你的 for 循环可以遍历你的数组,从 0 循环到 errorCount (但首先要确保 errorCount 永远不会 > 数组的长度。例如,

Graphics2D g2 = (Graphics2D) g;
errorCount = Math.min(errorCount, shapes.length);
for (int i = 0; i < errorCount; i++) {
g2.draw(shapes[i]);
}

关于java - 如何将图形组件存储在逻辑结构中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34669669/

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