问题
我正在为某款纸牌游戏创建一个得分计算器。它在导航和视图控制器方面变得相当复杂。
基本上,我需要的是一种跟踪当前得分的方法,4个玩家在启动时实例化的对象以及跟踪游戏进度的方法(游戏有4种“级别”或“周期”)。
可能的解决方案
所以我想做的是为得分管理器创建一个Singleton类。我还创建了一个 Player 对象,我可能会在AppDelegate类中实例化,并在新VC加载时将它们传递给数组。
继续上一场比赛
我希望应用程序在应用程序终止时存储最后一个游戏,并在启动时恢复它。我将不得不跟踪:球员的名字,每个球员的得分,以及每轮比赛的详细记分表。
我的问题
我的解决方案是在AppDelegate中创建4个玩家的对象,并在每次VC推送时将它们传递给VC,这是一个很好的解决方案吗?如果没有,游戏通常如何实现Player对象?我过去使用C ++和Java创建了游戏,但是太简单了,“游戏管理器”只有一个类,所以我从来没有处理过传递玩家对象的问题。此外,如果玩家点击“返回”并且导航控制器从其堆栈弹出一个项目,玩家对象是否仍会在之前的VC中实例化?如果没有,当按下“后退”按钮时,我还必须通过吗?
我可能会让分数管理跟踪游戏的进度,或者游戏使用Singleton类的位置。这是一个很好的设计决定吗?
要存储姓名,分数和整个分数表,建议使用NSUserDefault
或者使用plist是否更好,特别是因为我需要跟踪分数表? / p>
非常感谢任何实施建议。
答案 0 :(得分:2)
好问题。我喜欢你实现游戏的想法。我不建议您实施的唯一概念是在 AppDelegate 中创建播放器。这样做没有任何害处,但改变AppDelegate也不是一个好习惯。相反,你可能会创建一个单独的类,比如说Player.h和Player.m(如果你使用的是Box2d,则为Player.mm)。做你想做的事情,并在场景中调用类变量和函数
其次,当您希望存储大量数据时,使用 PList 而不是