projet_prog_web/script.js

212 lines
5.9 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();
function change_color_good_letter(coord){
var case_div = document.getElementById(coord);
case_div.style.color = good_letter_text_color;
coord = "case".concat(coord)
console.log(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)
console.log(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)
console.log(coord)
case_div = document.getElementById(coord);
case_div.style.backgroundColor = mid_letter_color;
}
function key_color_good_letter(key){
console.log(key)
var key_div = document.getElementById(key);
key_div.style.backgroundColor = good_letter_color;
}
function key_color_bad_letter(key){
console.log(key)
var key_div = document.getElementById(key);
key_div.style.backgroundColor = bad_letter_color;
}
function key_color_mid_letter(key){
console.log(key)
var key_div = document.getElementById(key);
key_div.style.backgroundColor = mid_letter_color;
}
function update(x) {
if (free_box[1]==6) {
}
else {
word += x.toLowerCase();
free = free_box.map(num=>{return String(num)}).join("");
console.log(free);
document.getElementById(free).innerHTML = x;
free_box[1]+=1;
}
}
function Supprimer() {
document.getElementById("info").innerHTML="";
word = word.slice(0,-1);
if (free_box[1]==1) {
}
else {
free_box[1]+=-1;
}
free = free_box.map(num=>{return String(num)}).join("");
document.getElementById(free).innerHTML = "";
}
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>");
}
}
}
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());
}
}
}
console.log(verif);
return verif;
}
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>");
}
}
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;
}
}
document.getElementById("info").innerHTML=("");
aleatoire();
free_box = [1,1];
}
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);
}
function verifWord() {
let exist = false;
if (word.length == 5){
if(arrWords.includes(word)){
exist = true;
}
else {
document.getElementById("info").innerHTML="NOT A WORD";
}
}
return exist;
}
function aleatoire() {
let rand = Math.floor(Math.random() * arrWords.length);
reponse = arrWords[rand];
console.log(reponse);
}
function setMyKeyDownListener() {
window.addEventListener("keydown",
function(event){
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());
}
});
}