Iphone开发中的设计问题-游戏奖金的通用实现
所以,我想就我的设计咨询你们,因为我觉得可能有更好的方法 我需要在我的应用程序中实现游戏奖金机制。 目前有9个奖金可用,每个奖金是基于不同的参数的主要游戏对象 我的想法是在应用程序启动时初始化9个GameBonus对象,而每个对象都有不同的SEL(shouldBonus),负责检查奖金是否有效 所以,在游戏的每一个结尾,我都会运行奖金数组,并使用MainGame对象调用isBonusValid()函数(每个游戏结束后都会有所不同) 听起来怎么样 我目前唯一的问题是,我需要确保,如果一些奖金被接受,其他一些奖金不会被接受(内在的东西)。。。如何做到这一点,并且仍然保持通用实现,有什么建议吗Iphone开发中的设计问题-游戏奖金的通用实现,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,所以,我想就我的设计咨询你们,因为我觉得可能有更好的方法 我需要在我的应用程序中实现游戏奖金机制。 目前有9个奖金可用,每个奖金是基于不同的参数的主要游戏对象 我的想法是在应用程序启动时初始化9个GameBonus对象,而每个对象都有不同的SEL(shouldBonus),负责检查奖金是否有效 所以,在游戏的每一个结尾,我都会运行奖金数组,并使用MainGame对象调用isBonusValid()函数(每个游戏结束后都会有所不同) 听起来怎么样 我目前唯一的问题是,我需要确保,如果一些奖金被接受
@interface GameBonus : NSObject {
int bonusId;
NSString* name;
NSString* description;
UIImage* img;
SEL shouldBonus;
}
@implementation GameBonus
-(BOOL) isBonusValid(MainGame*)mainGame
{
[self shouldBonus:mainGame];
}
@end
听起来不错,我想的唯一改变是,如果它被移除了,也许会从数组中移除一个额外的奖励。这样以后就不会被检查了。这也适用于因其他原因不再可用的奖金。玩家是否可以根据游戏规则获得特定奖金,个人奖金并不知道。这是游戏本身应该知道的。例如,您可能有一个游戏允许奖金A和B一起,但另一个游戏不允许 因此,授予或拒绝奖金的逻辑应该在MainGame对象中。我会组织它,使GameBonus是一个简单的bucket类,逻辑都在主游戏中。MainGame将是任何其他可能希望覆盖奖金逻辑的自定义游戏的超类 起点:
typedef enum {
BonusTypeA, BonusTypeB, BonusTypeC
} BonusId;
@interface GameBonus : NSObject {
BonusId bonusId;
NSString *name;
NSString *description;
UIImage *img;
}
@property (nonatomic,assign) BonusId bonusId;
@property (nonatomic,retain) NSString *name;
@property (nonatomic,retain) NSString *description;
@property (nonatomic,retain) NSString *img;
@end
@interface MainGame : NSObject {
NSMutableSet *activeBonuses;
}
-(BOOL) tryToSetBonus:(BonusId)bonus; // tries to set, returns YES if successful.
-(BOOL) isBonusValid:(BonusId)bonus; // has no side effect, just check validity.
@end
谢谢你的评论。我想你误会我了。我确实希望玩家能够在不同的游戏中获得相同的奖金,我只是想确保如果他获得奖金“4”,例如,他不会在同一游戏中获得奖金“3”。例如,“4”是“获得40分以上奖金”,而“3”是“获得30分以上奖金”。关于如何在我当前的实现中做到这一点,有什么建议吗?嗯,您的解决方案根本不是通用的。假设我硬编码所有奖金支票,然后我想再添加一笔奖金,我需要向MainGame对象添加更多代码。(或就此罢免)。在我的解决方案中,您只需添加一个带有特定SEL的gameBonus。在我看来,这样更好。我唯一的问题是如何确保,如果一项奖金被接受,我可以拒绝另一项奖金。(见我对德里克的评论)谢谢你的回答。