Stack Overflow на русском Asked by bota on January 1, 2022
Всем привет! Недавно начала изучать JS. Никак не могу разобраться как сравнить счета игроков по количеству ходов. Заранее извиняюсь если что то неразумное вышло, я новичок.
В главном меню если выбрать игру в раунд, пользователь и компьютер играют по очереди. По количество шагов в каждом раунде даются очки. Количество шагов считаются в функции и для пользователя и для компьютера. А вытащить данные не получается
let count = 1;
let getRandomInt = (max) => {
return Math.floor(Math.random() * Math.floor(max) + 1);
};
let makeCounter = () => {
let currentCount = 1;
return {
getNext: function() {
return currentCount++;
},
reset: function() {
currentCount = 1;
}
};
}
let counter = makeCounter();
let playGameForUser = () => {
randomInt = getRandomInt(100);
console.log(randomInt); // console
while (count > 0) {
let user = prompt('Guess the number. User says:');
if (user === null) {
break;
} else if (isNaN(+user) || user === '') {
alert('Please enter only numbers')
} else if (+user < randomInt) {
alert('greater');
} else if (+user > randomInt) {
alert('less')
} else if (+user === randomInt) {
alert(`Yes? It is!
Got it in ${counter.getNext()} steps!`);
break;
}
counter.getNext();
}
counter.reset();
};
let playGameForComputer = () => {
while (count > 0) {
let randomInt = getRandomInt(100);
let computer = prompt(`Computer asks:
is it ${randomInt} ?
(Enter less, greater or yes)`);
if (computer === null) {
break;
} else {
computer = computer.toLowerCase();
if (computer === 'less' || computer === 'greater') {
} else if (computer === 'yes') {
alert(`Got it in ${counter.getNext()} steps!`);
break;
} else {
alert('Please enter right answer')
}
}
counter.getNext();
}
counter.reset();
};
let playWithTurn = () => {
let turn = prompt('Enter the number of rounds');
if (turn === '') {
turn = 3;
} else {
turn = +turn;
};
while (count < (+turn + 1)) {
let scoreForUser = 0;
let scoreForComputer = 0;
alert(`Round ${count} `);
playGameForUser();
playGameForComputer();
switch (true) {
case (counter.getNext < counter.getNext):
scoreForUser++; break;
case (counter.getNext > counter.getNext):
scoreForComputer++; break;
case (counter.getNext === counter.getNext):
scoreForComputer++ && scoreForUser++; break;
}
alert(`Score:
user ${scoreForUser}
computer: ${scoreForComputer}`)
count++
}
};
let chooseModeTheGame = () => {
while (count > 0) {
let mode = prompt(`Choose the mode of game (user or computer or round):
user - You need guess the number;
computer - Computer try to guess the number
round - You take turns playing with the computer `);
if (mode === null) {
alert('Bye. See you later');
break;
} else {
mode = mode.toLowerCase();
if (mode === 'user') {
playGameForUser();
} else if (mode === 'computer') {
playGameForComputer();
} else if (mode === 'round') {
playWithTurn()
}
}
};
};
chooseModeTheGame()
playGameForUser
и playGameForComputer
в конце
выполнения(раунда) возвращали итоговое количество затраченных ходов.playWithTurn
должен принимать и обрабатыватьplayGameFor...
.playGameFor...
, а не через makeCounter
Схематичный пример логики.
`
let playGameForUser = () => {
let counter // вместо makeCounter локальная переменная, для хранения количества ходов
//код игры
return counter //возвращаем итоговое количество ходов
}
let playGameForComputer => {
let counter // // вместо makeCounter локальная переменная, для хранения количества ходов
//код игры
return counter //возвращаем итоговое количество ходов
}
let playWithTurn => {
//Стартовый счет.
let score = {
user: 0;
computer: 0
}
/* ваш код игры */
//цикл игры
//playGameForUser() и ForComputer() возвращают количество ходов, в текущем примере 1 ход = 1 очку, вы делайте, как вам нужно.
while (true) {
score.user += playGameForUser();
score.computer += playGameForComputer();
}
//после выполнения цикла, вы можете работать с итоговым значением score
let winner = //какие-то операции со score
console.log(`Winner is ${winner})
}
Answered by xydope on January 1, 2022
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP