我意识到for循环可能是最好的方法,我只是不知道为每5个障碍传递说法的正确方法,在totalScriptures整数中加1
我有一个类似于飞鸟的应用程序。对象在两个垂直对象之间传递,用户点击以使其保持浮动状态。
评分方法略有不同,所以我会尽力解释。在应用程序中,用户收集经文'通过障碍物。通过每5个障碍,用户获得1.因此在我的评分方法中,我首先除以2(考虑在两个障碍之间传递),然后除以5以计算已经获得了多少经文。
我也在努力追踪所获得的经文总数。我这样做是通过创建一个从0开始的NSUserDefault整数。我试图做的是除以2来获得通过的障碍数,然后除以5得到已经获得了多少经文,并将该数加入我之前提到的NSUserDefault。然而,有了你将要看到的代码,一旦获得经文,它就会维持这个价值,因此对于前5个障碍,一切都很好,但是一旦获得一个经文,它就会为每个经文添加一个经文时间。如果finalChange数字与上一次报告不同,有人可以告诉我如何仅执行添加吗?
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSInteger startIt = [defaults integerForKey:@"totalScripturesCollected"];
NSInteger goBetween = _score/2;
NSInteger finalChange = goBetween/5;
NSInteger toReport = startIt + finalChange;
[defaults setInteger:_score/2 forKey:@"theScore"];
[defaults setInteger:toReport forKey:@"totalScripturesCollected"];
[defaults synchronize];
NSLog(@"startit %ld", (long)startIt);
NSLog(@"gobetween %ld", (long)goBetween);
NSLog(@"finalchange %ld", (long)finalChange);
NSLog(@"toreport %ld", (long)toReport);
答案 0 :(得分:1)
我想说你应该在游戏结束时只进行一次计算。
如果您需要始终显示计算结果,可以添加一个类变量来保持计数。并且在该代码的每次运行中都执行:
count++;
if (count == 10) {
NSInteger toReport = startIt++;
[defaults setInteger:toReport forKey:@"totalScripturesCollected"];
[defaults synchronize];
count = 0;
}
所以每过10个障碍,你加一个经文,然后再开始计算。