2013-06-10 2 views
0

Я заранее извиняюсь, если с моим кодом есть несколько ошибок; Я все еще очень новичок в этом.Javascript While Loop Возвращает странные результаты

Я сделал простую маленькую игру RNG ставка, который следующим образом:

var funds = 100; 
var betting = true; 


function roll_dice() { 
    var player = Math.floor(Math.random() * 100); 
    var com = Math.floor(Math.random() * 100); 
    var bet = prompt("How much do you bet? Enter a number between 1 and " + funds + " without the $ sign."); 
    if (player === com) { 
     alert("tie."); 
    } 
    else if (bet > funds) { 
    alert("You don't have that much money. Please try again"); 
    roll_dice(); 
    } 
    else if (player > com) { 
     funds += bet; 
     alert("Your roll wins by " + (player - com) + " points. You get $" + bet + " and have a total of $" + funds + "."); 
    } 
    else { 
     funds -= bet; 
     alert("Computer's roll wins by " + (com - player) + " points. You lose $" + bet + " and have a total of $" + funds + "."); 
    } 
} 

while (betting) { 
    var play = prompt("Do you wish to bet? Yes or no?"); 
    if (funds <= 0) { 
     alert("You have run out of money."); 
     betting = false; 
    } 
    else if (play === "yes") { 
     roll_dice(); 
    } 
    else { 
     alert("Game over."); 
     betting = false; 
    } 
} 

Кодекса сделок с потерей (т.е. вычитания) просто отлично, но не могу справиться с аддитивной частью. Если вы сделаете ставку, скажем, 50 и выиграете, вы закончите с 10050. Помимо того, что вы никогда не искали работу программистом по азартным играм, что мне делать?

ответ

7

prompt возвращает строку. Добавление номера в строке результатов в строке:

> "12" + 13 
"1213" 

Хотя результаты вычитания в целом, как только конкатенация делаются со знаком плюс:

> "12" - 13 
-1 

Вам необходимо преобразовать входной сигнал вашего пользователя в целое число:

var bet = parseInt(prompt("How much do you bet? Enter a number between 1 and " + funds + " without the $ sign."), 10); 
+1

это также объясняет, почему работает вычитание; оператор '-' не перегружен, как' + 'один. –

Смежные вопросы