Java 创建和添加对象(使用抽象方法)到;ArrayList“;它来自一种方法
我正在尝试创建一个基本的蛇游戏。我有一个非常基本的2D Java游戏引擎。以下是所有更新和渲染的过程: 我有一个Java 创建和添加对象(使用抽象方法)到;ArrayList“;它来自一种方法,java,object,arraylist,Java,Object,Arraylist,我正在尝试创建一个基本的蛇游戏。我有一个非常基本的2D Java游戏引擎。以下是所有更新和渲染的过程: 我有一个GameObjects的ArrayList,这是我创建的一个类,有两个抽象方法,叫做“update”和“render”(还有一些变量,它们与问题无关,但告诉它可能会减少回答问题时的混乱)。我在game类中创建对象,如下面的示例代码所示,然后将这些对象添加到ArrayList。然后我基本上使用一个增强的for循环来更新和渲染ArrayList中的所有对象 我基本上想在游戏运行时用方法创建
GameObjects
的ArrayList
,这是我创建的一个类,有两个抽象方法,叫做“update”和“render”(还有一些变量,它们与问题无关,但告诉它可能会减少回答问题时的混乱)。我在game类中创建对象,如下面的示例代码所示,然后将这些对象添加到ArrayList
。然后我基本上使用一个增强的for循环来更新和渲染ArrayList
中的所有对象
我基本上想在游戏运行时用方法创建一个对象(每次吃“食物”时都会创建一个身体部位)
当我使用下面的代码在方法中创建主体部分时,我在“渲染”部分中使用的每个变量都会出错
不能在内部类中引用非最终变量体
用不同的方法定义
另外,如果我没有在rendering方法中放入任何内容,基本上将所有内容都保留为空,并尝试使用相同的方法将此“head”添加到GameObjects
的ArrayList
中,我会得到java.util.ConcurrentModificationException
异常
进一步资料:
- 从一开始就存在的物体(头和食物)是
- 在Game类中创建(而不是在任何类型的方法中创建)
- 在
类的构造函数中调用的方法中,添加到Game
的GameObjects
ArrayList
- 当我将body设置为final时,我会得到一个错误,即
局部变量 正文可能尚未初始化
- 我应该在哪里以及如何定义“body”对象李>
- 在何处以及如何将其添加到对象的ArrayList中
When I make body final, I get an error saying The local variable
body may not have been initialized.
当您将一个变量声明为final时,必须立即为其赋值,或者在构造函数中赋值,否则将出现错误
我建议您将游戏对象
与图形
分开,至少在游戏对象
对象初始化后修改图形
对象
对于GameObject
,在子类(Body)中实现render()和update,您可以在每次创建Body
对象时调用它。例如,将您的GameObject类设置为抽象类,将这两个方法保持抽象,创建类主体以从GameObject扩展并实现它们
根据您提供的以下代码
void render(Graphics g) {
g.fillRect(body.pixelPosX, body.pixelPosY, body.pixelSizeX, body.pixelSizeY);
}
我猜你想要这样的东西:
void render(Graphics g) {
g.fillRect(this.pixelPosX, this.pixelPosY, this.pixelSizeX, this.pixelSizeY);
}
您试图分配当前对象的值以传递到
fillRect
您编写了一个匿名类,将新实例分配给body,然后在重写的render方法中使用刚刚创建的body实例,这是不正确的。只有“render”和“update”方法是抽象的。那还会被称为匿名类吗?我也明白这并不重要,因为我使用的部分是抽象的。那么什么是正确的方法呢?
void render(Graphics g) {
g.fillRect(this.pixelPosX, this.pixelPosY, this.pixelSizeX, this.pixelSizeY);
}