我正在创建一个游戏,玩家( Player对象)必须对抗许多僵尸(僵尸对象)。战斗是模拟的,但是用户可以在战斗期间设置防御。
我想要一个有效的方法来处理所有的僵尸。每个僵尸对象都有属性,如生命值和攻击属性,它们分别对玩家对象的攻击和健康产生影响。当玩家用武器攻击特定的僵尸时,我希望能够执行specificZombie.health -= 20;。
我的问题是,我不知道如何处理几十个甚至数百个僵尸对象,每个对象都具有各自的属性和单独的方法,例如: that ()或move()。我也不知道如何有效地初始化所有僵尸,同时仍然能够调用特定的僵尸。我知道我可以使用一个循环,但是我如何命名所有的僵尸,以便它们可以单独被调用?
发布于 2013-05-23 16:02:45
将它们放入一个列表或数组中,然后遍历列表/数组。每个僵尸都可以通过列表或数组的索引来识别。
阵列:
Zombie[] zombieArray = new Zombie[10];
for(int x=0; x<10; x++){
Zombie z = new Zombie(--whatever your parameters are);
zombieArray[x] = z;
}列表:
List<Zombie> zombieList = new ArrayList<>();
for(int x=0; x<10; x++){
Zombie z = new Zombie(--whatever your paremeters are);
zombieList.add(z);
}发布于 2013-05-23 16:08:43
我的问题是,我不知道如何处理几十个甚至数百个僵尸对象,每个对象都具有各自的属性和单独的方法,例如: that ()或move()。我也不知道如何有效地初始化所有僵尸,同时仍然能够调用特定的僵尸。
=>您需要声明一个interface,但至少需要声明一个abstract class僵尸。与实现时相比,您将有一个RapidAttackZombie,一个SlowRunningZombie,用于支出父类。强烈建议阅读这页面。
因为它们有一个公共类,无法放入任何存储集合:数组、ArrayList、Hashtable,无论您需要什么。
在执行时,您将实现/覆盖攻击()和move(),这些应该在抽象类中声明为抽象,或者可以具有默认的实现。
僵尸的初始化取决于您的级别编辑器引擎的输出结果,也就是您必须解紧: atposition我想要一个ZombieType1,在y位置,z需要ZombieType2等等。
这不是10分钟内如何包揽一场完整的比赛,我希望这会有所帮助!
发布于 2013-05-23 16:09:58
最好有这样的数据结构
Map<String,List<zombieClass>>在字符串部分,您可以存储僵尸名称或可能键入。在地图内部,使用一个列表(ArrayList)来容纳各种僵尸。在数组中,您将具有调整大小的约束,而在ArrayList中,它是动态的,可以在运行时进行修改。在列表中,您实际上可以拥有您的ZombieClass。
public class ZombieClass{
private float health;
private float damageCapability;
//getters ans setters
}https://stackoverflow.com/questions/16718679
复制相似问题