2012-07-21 54 views
0

我有一個問題遊戲,我問用戶一些問題,並取決於用戶的正確答案有多快,用戶的級別是多少,我希望用戶獲得不同數量的xp /進度爲我擁有的進度視圖。Objective-c爲iPhone遊戲製作關卡

所以我有一個叫'levelInt'的全局變量,它保存用戶所處的級別(最大級別是20)的值。我也有一個打印'levelInt'變量的標籤和一個進度視圖,顯示您進入更高級別/顯示當前級別進度的進度。我也有一個計時器,從2分鐘倒計時,取決於你回答這個問題的速度有多快,你可以在進度視圖中獲得更多的進度。我把它像這樣:

totalSeconds是定時器

levelInt的是,保持用戶在

progressView水平的值的全局變量的進度條顯示剩餘XP直到下一級

,代碼:

if (levelInt == 0 && totalSeconds > 100){ 
    progressView.progress = .60; 
}else if (levelInt == 0 && totalSeconds <= 100){ 
    progressView.progress = .40; 
}else if (levelInt == 0 && totalSeconds > 80){ 
    progressView.progress = .20; 
}else if (levelInt == 0 && totalSeconds <= 80) { 
    progressView.progress = .10; 
}else { 
    progressView.progress = .05; 
} 

if (levelInt == 1 && totalSeconds > 100){ 
    progressView.progress = .55; 
}else if (levelInt == 1 && totalSeconds <= 100){ 
    progressView.progress = .35; 
}else if (levelInt == 1 && totalSeconds > 80){ 
    progressView.progress = .15; 
}else if (levelInt == 1 && totalSeconds <= 80) { 
    progressView.progress = .05; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 2 && totalSeconds > 100){ 
    progressView.progress = .50; 
}else if (levelInt == 2 && totalSeconds <= 100){ 
    progressView.progress = .30; 
}else if (levelInt == 2 && totalSeconds > 80){ 
    progressView.progress = .10; 
}else if (levelInt == 2 && totalSeconds <= 80) { 
    progressView.progress = .05; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 3 && totalSeconds > 100){ 
    progressView.progress = .45; 
}else if (levelInt == 3 && totalSeconds <= 100){ 
    progressView.progress = .25; 
}else if (levelInt == 3 && totalSeconds > 80){ 
    progressView.progress = .05; 
}else if (levelInt == 3 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 4 && totalSeconds > 100){ 
    progressView.progress = .40; 
}else if (levelInt == 4 && totalSeconds <= 100){ 
    progressView.progress = .20; 
}else if (levelInt == 4 && totalSeconds > 80){ 
    progressView.progress = .05; 
}else if (levelInt == 4 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 5 && totalSeconds > 100){ 
    progressView.progress = .35; 
}else if (levelInt == 5 && totalSeconds <= 100){ 
    progressView.progress = .15; 
}else if (levelInt == 5 && totalSeconds > 80){ 
    progressView.progress = .05; 
}else if (levelInt == 5 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 6 && totalSeconds > 100){ 
    progressView.progress = .30; 
}else if (levelInt == 6 && totalSeconds <= 100){ 
    progressView.progress = .10; 
}else if (levelInt == 6 && totalSeconds > 80){ 
    progressView.progress = .05; 
}else if (levelInt == 6 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 7 && totalSeconds > 100){ 
    progressView.progress = .28; 
}else if (levelInt == 7 && totalSeconds <= 100){ 
    progressView.progress = .08; 
}else if (levelInt == 7 && totalSeconds > 80){ 
    progressView.progress = .04; 
}else if (levelInt == 7 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 8 && totalSeconds > 100){ 
    progressView.progress = .26; 
}else if (levelInt == 8 && totalSeconds <= 100){ 
    progressView.progress = .07; 
}else if (levelInt == 8 && totalSeconds > 80){ 
    progressView.progress = .05; 
}else if (levelInt == 8 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 9 && totalSeconds > 100){ 
    progressView.progress = .24; 
}else if (levelInt == 9 && totalSeconds <= 100){ 
    progressView.progress = .05; 
}else if (levelInt == 9 && totalSeconds > 80){ 
    progressView.progress = .03; 
}else if (levelInt == 9 && totalSeconds <= 80) { 
    progressView.progress = .02; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 10 && totalSeconds > 100){ 
    progressView.progress = .22; 
}else if (levelInt == 10 && totalSeconds <= 100){ 
    progressView.progress = .04; 
}else if (levelInt == 10 && totalSeconds > 80){ 
    progressView.progress = .03; 
}else if (levelInt == 10 && totalSeconds <= 80) { 
    progressView.progress = .02; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 11 && totalSeconds > 100){ 
    progressView.progress = .20; 
}else if (levelInt == 11 && totalSeconds <= 100){ 
    progressView.progress = .04; 
}else if (levelInt == 11 && totalSeconds > 80){ 
    progressView.progress = .03; 
}else if (levelInt == 11 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 12 && totalSeconds > 100){ 
    progressView.progress = .18; 
}else if (levelInt == 12 && totalSeconds <= 100){ 
    progressView.progress = .04; 
}else if (levelInt == 12 && totalSeconds > 80){ 
    progressView.progress = .03; 
}else if (levelInt == 12 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 13 && totalSeconds > 100){ 
    progressView.progress = .16; 
}else if (levelInt == 13 && totalSeconds <= 100){ 
    progressView.progress = .04; 
}else if (levelInt == 13 && totalSeconds > 80){ 
    progressView.progress = .03; 
}else if (levelInt == 13 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 14 && totalSeconds > 100){ 
    progressView.progress = .14; 
}else if (levelInt == 14 && totalSeconds <= 100){ 
    progressView.progress = .04; 
}else if (levelInt == 14 && totalSeconds > 80){ 
    progressView.progress = .03; 
}else if (levelInt == 14 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 15 && totalSeconds > 100){ 
    progressView.progress = .12; 
}else if (levelInt == 15 && totalSeconds <= 100){ 
    progressView.progress = .03; 
}else if (levelInt == 15 && totalSeconds > 80){ 
    progressView.progress = .03; 
}else if (levelInt == 15 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 16 && totalSeconds > 100){ 
    progressView.progress = .10; 
}else if (levelInt == 16 && totalSeconds <= 100){ 
    progressView.progress = .03; 
}else if (levelInt == 16 && totalSeconds > 80){ 
    progressView.progress = .03; 
}else if (levelInt == 16 && totalSeconds <= 80) { 
    progressView.progress = .03; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 17 && totalSeconds > 100){ 
    progressView.progress = .08; 
}else if (levelInt == 17 && totalSeconds <= 100){ 
    progressView.progress = .02; 
}else if (levelInt == 17 && totalSeconds > 80){ 
    progressView.progress = .02; 
}else if (levelInt == 17 && totalSeconds <= 80) { 
    progressView.progress = .02; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 18 && totalSeconds > 100){ 
    progressView.progress = .06; 
}else if (levelInt == 18 && totalSeconds <= 100){ 
    progressView.progress = .02; 
}else if (levelInt == 18 && totalSeconds > 80){ 
    progressView.progress = .02; 
}else if (levelInt == 18 && totalSeconds <= 80) { 
    progressView.progress = .02; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt == 19 && totalSeconds > 100){ 
    progressView.progress = .04; 
}else if (levelInt == 19 && totalSeconds <= 100){ 
    progressView.progress = .02; 
}else if (levelInt == 19 && totalSeconds > 80){ 
    progressView.progress = .02; 
}else if (levelInt == 19 && totalSeconds <= 80) { 
    progressView.progress = .02; 
}else { 
    progressView.progress = .02; 
} 

