java - 存储口袋妖怪类型游戏信息的最佳方式是什么?

标签 java arrays

所以我开始为学校项目制作游戏。它是没有图形的口袋妖怪的简单版本,只有文字。目前我的问题是我不知道如何存储所有口袋妖怪(每个单独的统计数据)、 Action (及其统计数据)等的数据库。

每个口袋妖怪(151 个不同)都有关于每个 Action 的统计数据和特定信息,每个 Action (大约 100 个)也有特定的统计数据和信息。所以我不能真正制作一个 Pokemon 类和从它扩展的 151 个类。我能做的是制作一个 Pokemon 和 Moves 类的数组,并让 Pokemon 类(或移动类)的构造函数具有统计信息。

我遇到的问题是弄清楚如何给玩家(或我正在战斗的敌人)一个口袋妖怪(让我们与皮卡丘一起滚动)并编辑那个一个 口袋妖怪。我不想改变游戏中每个皮卡丘的等级,只是为玩家改变一个特定的皮卡丘,为敌人改变一个特定的神奇宝贝。这有意义吗?

我是 Java 的新手,我不确定我会做什么。我见过一些人尝试做同样的事情,人们建议使用 XML 或其他什么?我试图将其全部保留在 Java 中。

最佳答案

一个非常简单的解决方案是(伪代码)

class Pokemon:
   String name
   String/int... other_stats
   Array<Move> moves // This is a simple strategy to store any moves 
                     // you want to associate with this pokemon.

class Move:
   String name
   int power
   [...other move stats...]

要将 Pokemon 送给玩家,您只需实例化一个具有名称(例如“Pikachu”)的新 Pokemon,然后实例化一些“Move”对象以与您刚刚创建的 Pokemon 相关联。所以,例如:

ArrayList<Move> moves = new ArrayList<Move>();
moves.add( new Move("Thunderbolt", 16) );
moves.add( new Move("Foobar", 10) );
Pokemon pikachu = new Pokemon( "Pikachu", moves )
// and now you can give pikachu to any player you want.

您可以为这个特定的皮卡丘改变任何东西,或者您可以制作另一个皮卡丘或一只妙蛙种子送给其他玩家。

要保存游戏状态,您可以使用 toString 方法以 JSON/XML 格式输出该对象的属性,然后您可以将它们保存在文本文件中。

这是一个相当简单的设计。当然,您可以像其他人建议的那样使用复杂的设计模式来增强功能。

关于java - 存储口袋妖怪类型游戏信息的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624733/

相关文章:

java - 幸运数字程序未显示正确答案

java - 在 Java 中,对象数组是如何被垃圾回收的?

c# - c# 索引中的二维数组使用 lambda 表达式搜索数组

javascript - 如何保存所有页面的输入值并允许用户在页面重新加载时查看更改?

java - 拦截渲染的 HTML

java - 使用 Java 的浏览器小程序中的 Web 浏览器

java - purge 不会卸载 java 6?

c - 按升序排列给定的数字

c# - 将数组打印为表 c#

c# - SQLite 加密因平台而异