2012-08-30 44 views
5

这不是一个技术问题,因为它是一个风格问题。我正在对Android的peg solitaire进行概括,并且会有不同的级别可以玩。他们每个人都有不同的棋盘开始配置,你可以做不同的棋步等等。现在我已经用单一基本级别编程了,所有这些变量都是初始化的。如何在Android游戏中存储关卡?

我是否添加了具有所有不同种类层次的文本文件,并对其进行编程以从文本文件中读取?我是否在每个级别添加了一个包含所有这些信息的Level类,并在初始化时创建了多个Level对象?我是否创建一个Level类,但是通过读取文本文件中的级别来初始化它?

我确定所有的方法都能正常工作,但是有没有一种标准的方法来做到这一点?我从来没有编写过这样的程序。

+1

我会通过XML来完成,然后将其加载到一个“Level”类中。但也许这只是我。 – Eric

+0

Android上的XML解析非常缓慢。 –

+0

避免XML,我不知道Android,但应该有另一种方法来序列化您的Level级别,获取更多的原始数据。 你没有谈论它,但你需要一个关卡编辑器,即使是一个简单的。一旦拥有它,存储数据和检索并不困难。 – bokan

回答

4

真的没有一个标准的方式来做你想做的事情,这取决于你需要存储的数据的复杂性来做每个级别的初始化。这些数据会发生变化还是静态的?将它正确组织并与代码逻辑分离是否有意义?这些是你需要回答自己的问题,因为这是你的游戏,我们不知道所有的细节。

鉴于此,您决定是否应将该数据存储在XML文件,TXT文件或其他文件中。真的没有一个正确的答案。但你应该(IMO)总是有某种类型的Level类,这是在OOP上下文中的正确方法。构造函数可以具有必要的参数来从XML/TXT /任何数据构建关卡。它也可以具有所有的关卡参数,所以如果你需要出于某种原因,你可以通过代码初始化所有的参数。当然,不要忘记所有这些级别属性的getter/setter方法。

我认为你的一件事不应该做是“在初始化时创建几个Level对象”。你应该将你的游戏逻辑和数据分开,你不应该这样混淆。

可能不是您寻找的答案,但它主要取决于您。

+0

数据是静态的。如果我在初始化时没有制作对象,我什么时候制作它们?你的意思是说,我不应该在初始化时明确写入所有级别参数吗?为什么我需要setter方法?我不会只使用构造函数吗? – DanielLC

+0

我的意思是,你认为我的意思;)你可以,对于虽然调试的目的,这很好。但是对于你的最终代码,你应该将你的游戏逻辑与数据分开。这只是一个好习惯。如果你不需要setter方法,不要使用它们,我是通用的。但是,如果您为了调试目的而需要更换其他设备,他们可能会派上用场。这完全取决于你,没有太大的区别。 –

2

在那么一个数据库取决于哪个级别的用户选择我和朋友正在做它存储水平的方式属性,我们读取数据库和加载到该用户的游戏创建水平我们的水平班!

编辑

我们是初学者一样好,但它已经很容易使新的水平第一个提出后。 =]特别是因为我们所要做的就是在数据库中添加一行并填写值。