235 lines
7.6 KiB
JavaScript
235 lines
7.6 KiB
JavaScript
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 <b> "+ reponse +"</b>. <button style=\"width:100px;\" type=\"button Z\" onclick=\"recommencer()\">Start Over</button>");
|
|
}
|
|
}
|
|
}
|
|
|
|
//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 <b> "+ reponse +"</b>. <button style=\"width:100px;\" type=\"button Z\" onclick=\"recommencer()\">Start Over</button>");
|
|
}
|
|
}
|
|
|
|
//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());
|
|
}
|
|
});
|
|
}
|