2012-09-15 3 views
-2

: 것을게임 통화 변환 : 수학 효율성 변수의

-(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]; 
} 

을 감안할 때 : diamondText, goldText, silverTextbronzeText라는 이름의 4 텍스트 뷰; 돈 변수 unsigned int moneyNSTimer마다 0.1 초, 기능 실행 내 통화는 다이아몬드 = 10 금 = 10은 = 10 청동 = 1;

돈 라벨을 계산하고 표시하는 가장 효율적인 방법은 무엇입니까? GameCenter 및 NSDictionary 또는 GameCenter와 다른 변수를 사용하여이 변수를 어떻게 저장 하시겠습니까?

명확히하려면 : 아래


자세한 내용 브론즈 실버 등등 다음 2 개 번호,있다, 마지막 두 숫자가 있습니다.

4 int 또는 배열을 사용할 수는 있지만 훨씬 효율적인 방법이 아니라면이 방법을 사용하려고합니다.

예 : money = 1000; bronzeText = nothing, silverText = 10, goldText = nothing, diamondText = nothing;

답변

2

첫 번째로 ... 각 동전에 2 자리 숫자를 부여하면 수학이 꺼집니다. 10 개 모두를 변경하면 각 동전은 한 자릿수 만 얻습니다. 하지만 당신은 그 일을 제대로하지 않았습니다. 수학은 동전의 가치를 고려하지 않으며, 이미 계산 한 동전이나 그 동전을 무시합니다. 1371의 돈을 가지고 있다고합시다. 당신의 현재 수학, 청동 = 1371,은 = 1, 금 = 71, 다이아몬드 = 371. 나는 그것이 당신이 염두에 두었던 것이 아니라는 것을 확신합니다.

당신은 당신이 1371 돈을 가지고 있다면, 당신은 청동 = 71,은 13 명, 금 = 0, 다이아몬드 = 0이 지금

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

뭔가를 시도 할 수 있습니다.

청동으로보기를 업데이트하는 경우 거의 항상 업데이트해야합니다. 변경 사항이 영향을 미칩니다. 하지만 항상 1 씩 증가하는 경우 현재 동전의 개수가 0 일 때 다음 상위 동전 만 업데이트하면됩니다. 예를 들어 2799 개가 있고 업데이트되어 2800 개까지 돈을 버린 경우 이제 청동 = 0이므로은을 28로 업데이트합니다. 28! = 0이므로 금은 업데이트 할 필요가 없으므로 다이아몬드를 신경 쓸 필요가 없습니다.

돈을으로 변경하면 으로 업데이트하면됩니다. 그래서 충돌시에하는 것이 타이머보다 훨씬 더 합리적입니다. :)

+0

위대한 직업, 대답 수락 – Comradsky

+0

개인적으로, 나는 'bronzeText.text = ...; if (bronze! = 0) return; silverText.text = ...; if (silver! = 0) return; 등등. 업데이트는 여러분이 가지고있는 것과 유사 할 것입니다. 단, 거기에서 수학을하는 대신 위에서 언급 한 변수를 사용하는 것입니다. – cHao