diff --git a/SwichGIT/src/js/main.js b/SwichGIT/src/js/main.js index 9f3a6e5..ee52356 100644 --- a/SwichGIT/src/js/main.js +++ b/SwichGIT/src/js/main.js @@ -10,7 +10,7 @@ var darktercia = "#606060"; var carteselect = []; var deckPartie = []; //Ensemble des cartes affichees a l'ecran var TasDuJEU = []; // Ensemble de toutes les cartes presente dans le jeu -var allMode = ["Solo", "Infini"]; // Défini tout les modes de Jeu +var allMode = ["Solo", "Infini", "Bac"]; // Défini tout les modes de Jeu var allDimension = ["4 * 3", "3 * 3", "3 * 2"]; var selectionMode = 0; var selectionDiemension = 0; @@ -87,7 +87,7 @@ class Carte { divcase.className = "item-form"; var ajoute = true; for (var j = 0; j < this.SesFigures.length; j++) { - if (i == this.SesFigures[j].X + (this.SesFigures[j].Y * 3)) { + if (i == this.SesFigures[j].pos) { try { ajoute = false; var uneFigure = new Figure(this.SesFigures[j].type, this.SesFigures[j].forme, this.SesFigures[j].X, this.SesFigures[j].Y); @@ -195,15 +195,20 @@ class Carte { class Figure { - constructor(leType, forme, Cox, Coy) { + constructor(leType, forme, Cox, Coy, couleur) { this.X = Cox; this.Y = Coy; this.type = []; for (var i = 0; i < leType.length; i++) { this.type.push(leType[i]); } + this.couleur = couleur; this.forme = forme; - var pos = this.X + this.Y * 3; + if (selectionDiemension == 2) { + this.pos = this.X + this.Y * 2; + } else { + this.pos = this.X + this.Y * 3; + } var divcase = document.createElement('div'); divcase.className = "item-form"; //Pour chaque type on regarde les formes @@ -220,25 +225,42 @@ class Figure { var unCercle = document.createElement('div'); unCercle.className = "anneau"; unCercle.style.backgroundColor = "var(--colorbase)"; - if (selectionDiemension == 0) { - if (pos == 0 || pos == 2 || pos == 9 || pos == 11) { + if (this.couleur != null) { + if (this.couleur == CouleurFigure.Couleur2) { unCercle.style.backgroundColor = "var(--colorone)"; - } - if (pos == 1 || pos == 10) { + } else if (this.couleur == CouleurFigure.Couleur3) { unCercle.style.backgroundColor = "var(--colortwo)"; - } - if (pos == 4 || pos == 7) { + } else if (this.couleur == CouleurFigure.Couleur4) { unCercle.style.backgroundColor = "var(--colorthree)"; } - } else if (selectionDiemension == 1) { - if (pos == 0 || pos == 2 || pos == 6 || pos == 8) { - unCercle.style.backgroundColor = "var(--colorone)"; - } - if (pos == 1 || pos == 7) { - unCercle.style.backgroundColor = "var(--colortwo)"; - } - if (pos == 4) { - unCercle.style.backgroundColor = "var(--colorthree)"; + } else { + if (selectionDiemension == 0) { + this.couleur = CouleurFigure.Couleur1; + if (this.pos == 0 || this.pos == 2 || this.pos == 9 || this.pos == 11) { + unCercle.style.backgroundColor = "var(--colorone)"; + this.couleur = CouleurFigure.Couleur2; + } + if (this.pos == 1 || this.pos == 10) { + unCercle.style.backgroundColor = "var(--colortwo)"; + this.couleur = CouleurFigure.Couleur3; + } + if (this.pos == 4 || this.pos == 7) { + unCercle.style.backgroundColor = "var(--colorthree)"; + this.couleur = CouleurFigure.Couleur4; + } + } else if (selectionDiemension == 1) { + if (this.pos == 0 || this.pos == 2 || this.pos == 6 || this.pos == 8) { + unCercle.style.backgroundColor = "var(--colorone)"; + this.couleur = CouleurFigure.Couleur2; + } + if (this.pos == 1 || this.pos == 7) { + unCercle.style.backgroundColor = "var(--colortwo)"; + this.couleur = CouleurFigure.Couleur3; + } + if (this.pos == 4) { + unCercle.style.backgroundColor = "var(--colorthree)"; + this.couleur = CouleurFigure.Couleur4; + } } } @@ -261,25 +283,42 @@ class Figure { unRond.className = "rond"; unRond.style.backgroundColor = "var(--colorbase)"; - if (selectionDiemension == 0) { - if (pos == 0 || pos == 2 || pos == 9 || pos == 11) { + if (this.couleur != null) { + if (this.couleur == CouleurFigure.Couleur2) { unRond.style.backgroundColor = "var(--colorone)"; - } - if (pos == 1 || pos == 10) { + } else if (this.couleur == CouleurFigure.Couleur3) { unRond.style.backgroundColor = "var(--colortwo)"; - } - if (pos == 4 || pos == 7) { + } else if (this.couleur == CouleurFigure.Couleur4) { unRond.style.backgroundColor = "var(--colorthree)"; } - } else if (selectionDiemension == 1) { - if (pos == 0 || pos == 2 || pos == 6 || pos == 8) { - unRond.style.backgroundColor = "var(--colorone)"; - } - if (pos == 1 || pos == 7) { - unRond.style.backgroundColor = "var(--colortwo)"; - } - if (pos == 4) { - unRond.style.backgroundColor = "var(--colorthree)"; + } else { + if (selectionDiemension == 0) { + this.couleur = CouleurFigure.Couleur1; + if (this.pos == 0 || this.pos == 2 || this.pos == 9 || this.pos == 11) { + unRond.style.backgroundColor = "var(--colorone)"; + this.couleur = CouleurFigure.Couleur2; + } + if (this.pos == 1 || this.pos == 10) { + unRond.style.backgroundColor = "var(--colortwo)"; + this.couleur = CouleurFigure.Couleur3; + } + if (this.pos == 4 || this.pos == 7) { + unRond.style.backgroundColor = "var(--colorthree)"; + this.couleur = CouleurFigure.Couleur4; + } + } else if (selectionDiemension == 1) { + if (this.pos == 0 || this.pos == 2 || this.pos == 6 || this.pos == 8) { + unRond.style.backgroundColor = "var(--colorone)"; + this.couleur = CouleurFigure.Couleur2; + } + if (this.pos == 1 || this.pos == 7) { + unRond.style.backgroundColor = "var(--colortwo)"; + this.couleur = CouleurFigure.Couleur3; + } + if (this.pos == 4) { + unRond.style.backgroundColor = "var(--colorthree)"; + this.couleur = CouleurFigure.Couleur4; + } } } divContainForm.appendChild(unRond); @@ -309,6 +348,13 @@ class Figure { } +const CouleurFigure = { + Couleur1: 'c1', + Couleur2: 'c2', + Couleur3: 'c3', + Couleur4: 'c4' +} + const FormeFigure = { Rond: 'rond', Carre: 'carre', @@ -364,6 +410,9 @@ function journuit() { //FONCTION GESTION DE GAME function lancerpartie() { + + lesPoints = 0; + var ready = true; //fonction de creation de partie a changer en fonction du test voulu if (selectionMode == 0) { @@ -372,8 +421,7 @@ function lancerpartie() { } else if (selectionDiemension == 1) { creePartieClassique3_3(); } else if (selectionDiemension == 2) { - ready = false; - window.alert("Mode de Jeu indisponible pour le moment") + creePartieClassique3_2(); } } else if (selectionMode == 1) { @@ -382,8 +430,10 @@ function lancerpartie() { } else if (selectionDiemension == 1) { creePartieInfini(3, 3); } else if (selectionDiemension == 2) { - creePartieInfini(3, 2); + creePartieInfini3_2(3, 2); } + } else if (selectionMode == 2) { + bacASable(); } if (ready) { document.getElementById("pageAccueil").style.visibility = "hidden"; @@ -411,7 +461,11 @@ function redistribuerPlateau() { redistribuer(); } else if (selectionMode == 1) { for (var i = 0; i < 16; i++) { - remplacerLaCarte(deckPartie[i]) + if (selectionDiemension == 2) { + remplacerLaCarte3_2(deckPartie[i]); + } else { + remplacerLaCarte(deckPartie[i]); + } } } afficherCartes(deckPartie); @@ -446,6 +500,244 @@ function redistribuer() { //================================================================================================================================================================ //Fonction creations de game +function genererTouteslesCartes3_2Possibles() { + deckPartie = []; + carteselect = []; + + while (document.getElementById("containcards").firstElementChild != null) { + document.getElementById("containcards").firstElementChild.remove(); + } + for (var i = 0; i < 2; i++) { + for (var j = 0; j < 2; j++) { + for (var k = 0; k < 6; k++) { + + //Création de la grande figure + for (var h = 0; h < 2; h++) { + var AllFigure = []; + + //Création de la petite figure en fonction de sa place et de la boucle + if (i == 0) { + if (j == 0) { + var uneFigure = new Figure(TypeFigure.Petit, FormeFigure.Rond, 0, i, CouleurFigure.Couleur2); + } else { + var uneFigure = new Figure(TypeFigure.Petit, FormeFigure.Rond, 0, i, CouleurFigure.Couleur3); + } + } else { + if (j == 0) { + var uneFigure = new Figure(TypeFigure.Petit, FormeFigure.Rond, 0, i, CouleurFigure.Couleur1); + } else { + var uneFigure = new Figure(TypeFigure.Petit, FormeFigure.Rond, 0, i, CouleurFigure.Couleur4); + } + } + + AllFigure.push(uneFigure); + + //Verification de l'effet mirroir sur les cartes ayant un point central + var mirroir = true; + if (Math.floor(k / 2) == 2 && i == 1) { + mirroir = false; + } + + if (k != i * 2) { + + if (k == 2 || k == 3) { + + if (h == 0) { + + var uneMoyenFigure = new Figure(TypeFigure.Moyen, FormeFigure.Rond, k % 2, Math.floor(k / 2), CouleurFigure.Couleur1); + } else { + + var uneMoyenFigure = new Figure(TypeFigure.Moyen, FormeFigure.Rond, k % 2, Math.floor(k / 2), CouleurFigure.Couleur4); + } + + } else { + if (h == 0) { + + var uneMoyenFigure = new Figure(TypeFigure.Moyen, FormeFigure.Rond, k % 2, Math.floor(k / 2), CouleurFigure.Couleur2); + } else { + + var uneMoyenFigure = new Figure(TypeFigure.Moyen, FormeFigure.Rond, k % 2, Math.floor(k / 2), CouleurFigure.Couleur3); + } + + } + if (mirroir) { + AllFigure.push(uneMoyenFigure); + var uneCarte = new Carte(deckPartie.length + 1, AllFigure, 3, 2); + deckPartie.push(uneCarte); + } + } + + } + + } + } + } + return deckPartie; +} + + +function changerlesCartes3_2() { + while (carteselect.length != 0) { + remplacerLaCarte3_2(carteselect[0]); + carteselect.shift(); + } + rechargerGAME(); +} + +function remplacerLaCarte3_2(uneCarte) { + pos = deckPartie.indexOf(uneCarte); + var AllFigure = []; + var Cox1, Coy1, Cox2, Coy2; + + var numCouleur = getRandom(0, 1); + var laCouleur; + + Cox1 = getRandom(0, uneCarte.column - 1); + Coy1 = getRandom(0, uneCarte.row - 1); + if (Cox1 + 2 * Coy1 == 2 || Cox1 + 2 * Coy1 == 3) { + if (numCouleur == 0) { + laCouleur = CouleurFigure.Couleur1; + } else { + laCouleur = CouleurFigure.Couleur4; + } + } else { + if (numCouleur == 0) { + laCouleur = CouleurFigure.Couleur2; + } else { + laCouleur = CouleurFigure.Couleur3; + } + } + AllFigure.push(new Figure(new Array(TypeFigure.Petit), FormeFigure.Rond, Cox1, Coy1, laCouleur)); + + Cox2 = getRandom(0, uneCarte.column - 1); + Coy2 = getRandom(0, uneCarte.row - 1); + + while (Cox2 == Cox1 && Coy1 == Coy2) { + Cox2 = getRandom(0, uneCarte.column - 1); + Coy2 = getRandom(0, uneCarte.row - 1); + } + if (Cox2 + 2 * Coy2 == 2 || Cox2 + 2 * Coy2 == 3) { + if (numCouleur == 0) { + laCouleur = CouleurFigure.Couleur1; + } else { + laCouleur = CouleurFigure.Couleur4; + } + } else { + if (numCouleur == 0) { + laCouleur = CouleurFigure.Couleur2; + } else { + laCouleur = CouleurFigure.Couleur3; + } + } + AllFigure.push(new Figure(new Array(TypeFigure.Moyen), FormeFigure.Rond, Cox2, Coy2, laCouleur)); + //Code de Generation de Figure + var newCarte = new Carte(pos + 1, AllFigure, uneCarte.row, uneCarte.column); + deckPartie[pos] = newCarte; +} + +function creePartieInfini3_2(nbRow, nbColum) { + deckPartie = []; + carteselect = []; + while (document.getElementById("containcards").firstElementChild != null) { + document.getElementById("containcards").firstElementChild.remove(); + } + for (var j = 1; j <= 16; j++) { + + var numCouleur = getRandom(0, 1); + var laCouleur; + var AllFigure = []; + var Cox1, Coy1, Cox2, Coy2; + + Cox1 = getRandom(0, nbColum - 1); + Coy1 = getRandom(0, nbRow - 1); + if (Cox1 + 2 * Coy1 == 2 || Cox1 + 2 * Coy1 == 3) { + if (numCouleur == 0) { + laCouleur = CouleurFigure.Couleur1; + } else { + laCouleur = CouleurFigure.Couleur4; + } + } else { + if (numCouleur == 0) { + laCouleur = CouleurFigure.Couleur2; + } else { + laCouleur = CouleurFigure.Couleur3; + } + } + AllFigure.push(new Figure(new Array(TypeFigure.Petit), FormeFigure.Rond, Cox1, Coy1, laCouleur)); + + Cox2 = getRandom(0, nbColum - 1); + Coy2 = getRandom(0, nbRow - 1); + + while (Cox2 == Cox1 && Coy1 == Coy2) { + Cox2 = getRandom(0, nbColum - 1); + Coy2 = getRandom(0, nbRow - 1); + } + + if (Cox2 + 2 * Coy2 == 2 || Cox2 + 2 * Coy2 == 3) { + if (numCouleur == 0) { + laCouleur = CouleurFigure.Couleur1; + } else { + laCouleur = CouleurFigure.Couleur4; + } + } else { + if (numCouleur == 0) { + laCouleur = CouleurFigure.Couleur2; + } else { + laCouleur = CouleurFigure.Couleur3; + } + } + + AllFigure.push(new Figure(new Array(TypeFigure.Moyen), FormeFigure.Rond, Cox2, Coy2, laCouleur)); + //Code de Generation de Figure + var uneCarte = new Carte(j, AllFigure, nbRow, nbColum); + + deckPartie.push(uneCarte); + + document.getElementById("containcards").appendChild(uneCarte.link); + } +} + + +function creePartieClassique3_2() { + TasDuJEU = genererTouteslesCartes3_2Possibles(); + deckPartie = []; + for (var i = 0; i < TasDuJEU.length; i++) { + CodeRotation = getRandom(0, 3); + if (CodeRotation == 0) { + TasDuJEU[i] = TasDuJEU[i]; + } else if (CodeRotation == 1) { + TasDuJEU[i] = Horizontale(TasDuJEU[i]); + } else if (CodeRotation == 2) { + TasDuJEU[i] = Verticale(TasDuJEU[i]); + } else if (CodeRotation == 3) { + TasDuJEU[i] = Verticale(TasDuJEU[i]); + TasDuJEU[i] = Horizontale(TasDuJEU[i]); + } + } + for (var i = 0; i < 16; i++) { + var index = getRandom(0, TasDuJEU.length - 1) + var dejaPresente = false;//Permet de savoir si la carte est deja dans la liste + for (var j = 0; j < deckPartie.length; j++) { + if (TasDuJEU[index].identifiant == deckPartie[j].identifiant) { + dejaPresente = true; + } + } + while (dejaPresente == true) { + index = getRandom(0, TasDuJEU.length - 1) + dejaPresente = false;//Permet de savoir si la carte est deja dans la liste + for (var j = 0; j < deckPartie.length; j++) { + if (TasDuJEU[index].identifiant == deckPartie[j].identifiant) { + dejaPresente = true; + } + } + } + + deckPartie.push(copieCarte(TasDuJEU[index])); + } + afficherCartes(deckPartie); +} + + function genererTouteslesCartes3_3Possibles() { deckPartie = []; carteselect = []; @@ -550,8 +842,6 @@ function creePartieClassique3_3() { afficherCartes(deckPartie); } - - function genererTouteslesCartes3_4Possibles() { deckPartie = []; carteselect = []; @@ -1152,7 +1442,11 @@ function testPourJeuInfini() { solution = false; lesPoints += carteselect.length; document.getElementById("affPoints").textContent = 'Score : ' + lesPoints; - changerlesCartes(); + if (selectionDiemension == 2) { + changerlesCartes3_2(); + } else { + changerlesCartes(); + } } } if (solution) { @@ -1227,7 +1521,7 @@ function copieCarte(uneCarte) { } var AllFigure = []; for (var i = 0; i < uneCarte.SesFigures.length; i++) { - AllFigure.push(new Figure(uneCarte.SesFigures[i].type, uneCarte.SesFigures[i].forme, uneCarte.SesFigures[i].X, uneCarte.SesFigures[i].Y)); + AllFigure.push(new Figure(uneCarte.SesFigures[i].type, uneCarte.SesFigures[i].forme, uneCarte.SesFigures[i].X, uneCarte.SesFigures[i].Y, uneCarte.SesFigures[i].couleur)); } var carte = new Carte(uneCarte.getIdentifiant, AllFigure, uneCarte.row, uneCarte.column); carte.Matrice = copieMatrice(uneCarte.Matrice, uneCarte.row, uneCarte.column); @@ -1419,6 +1713,21 @@ function doublonInterdit(uneCarte) { return false; } +function bacASable() { + var lesCartes = []; + + var LesFigure = []; + var uneFigure = new Figure(TypeFigure.Petit, FormeFigure.Rond, 0, 0, CouleurFigure.Couleur1); + LesFigure.push(uneFigure); + var uneFigure = new Figure(TypeFigure.Petit, FormeFigure.Rond, 1, 0, CouleurFigure.Couleur2); + LesFigure.push(uneFigure); + var uneCarte = new Carte(1, LesFigure, 3, 2); + + lesCartes.push(uneCarte); + afficherCartes(lesCartes); + + +}