-2

对于变量:4 个名为diamondTextgoldTextsilverTextbronzeText;money 变量的文本视图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 = nothing, silverText = 10, goldText = nothing, diamondText = nothing;

4

1 回答 1

2

首先...如果你给每个硬币两位数,那么你的数学就不行了。如果你修改 10 一切,那么每个硬币只有一个数字。但是您甚至做得都不对;数学没有考虑硬币的价值,或者忽略你已经考虑过的硬币,或者任何其他的。假设你有 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。

至于更新视图,对于青铜,您几乎总是必须更新它——任何更改都会影响它。但是,如果你总是加一,你只需要在当前硬币的计数为 0 时更新下一个更高的硬币。例如,如果你有 2799 并更新,将你的钱增加到 2800,你现在有青铜=0,因此您将白银更新为28。但是,由于28!= 0,黄金不需要更新,因此您甚至不必为钻石烦恼。

不过,您只需在货币发生变化时更新它。所以在碰撞时这样做比在计时器上更有意义。:)

于 2012-09-15T16:44:02.983 回答