管理游戏中的数据

时间:2011-04-10 18:38:27

标签: java

我正在研究一个口袋妖怪克隆,我想要包括口袋妖怪和攻击。我最初的想法是采用OO方式并制作一些抽象类,让pokemon扩展这些类(一个通用的口袋妖怪,每个类型一个)。我的困境是我认为拥有151个课程并不是一个好主意,管理起来似乎太多了。我需要每个口袋妖怪(如果你不熟悉口袋妖怪的话,把它们想象成敌人)来拥有它自己的图像,统计数据,名字和其他混合物。细节。有没有办法以更简洁的方式代表所有这些口袋妖怪的151,同时仍然坚持OOP?我也有同样的问题代表攻击,(有大约100个),每个都有图像/动画,不同的效果,不同的名称等。

3 个答案:

答案 0 :(得分:2)

听起来这更像是资源管理问题,而不是OO问题。我将创建一个通用的口袋妖怪对象,然后使用外部资源(因为Java,可能是XML或JSON)来填充成员。您甚至可以使用某种形式的对象绑定(JAXB,GSON等)来自动化该过程。一切都取决于你想要的复杂/自动化程度。我倾向于手动尝试,学习完成任务的自动方式,并改进原始任务。

超级简单的例子:

class Pokemon
{
    private String name; // assume getters/setters
    private List<Attack> attackList;
}

XML文件:

<pokemon>
   <name>Charizard</name>
   <attacks>
      <attack dmg="50">Some name for an attack</attack>
      ...
   </attacks>
</pokemon>

伪代码:

Load XML file
For each pokemon entry in xml
    Create a new Pokemon object, set the fields
    Add to list of pokemon
Continue with Game stuff

答案 1 :(得分:0)

为什么不用一个包含图像和统计数据等字段的通用口袋妖怪类,然后让每个口袋妖怪成为该类的对象? OOP的重点是类的每个对象都能够访问相同的方法但具有单独的数据。你想要为口袋妖怪的不同类型扩展口袋妖怪类,但不仅仅是不同的。所以你可能有单独的飞行口袋妖怪(如果存在)和非飞行的类。同样,你可以创建一个攻击类,并为每个攻击创建该类的对象。

答案 2 :(得分:0)

所有神奇宝贝有什么共同之处? 它们都有一个名字,最多四个攻击,一个代表它们的图像,一些关于它们的线条用于Pokédex等等。

我只是写一个名为pokemon的结构,它包含所有这些东西,然后是一些可以处理所有东西的函数。