Java游戏:多实例

Java游戏:多实例,java,arrays,object,Java,Arrays,Object,我正在尝试用Java制作一个游戏,我已经有了一些东西。但我想让玩家开枪。 我想到了制作一个对象数组的想法,并将所有的Bullet实例放入数组中。然后在一个线程中,我想让它们全部移动(数组中的所有对象) 这是我在主课堂上讲的: Bullet[] BulletArray; public int Bullets = 0; public void run() { for(int i = 0; i < Bullets; i++){ BulletArray[i].Step

我正在尝试用Java制作一个游戏,我已经有了一些东西。但我想让玩家开枪。 我想到了制作一个对象数组的想法,并将所有的Bullet实例放入数组中。然后在一个线程中,我想让它们全部移动(数组中的所有对象)

这是我在主课堂上讲的:

Bullet[] BulletArray;

public int Bullets = 0;

public void run() {

    for(int i = 0; i < Bullets; i++){
        BulletArray[i].Step();
    }

    if(Key.FireKey){
        BulletArray[Bullets + 1] = new Bullet();
        Bullets += 1;
    }
}

我希望你能理解我的意思。

首先,你的
BulletArray
从未初始化过

当您输入
run()
时,您的
for()
循环似乎工作正常,因为它实际上没有进入块。您的
int i=0
已声明,并且已大于或等于您的限制,即
int Bullet=0
。这意味着循环体永远不会执行

然后,当您按下
键.FireKey
时,它会尝试引用不存在的数组索引。它不可能存在,因为数组从未初始化过

要初始化阵列,您需要执行以下操作:

private int maxBullets = 10;
Bullet[] bulletArray = new Bullet[maxBullets];
然后您的
for()
循环将实际进入。请注意,在
Key.FireKey
块中,您必须执行一些检查,以确保通过尝试发射比您创建的子弹更多的子弹,不会获得
IndexOutOfBoundsException
。i、 e

if(Key.FireKey) {
    if(bullets < maxBullets) {
        bulletArray[++bullets] = new Bullet();
    }
}
if(Key.FireKey){
如果(项目符号<最大项目符号){
bulletArray[++项目符号]=新项目符号();
}
}

对不起。。。问题是什么?问题是什么?或者您想通知我们您正在制作游戏??仅供参考,您应该声明以小写字母或下划线开头的变量(添加方法)。您应该应用Java命名约定:变量以小写字母开头:BulletArray=>BulletArray,BulletArray=>Bullet等等。有什么问题吗?您是否收到空指针异常?如果是这样,您可能可以通过更改行
bulletary[Bullets+1]=newbullet()来修复它
项目符号数组[项目符号]=新项目符号()是否注意数组大小,即是否在必要时增加大小?如果数组可以调整大小,我建议使用
列表
。谢谢,我对java非常陌生,当然也不知道它是如何处理数组的。我知道这个问题有点愚蠢,但谢谢!这不是一个愚蠢的问题每个人都必须从某个地方开始。
if(Key.FireKey) {
    if(bullets < maxBullets) {
        bulletArray[++bullets] = new Bullet();
    }
}