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