if (levelInt ==20 && totalSeconds > 100){ 
    progressView.progress = .04; 
}else if (levelInt == 20 && totalSeconds <= 100){ 
    progressView.progress = .02; 
}else if (levelInt == 20 && totalSeconds > 80){ 
    progressView.progress = .02; 
}else if (levelInt == 20 && totalSeconds <= 80) { 
    progressView.progress = .02; 
}else { 
    progressView.progress = .02; 
} 

的問題是,每當我答對快則20秒,在進步黨他的觀點只增加了約10。我應該做progressView.progress = progressView.progress +(金額)?

記住我是新來的Objective-C

感謝 - 菲利普WIEDER

+0

奇怪,你的代碼只能進入<=100 and > 100個案例,永遠不會進入80'。 – divol 2012-07-21 16:31:48

+0

這很奇怪,一定是出了問題,但是什麼... – Wieder 2012-07-21 17:38:29

回答

2

第一或第二語句總是驗證true
爲此最後三個if聲明絕不會驗證。
數字無法驗證false<= 100> 100
驗證號碼false> 100始終爲<= 100

if (i > 100) 
{ 
    // All numbers above 100 
} 
else if (i <= 100) 
{ 
    // All numbers lower than or equal to 100 
} 
else if (i > 80) 
{ 
    // Never reached 
} 
else if (i <= 80) 
{ 
    // Never reached 
} 
else 
{ 
    // Never reached 
} 
0

2層更好的方法來完成這項工作:

1:創建一個函數(線性?)來計算你的進步。

float progress (int level , int seconds); 

2:使用數組(從文件的讀更好地利用)

//float values [levels][cases]; 

//float values [21][3]; 

static init 
float values[0] = {.10,.20,.60}; 
float values[1] = .... 

int acase ; 
if (totalSeconds <= 80){ 
acase=0; 

    }else{ 
    // your are > 80 here 
    if (totalSeconds <= 100){ 
     acase=1; 
    }else{ 
     // your are > 100 here 
     acase=2; 
    } 
} 

progressView.progress = values[levelInt,acase]; 

它完成(更短,我認爲)

當然你也可以添加案件(這裏3)

+0

爲什麼不接受?這裏的規則很奇怪.... – divol 2012-08-03 18:48:49