0

I have a question game in which I ask the user some questions and depending on how fast the user answers correctly and what level the user is in I want the user to get different amounts of xp/ progress for the progress view that I have.

So I have a global variable called 'levelInt' which holds the value of what level the user is in (max level is 20). I also have a label that prints the the 'levelInt' variable and a progress view that shows your progress for getting into higher level/shows progress for your current level. I also have a timer which counts down from 2 minutes and depending on how fast you answer this question you get more xp/more progress for the progress view. I set it up like this:

  • totalSeconds is the timer

  • levelInt is the global variable that hold the value of the level the user is in

  • progressView is the progress bar the show the remaining xp until next level

and the code:

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

The problem is that whenever I answer correctly fast then the 20 seconds, the progress view only adds about .10. Should I do progressView.progress = progressView.progress + (amount)?

Bhargav Rao
  • 50,140
  • 28
  • 121
  • 140
Wieder
  • 5
  • 3

2 Answers2

2

The first or the second statement will always validates true,
therefor the last three if statements will never be validated.
Numbers cannot validate false to both <= 100 and > 100.
Numbers validating false to > 100 are always <= 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
}
Anne
  • 26,765
  • 9
  • 65
  • 71
0

2 better ways to do the job :

1 : create a function (linear ?) to compute your progress.

float progress (int level , int seconds);

2 : use an array (your read from a file for better use)

//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];

and it's done (more shorter i think)

you can of course add cases (here 3)

divol
  • 192
  • 7