2012-07-21 125 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