如果他们选择单人游戏,那么他们可以选择玩3种不同的模式.
>练习
没有计时器
>压力
玩家必须在10秒内反复进行拼图,直到它在10秒钟内无法完成拼图并且他们“死”
>时间之战
玩家有2分钟可以做尽可能多的谜题.
你知道,实际的游戏玩法并没有改变,但唯一改变的是如何管理时间.
我读了你的文章,我发现State模式非常适合,现在我唯一的问题就是如何实现这种模式.
我应该在菜单状态抽象和游戏抽象中创建子状态,还是应该创建一个通用游戏状态抽象,然后忽略“handleMenuSelection”之类的调用?
我在cocos2d上找不到任何在线报道的好教程.我可以找到很多小型演示,但是除了OOP设计之外,我从未触及过设计模式,因此很难将其转换为大型应用程序.
顺便说一句.你的链接非常有帮助,为新想法开启了我的思想:)
解决方法 拥有一个维护所有统计数据的单例类(共享对象)很好.示例:说MyGame用于存储所有游戏统计信息.
//在MyGame.h中
typedef enum{ kGameMode_Practice = 1001,kGameMode_Stress,kGameMode_TimeBattle,}GameMode;@interface MyGame: NSObject{ GameMode mGameMode; int mHighscore;} @property(nonatomic,assign) GameMode gameMode;
@property(nonatomic,assign)int highscore;
+(MyGame*)sharedGameObject;
//在MyGame.mm中
static MyGame *gGame = nil; @implementation MyGame @synthesize gameMode=mGameMode; @synthesize highscore=mHighscore; +(MyGame*)sharedGameObject { if(!gGame) { gGame = [[MyGame alloc] init]; } return gGame; } -(voID)saveData //Call this from applicationWillResignActive { NSUserDefaults *userDafs = [NSUserDefaults standardUserDefaults]; [userDafs setInteger:self.highscore forKey:@"highscore"]; [userDafs setInteger:self.gameMode forKey:@"gameMode"]; [[NSUserDefaults standardUserDefaults] synchronize]; } -(voID)loadData //call this from UIApplication dIDFinishLaunchingWithOptions { NSUserDefaults *userDafs = [NSUserDefaults standardUserDefaults]; self.highscore = [userDafs integerForKey:@"highscore"] self.gameMode = (GameMode)[userDafs integerForKey:@"gameMode"] }
//您可以在选择菜单按钮时设置游戏模式
[MyGame sharedGameObject].gameMode = kGameMode_Practice
//检查游戏中的任何地方
if([MyGame sharedGameObject].gameMode == kGameMode_Practice)
同时在应用终止时保存这些值,并在应用启动时加载相同值.
[[MyGame sharedGameObject] saveData];
根据游戏模式,您可以更改游戏.使用单一通用类进行游戏玩法逻辑并检查游戏模式并进行调整..当你为3个类设计3个单独的类时,将来需要在所有文件中更新一个更好的…所以尽可能多地使用通用代码.
总结以上是内存溢出为你收集整理的cocos2d-iphone – 使用cocos2d游戏的状态设计模式全部内容,希望文章能够帮你解决cocos2d-iphone – 使用cocos2d游戏的状态设计模式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)