odin-rock-paper-scissors/script.js

122 lines
3 KiB
JavaScript
Raw Normal View History

2023-11-07 14:52:42 -07:00
let pScore = 0;
let cScore = 0;
let ps;
let count = 0;
const buttons = document.querySelectorAll('button');
const msg = document.querySelector("#msg");
const score = document.querySelector("#score");
const player = document.querySelector("#player");
const computer = document.querySelector("#computer");
const rounds = document.querySelector("#rounds");
2023-11-07 21:24:44 -07:00
buttons.forEach((button) => {
button.addEventListener('click', () => {
2023-11-07 22:40:11 -07:00
ps = button.id;
game();
});
});
2023-11-07 21:24:44 -07:00
2023-09-30 10:23:21 -06:00
function getComputerChoice(){
let compAnswer = Math.floor(Math.random() * 3) + 1;
if (compAnswer === 1) {
return "rock";
} else if (compAnswer === 2) {
return "paper";
} else {
return "scissors"
}
2023-09-30 10:23:21 -06:00
}
2023-09-30 10:23:21 -06:00
function playRound(playerSelection, computerSelection){
p = playerSelection.toLowerCase();
c = computerSelection.toLowerCase();
2023-09-30 10:23:21 -06:00
2023-09-30 10:52:40 -06:00
if (p === c) {
return "tie";
2023-09-30 10:52:40 -06:00
} else if (p === "rock") {
if (c === "paper") {
return "player loses";
} else { //scissors
2023-09-30 10:52:40 -06:00
return "player wins";
}
2023-09-30 10:52:40 -06:00
} else if (p === "paper") {
if (c === "scissors") {
return "player loses";
} else { //rock
2023-09-30 10:52:40 -06:00
return "player wins";
}
2023-09-30 10:52:40 -06:00
} else if (p === "scissors") {
2023-09-30 12:33:29 -06:00
if (c === "rock") {
2023-09-30 10:52:40 -06:00
return "player loses";
2023-09-30 12:33:29 -06:00
} else { //paper
2023-09-30 10:52:40 -06:00
return "player wins";
}
}
2023-09-30 10:23:21 -06:00
}
function game() {
if (pScore < 5 && cScore < 5) {
const cs = getComputerChoice();
const play = playRound(ps, cs);
let psCap = ps.charAt(0).toUpperCase() + ps.slice(1);
let csCap = cs.charAt(0).toUpperCase() + cs.slice(1);
switch (play) {
case "player loses":
cScore ++;
computer.textContent = cScore;
msg.textContent = "You lose! " + csCap + " beats " + ps + ".";
break;
case "player wins":
pScore ++;
player.textContent = pScore;
msg.textContent = "You win! " + psCap + " beats " + cs + ".";
break;
2023-11-07 21:58:19 -07:00
default:
msg.textContent = "It's a tie! You both played " + cs + ".";
break;
}
count ++;
rounds.textContent = count;
}
2023-11-07 21:24:44 -07:00
if (pScore === 5 || cScore === 5) {
2023-11-07 22:10:15 -07:00
endGame();
2023-11-07 21:24:44 -07:00
}
}
2023-11-08 00:20:16 -07:00
function endGame() {
2023-11-07 22:10:15 -07:00
let winner = (pScore > cScore) ? true : false;
2023-11-08 00:05:03 -07:00
const newGame = document.createElement("button");
const newDiv = document.createElement("div");
2023-09-30 10:23:21 -06:00
if (winner) {
2023-11-07 22:32:41 -07:00
msg.textContent = "You won the game! Great job!";
} else {
2023-11-07 22:32:41 -07:00
msg.textContent = "You lost the game. Better luck next time!";
}
2023-11-08 00:05:03 -07:00
newGame.textContent = "Play Again?";
newGame.classList.add("button");
2023-11-08 00:20:16 -07:00
newGame.addEventListener("click", resetGame);
2023-11-08 00:05:03 -07:00
newDiv.appendChild(newGame);
msg.appendChild(newDiv);
2023-11-08 00:20:16 -07:00
}
function resetGame() {
pScore = 0;
cScore = 0;
count = 0;
2023-11-08 00:20:16 -07:00
player.textContent = "0";
computer.textContent = "0";
msg.textContent = "";
2023-11-08 02:08:57 -07:00
rounds.textContent = "0";
2023-11-07 21:24:44 -07:00
}