如何在java japplet中重新启动?

mcvgt66p  于 2022-09-17  发布在  Java
关注(0)|答案(3)|浏览(123)

如何重新启动游戏?我的代码的问题是,当它重新启动时,它会使敌人加倍。所以有10个敌人,假设玩家比用户重启时死亡,现在有20个敌人,以此类推。。。。。
在开始方法中,我创建了10个敌人并存储在arraylist中

public void start() 
{ 
for(int i = 0; i < 10; i++){   
    enemyObject = new Enemy(10*i,10); 
    enemyStore.add(enemyObject);    //store in array 
} 
}

在这里,我让敌人移动,碰撞等,如果敌人死了,我会将其从阵列列表中移除

public void actionPerformed(ActionEvent e) 
{ 
    for(int i = 0; i < enemyStore.size(); i++){        
        enemyObject = (Enemy)enemyStore.get(i); 
            if(!enemyObject.getDead()){               //if enemy is not died 
                //make enemy move, collision etc... here 
                                .... 
            } 
            else{           //remove enemy and create another one 
                enemyStore.remove(i); 
                enemyObject = new Enemy(10*i, 10); //create enemy 
                enemyStore.add(enemyObject);                                               //store in array 
            } 
        } 
}

在油漆方法中,油漆敌人

public class Display extends JPanel 
{ 
    public void paintComponent(Graphics g){     
    super.paintComponent(g);   
    for(int i = 0; i < enemyStore.size(); i++){      //PAINT ENEMY 
        enemyObject = (Enemy)enemyStore.get(i); 
        enemyObject.paint(g); 
    } 
    } 
}

在那里,如果玩家死亡,则移除arraylist中的所有敌人并重新启动

public void mouseClicked(MouseEvent e) 
{ 
if(playerObject.getDead()){ 
    if(e.getX() > bx && e.getX() < bx + bw)    { 
        if(e.getY() > by && e.getY() < by + bh){ 
            for(int i = 0; i < enemyStore2.size(); i++){ 
                enemyStore2.remove(i);     
            }         
            start(); 
         } 
     } 
  } 
}
ccrfmcuu

ccrfmcuu1#

在添加之前移除所有敌人。

0tdrvxhp

0tdrvxhp2#

进一步说明Rabbit所说的:每次调用start()方法时,都会创建新的敌人,并将其添加到enemyStore集合中。现在,我不知道“enemyStore”使用的是哪种类型的集合(它不是简单的数组,这是肯定的-简单数组没有“add(…)”函数),但每个标准集合都实现了Collection接口,因此应该具有函数clear()remove(Object o)removeAll(Collection<?> c)。如果您在添加新敌人之前使用其中一个来移除当前敌人,问题应该得到解决。

zzwlnbp8

zzwlnbp83#

这是因为在小程序停止后,无法再次初始化()。没有什么可以调用该方法。
为什么不创建一个reset()方法,为变量等提供默认值,并使其看起来像小程序已重新启动?

相关问题