游戏货币转换:数学效率

时间:2012-09-15 16:17:34

标签: iphone objective-c xcode

对于变量:名为diamondTextgoldTextsilverTextbronzeText的4个文本视图;货币变量unsigned int money;以及NSTimer ,每0.1秒,运行功能:

-(void)updateMoney{
    money++;
    bronzeText.text = [NSString stringWithFormat:@"%d",money];
    silverText.text = [NSString stringWithFormat:@"%d",money%10];
    goldText.text   = [NSString stringWithFormat:@"%d",money%100];
    diamondText.text= [NSString stringWithFormat:@"%d",money%1000];
}

鉴于我的货币是钻石= 10金= 10银= 10青铜= 1;

计算和显示金钱标签的最有效方法是什么?你会如何使用GameCenter和NSDictionary或GameCenter等存储这个变量?


以下更多详情:

澄清:青铜有最后2个数字,银有接下来的2个数字,依此类推。

我知道我可以使用4个整数或数组,但我宁愿尝试使用这种方法,除非这是一个更有效的方法。

示例:何时money = 1000; bronzeText = nothingsilverText = 10goldText = nothingdiamondText = nothing;

1 个答案:

答案 0 :(得分:2)

首先......如果您给每个硬币两位数,那么您的数学就会关闭。如果你修改了所有的东西,那么每枚硬币只能得到一个数字。但你甚至没有做到这一点;数学没有考虑到硬币的价值,或忽略你已经考虑过的硬币,或者任何硬币。假设你有1371个钱...你当前的数学,青铜= 1371,银= 1,金= 71,钻石= 371。我很确定这不是你的想法。

您可以尝试类似

的内容
int bronze = money % 100;
int silver = (money / 100) % 100;
int gold = (money / 10000) % 100;
int diamond = money / 1000000;

现在,如果你有1371钱,你有铜= 71,银= 13,金= 0,钻石= 0.

至于更新视图,使用铜牌,你几乎总是需要更新 - 任何改变都会影响它。但是,如果您总是递增1,那么当当前硬币的数量为0时,您只需要更新下一个更高的硬币。例如,如果您有2799并且已更新,则将您的资金提高到2800 ,你现在有铜= 0,所以你将白银更新为28.因为28!= 0,黄金不需要更新,所以你不会打扰用钻石。

但是,只需在货币更改时更新。所以在碰撞时这样做比在计时器上更有意义。 :)