首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java处理多个对象

用Java处理多个对象
EN

Stack Overflow用户
提问于 2013-05-23 16:00:57
回答 5查看 1.9K关注 0票数 0

我正在创建一个游戏,玩家( Player对象)必须对抗许多僵尸(僵尸对象)。战斗是模拟的,但是用户可以在战斗期间设置防御。

我想要一个有效的方法来处理所有的僵尸。每个僵尸对象都有属性,如生命值和攻击属性,它们分别对玩家对象的攻击和健康产生影响。当玩家用武器攻击特定的僵尸时,我希望能够执行specificZombie.health -= 20;

我的问题是,我不知道如何处理几十个甚至数百个僵尸对象,每个对象都具有各自的属性和单独的方法,例如: that ()或move()。我也不知道如何有效地初始化所有僵尸,同时仍然能够调用特定的僵尸。我知道我可以使用一个循环,但是我如何命名所有的僵尸,以便它们可以单独被调用?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-05-23 16:02:45

将它们放入一个列表或数组中,然后遍历列表/数组。每个僵尸都可以通过列表或数组的索引来识别。

阵列:

代码语言:javascript
复制
Zombie[] zombieArray = new Zombie[10];
for(int x=0; x<10; x++){
    Zombie z = new Zombie(--whatever your parameters are);
    zombieArray[x] = z;
}

列表:

代码语言:javascript
复制
List<Zombie> zombieList = new ArrayList<>();
    for(int x=0; x<10; x++){
        Zombie z = new Zombie(--whatever your paremeters are);
        zombieList.add(z);
    }
票数 0
EN

Stack Overflow用户

发布于 2013-05-23 16:08:43

我的问题是,我不知道如何处理几十个甚至数百个僵尸对象,每个对象都具有各自的属性和单独的方法,例如: that ()或move()。我也不知道如何有效地初始化所有僵尸,同时仍然能够调用特定的僵尸。

=>您需要声明一个interface,但至少需要声明一个abstract class僵尸。与实现时相比,您将有一个RapidAttackZombie,一个SlowRunningZombie,用于支出父类。强烈建议阅读页面。

因为它们有一个公共类,无法放入任何存储集合:数组、ArrayList、Hashtable,无论您需要什么。

在执行时,您将实现/覆盖攻击()和move(),这些应该在抽象类中声明为抽象,或者可以具有默认的实现。

僵尸的初始化取决于您的级别编辑器引擎的输出结果,也就是您必须解紧: atposition我想要一个ZombieType1,在y位置,z需要ZombieType2等等。

这不是10分钟内如何包揽一场完整的比赛,我希望这会有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2013-05-23 16:09:58

最好有这样的数据结构

代码语言:javascript
复制
Map<String,List<zombieClass>>

在字符串部分,您可以存储僵尸名称或可能键入。在地图内部,使用一个列表(ArrayList)来容纳各种僵尸。在数组中,您将具有调整大小的约束,而在ArrayList中,它是动态的,可以在运行时进行修改。在列表中,您实际上可以拥有您的ZombieClass。

代码语言:javascript
复制
public class ZombieClass{
   private float health;
   private float damageCapability;
   //getters ans setters
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16718679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档