2016-03-18 3 views
0

RPS код игры не работает. Предполагается, что моя боевая функция устанавливает выигрыш на 1,2 или 3, но всегда остается на уровне 0. Я проверил другие значения через консоль, и все они, похоже, работают. вот мой код.rps функция не работает (javascript)

function Player(number) { 
this.number = number; 
this.choice = 0; 
} 

var player1 = new Player(1); 
var player2 = new Player(2); 
var win = 0; 

var battle = function() { 
if (player1.choice === player2.choice) { 
    win = 3; 
} else if (player1.choice + 2 === player2.choice && player1.choice === 1){ 
    win = 2; 
} else if (player1.choice + 1 === player2.choice && player1.choice === 1) { 
    win = 1; 
} else if (player1.choice + 1 === player2.choice && player1.choice === 2) { 
    win = 1; 
} else if (player1.choice - 1 === player2.choice && player1.choice === 2) { 
    win = 2; 
} else if (player1.choice - 1 === player2.choice && player1.choice === 3) { 
    win = 2; 
} else if (player1.choice - 2 === player2.choice && player1.choice === 3) { 
    win = 1; 
} else { 
    alert ('someone pressed the wrong button') 
} 
} 

var Reset = function() { 
win = 0; 
player1.choice = 0; 
player2.choice = 0; 
} 

$(document).ready(function() { 
$(document).keydown(function(event) { 
    if (event.which === 81) { 
     player1.choice = 1; 
    } else if (event.which === 87){ 
     player1.choice = 2; 
    } else if (event.which === 69){ 
     player1.choice = 3; 
    } else if (event.which === 37){ 
     player2.choice = 1; 
    } else if (event.which === 40){ 
     player2.choice = 2; 
    } else if (event.which === 39){ 
     player2.choice = 3; 
    } 
}) 
if (player1.choice > 0 && player2.choice > 0) { 
    battle(); 
    if (win === 1) { 
     $('.winner').append('<p>player1 wins!</p>') 
    } else if (win === 2) { 
     $('.winner').append('<p>player2 wins!</p>') 
    } else if (win === 3) { 
     $('.winner').append('<p>It is a draw!</p>') 
    } 
} 

}) 

В моем html есть div с победителем класса. Дополнительный вопрос Как отменить функцию спуска после того, как оба игрока выбрали свои параметры.

+0

Это потому, что боевая функция никогда не называется. Это легко увидеть, если вы добавите console.log() в функцию battle(). Что-то вроде 'console.log ('battling!')'. Проверка того, что оба игрока сделали выбор, происходит только один раз, когда документ готов. Это происходит в то время, когда маловероятно, чтобы у обоих игроков было достаточно времени, чтобы сделать свой выбор, чтобы условие не выполнялось, а битва() никогда не вызывалась. Вам нужно будет настроить какой-то цикл для непрерывного запуска и проверить, сделали ли оба игрока выбор. – sm1215

ответ

0

Вы даете игроку выбор в классе Игрока, который вы создали? Это должно выглядеть так:

function Player(number, choice) { 
this.number = number; 
this.choice = choice; 
}