var reponse = ""; var word =""; const good_letter_color = "#98D98B"; const good_letter_text_color = "#284D32"; const bad_letter_color = "#EB9181"; const bad_letter_text_color = "#52201A"; const mid_letter_color = "#F8EEA0"; const mid_letter_text_color = "#665B26"; const base_letter_color = "#f3d7c7" ; const base_letter_text_color = "#632D17" ; var free_box = [1,1]; let arrWords; readTextFile("words.txt"); aleatoire(); setMyKeyDownListener(); //------------------------------Changement de couleur Keys et Divs------------------ function change_color_good_letter(coord){ var case_div = document.getElementById(coord); case_div.style.color = good_letter_text_color; coord = "case".concat(coord) case_div = document.getElementById(coord); case_div.style.backgroundColor = good_letter_color; } function change_color_bad_letter(coord){ var case_div = document.getElementById(coord); case_div.style.color = bad_letter_text_color; coord = "case".concat(coord) case_div = document.getElementById(coord); case_div.style.backgroundColor = bad_letter_color; } function change_color_mid_letter(coord){ var case_div = document.getElementById(coord); case_div.style.color = mid_letter_text_color; coord = "case".concat(coord) case_div = document.getElementById(coord); case_div.style.backgroundColor = mid_letter_color; } function key_color_good_letter(key){ var key_div = document.getElementById(key); key_div.style.backgroundColor = good_letter_color; } function key_color_bad_letter(key){ var key_div = document.getElementById(key); key_div.style.backgroundColor = bad_letter_color; } function key_color_mid_letter(key){ var key_div = document.getElementById(key); console.log(key_div.style.backgroundColor); if (key_div.style.backgroundColor != "rgb(152, 217, 139)"){ key_div.style.backgroundColor = mid_letter_color; } } //------------------------------END - Changement de couleur Keys et Divs------------------ //Fonction de mise a jour lettre par lettre function update(x) { if (free_box[1]==6) { } else { word += x.toLowerCase(); free = free_box.map(num=>{return String(num)}).join(""); // free prends la valeur des deux indices de la case courante concatenes (ex:[1,2] devient 12) document.getElementById(free).innerHTML = x; // on affiche la lettre dans la case du tableau d'affichage a l'aide de l'id free / free_box[1]+=1; if (word.length == 5){ if (!(arrWords.includes(word))){ //affichage de l'existance d'un mot ou non/ document.getElementById("info").innerHTML="NOT A WORD"; } } } } //Fonction de suppression de lettres dans divs function Supprimer() { document.getElementById("info").innerHTML=""; //reset l'information sur l'existance d'un mot ou non car il y a au max 4 lettres/ word = word.slice(0,-1); if (free_box[1]==1) { } else { free_box[1]+=-1; } free = free_box.map(num=>{return String(num)}).join(""); // free prends la valeur des deux indices de la case courante concatenes (ex:[1,2] devient 12) / document.getElementById(free).innerHTML = ""; //on retire la lettre dans la case du tableau d'affichage a l'aide de l'id free */ } //Fonction de vérification du mot function Enter() { if (verifWord() && free_box[0]!=6) { write_result(verifLettres(word)); free_box[0]+=1; free_box[1]=1; word=""; } if (verifWord() && free_box[0]==6) { write_result(verifLettres(word)); if(word != reponse){ document.getElementById("info").innerHTML=("The correct word was "+ reponse +". "); } } } //Fonction de vérification de la lettre : bonne place, bonne lettre + changement couleur clavier function verifLettres() { let verif = [0,0,0,0,0]; for(let i=0 ; i<5; i++){ if(word[i]==reponse[i]){ verif[i]=2; key_color_good_letter(word[i].toUpperCase()); } else{ if(reponse.includes(word[i])){ verif[i]=1; key_color_mid_letter(word[i].toUpperCase()); } else { key_color_bad_letter(word[i].toUpperCase()); } } } return verif; } //Fonction de vérification de la lettre : bonne place, bonne lettre function write_result(verif){ let pos = ""; pos = free_box[0].toString(); let good_letter = 0; for(let i=0; i<5; i++){ pos = (free_box[0]).toString(); pos = pos.concat((i+1).toString()); if (verif[i] == 2){ change_color_good_letter(pos); good_letter += 1; } else if ( verif[i]===1){ change_color_mid_letter(pos); } else{ change_color_bad_letter(pos); } } if (good_letter == 5){ document.getElementById("info").innerHTML=("Congratulations! The correct word was "+ reponse +". "); } } //Fonction de redémarrage du jeu function recommencer (){ word=""; let coord; for (let i=1; i<6; i++){ for (let j=1; j<7; j++){ coord = (j.toString() + i.toString()); document.getElementById(coord).innerHTML = ""; var case_div = document.getElementById("case" +coord); case_div.style.backgroundColor = base_letter_color; case_div = document.getElementById(coord); case_div.style.color = base_letter_text_color; } } var key_div; for (i of ["q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m"]){ key_div = document.getElementById(i.toUpperCase()); key_div.style.backgroundColor = base_letter_text_color; } document.getElementById("info").innerHTML=(""); aleatoire(); free_box = [1,1]; } //Fonction de lecture du fichier texte words.txt dans une variable arrwords function readTextFile(file) { //Merci StackOverflow var rawFile = new XMLHttpRequest(); rawFile.open("GET", file, false); rawFile.onreadystatechange = function (){ if(rawFile.readyState === 4){ if(rawFile.status === 200 || rawFile.status == 0){ var allText = rawFile.responseText; arrWords=allText.split(/\r?\n/); } } } rawFile.send(null); } //Fonction de vérification de l'existence d'un mot function verifWord() { let exist = false; if (word.length == 5){ if(arrWords.includes(word)){ exist = true; } else { //affichage de l'existance d'un mot ou non/ document.getElementById("info").innerHTML="NOT A WORD"; } } return exist; } //Fonction d'attribution d'un mot aléatoire à deviner function aleatoire() { let rand = Math.floor(Math.random() * arrWords.length); reponse = arrWords[rand]; console.log(reponse); } //Fonction pour lire les entrées du clavier physique function setMyKeyDownListener() { window.addEventListener("keydown", function(event){ event.preventDefault(); console.log(event.key) if (event.key == "Enter"){ Enter(); } else if (event.key == "Backspace") { Supprimer(); } else if (["q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m"].includes(event.key)){ update(event.key.toUpperCase()); } }); }