Skip to content
Snippets Groups Projects
Commit b2fb692c authored by Makarios Abouseif's avatar Makarios Abouseif
Browse files

Added two functions to handle end of game scenarios, in case of end of game...

Added two functions to handle end of game scenarios, in case of end of game the cookies resets and the players are prompted to play again!
parent 12e99528
Branches
No related tags found
1 merge request!4Merging into Master
......@@ -142,7 +142,41 @@
}
return score;
}
// Handle the end of each round, could improve later
async function handleEnd(pScore, oScore) {
await new Promise(resolve => setTimeout(resolve, 3000)); // 3 seconds delay
let txt;
if (pScore > oScore) {
txt = "WINNER!";
}
else if ( pScore < oScore) {
txt = "LOSER!";
} else {
txt = "DRAW!"
}
txt += `\nYOUR SCORE: ${pScore} OPPONENT'S SCORE: ${oScore}\n`;
txt += 'PLAY AGAIN?';
if (confirm(txt)) {
location.reload();
}
}
// checks for end of game
function checkEnd(guessNum, oppGuessNum, oppCorrect, playerCorrect) {
if ((guessNum === 6 && oppGuessNum === 6) ||
(oppCorrect === 5 && guessNum === 6) ||
(oppCorrect === 5 && playerCorrect === 1) ||
(playerCorrect === 1 && oppGuessNum === 6)) {
eraseCookie("oppScore");
eraseCookie("oppGuessNum");
eraseCookie("enteredOppColors");
eraseCookie("playerScore");
eraseCookie("playerGuessNum");
eraseCookie("enteredWords");
eraseCookie("enteredPlayerColors");
return 1;
}
return 0;
}
// https://www.w3schools.com/js/js_cookies.asp
function setCookie(cname, cvalue, exMinutes) {
const d = new Date();
......@@ -175,10 +209,18 @@
}
}
function eraseCookie(cookieName) {
if (checkCookie(cookieName)) {
document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
}
}
let oppScore = 0;
let playerScore = 0;
let playerFirst = 0;
let oppFirst = 0;
let oppCorrect = 0;
let playerCorrect = 0;
if (checkCookie("playerScore")) {
playerScore = Number(getCookie("playerScore"));
document.getElementById("p-score").innerHTML = `SCORE: ${playerScore}`;
......@@ -307,10 +349,15 @@
for (let child of children) {
child.value = '';
}
} else {
let keyboard = document.getElementById("keyboard");
for (let key of keyboard.childNodes) {
key.disabled = true;
}
playerCorrect = 1;
}
}
}
// Saves and pulls the Opponents's gameboard progress after refreshing
let enteredOppColors = [];
if (checkCookie("enteredOppColors")) {
......@@ -321,8 +368,14 @@
for (let [index, cell] of oppGuess.childNodes.entries()) {
cell.style.backgroundColor = colorDict[Number(currentOppColors[index])];
}
if (enteredOppColors[idx] === "2-2-2-2-2") {
oppCorrect = 5;
}
}
}
if (checkEnd(guessNum, oppGuessNum, oppCorrect, playerCorrect)) {
location.reload();
}
socket.on("correct word", () => {
alert("Correct word!");
let currentGuess = document.getElementById(`guess-${guessNum++}`);
......@@ -352,19 +405,24 @@
setCookie("playerGuessNum", guessNum, 10);
setCookie("enteredWords", enteredWords.join(), 10);
setCookie("enteredPlayerColors", enteredPlayerColors.join(), 10);
playerCorrect = 1;
if (checkEnd(guessNum, oppGuessNum, oppCorrect, playerCorrect)) {
handleEnd(playerScore, oppScore);
}
});
socket.on("update opponent", (colors) => {
let oppGuess = document.getElementById(`opponent-guess-${oppGuessNum++}`);
let correct = 0;
oppCorrect = 0;
for (let [index, cell] of oppGuess.childNodes.entries()) {
cell.style.backgroundColor = colorDict[colors[index]];
if (colors[index] === 2) {
correct++;
oppCorrect++;
}
}
enteredOppColors.push(colors.join('-'));
if (correct === 5) {
if (oppCorrect === 5) {
if (playerFirst === 0) {
oppFirst = 1;
}
......@@ -377,8 +435,12 @@
setCookie("oppScore", oppScore, 10);
setCookie("oppGuessNum", oppGuessNum, 10);
setCookie("enteredOppColors", enteredOppColors.join(), 10);
if (checkEnd(guessNum, oppGuessNum, oppCorrect, playerCorrect)) {
handleEnd(playerScore, oppScore);
}
});
console.log(oppCorrect);
console.log(playerCorrect);
socket.on("incorrect word", (colors) => {
alert("Incorrect word.");
let currentGuess = document.getElementById(`guess-${guessNum++}`);
......@@ -419,8 +481,10 @@
setCookie("playerGuessNum", guessNum, 10);
setCookie("enteredWords", enteredWords.join(), 10);
setCookie("enteredPlayerColors", enteredPlayerColors.join(), 10);
if (checkEnd(guessNum, oppGuessNum, oppCorrect, playerCorrect)) {
handleEnd(playerScore, oppScore);
}
});
socket.on("invalid word", () => {
alert("Invalid word.");
let currentGuess = document.getElementById(`guess-${guessNum}`);
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment