algolfier 4 years ago
commit 2e88796f60

Binary file not shown.

@ -0,0 +1,148 @@
#COMMENT GENERER DES CARTES SWISH 3*4#
##Sommaire##
- Introduction
- Les Cartes Possibles
- Les Types de Cartes
- Génération des doublons
- Conclusion
##Introduction ##
On peut croire qu'il existe un très grand nombre de possibilités de cartes à cause du nombre d'emplacements de Figures possible. 3*4 soit 12 au total.
Cependant, le jeu physique de swish utilise des cartes transparentes autirisant la rotation de celles-ci. Dès lors, plusieurs **variantes** d'une même carte sont possibles en retournant la carte de départ comme ici :
<img src="img/Parallélisme.png" alt="Markdown Monster icon"/>
Le but de cette étude est donc de savoir qu'elles sont les cartes possibles en prenant en compte toutes les variantes et comment générer le jeu physique Swish.
## Les Cartes Possibles ##
Pour éviter d'énumérer toutes les cartes au risque d'avoir des doublons. Nous devons comprendre le comportement des rotations en s'aidant d'un repère.
Dans notre cas, on sait que chaque carte possède 2 Figures :
- Une petite : un point
- Une Grande : un cercle
Pour cette étude nous allons choisir le point de chaque carte comme repère.
Un point sur une carte peut avoir plusieurs positions. Il faut donc déterminer quelles sont les positions jumelées, c'est-à-dire, les positions qu'un point peut avoir en faisant des rotations.
Nous allons nous aider du code couleur présent sur les cartes.
### Point Bleu et Rouge ###
Ces points possèdent 4 positions jumelées chacun. Comme ici :
<img src="img/ParallélismePointBleu.png" alt="Markdown Monster icon"/>
<img src="img/ParallélismePointRouge.png" alt="Markdown Monster icon"/>
### Point Vert et Violet###
Ces points possèdent 2 positions jumelées chacun. La différence entre ces points et les autres réside dans le fait qu'il existe une symétrie axiale causée par le nombre impair de colonne sur les cartes.
<img src="img/ParallélismePointVert.png" alt="Markdown Monster icon"/>
<img src="img/ParallélismePointViolet.png" alt="Markdown Monster icon"/>
----
Maintenant que nous savons les positions de point possible. Pour chaque couleur de point, (Rouge,Bleu,Vert,Violet), nous allons garder qu'une seule position d'un point (haut-droit) puis énumerer toutes les positions qu'un cercle peut prendre sur une carte afin de créer un ensemble de carte Swish.
### Point Bleu et Rouge ###
Sur une carte il existe 12 positions différentes causées par le quadrillage 3*4 d'une carte. Si l'une des positions est déjà prise par un point (Bleu ou Rouge) le cercle peut alors avoir 11 positions possibles comme ici :
<img src="img/PossibiliteesBleuRouge.png" alt="Markdown Monster icon"/>
Pour ces points il existe donc 11 possibilitées de carte chacun soit 22 cartes.
### Point Vert et Violet ###
Pour ces points il existe une symétrie axiale déjà énumérée au-dessus à cause du nombre impair de colonne sur une carte. Lorsqu'un point se situe sur la colonne centrale, une symétrie se crée entre les deux autres colonnes. Ainsi les cercles ne possèdent pas 11 positions possibles mais plus que 7 comme ici:
<img src="img/PossibiliteesVertViolet.png" alt="Markdown Monster icon"/>
Pour ces points il existe donc 7 possibilitées de carte chacun soit 14 cartes.
**Au total nous trouvons 36 cartes possibles en prenant en compte les rotations**
----
##Les Types De Carte##
Après avoir énuméré toutes les cartes possibles. Nous pouvons analyser les cartes crées et repérer des propriétés.
En effet nous pouvons déjà séparer toutes les cartes en deux familles :
### Cartes unies###
Cette famille contient uniquement les cartes possèdant un point et un cercle de même couleur.
<img src="img/CarteUniRougeBleu.png" alt="Markdown Monster icon"/>
La propriété principale d'une carte unie est que sa **complémentaire** (carte avec laquelle elle forme un assemblage de 2 cartes) est elle-même. Cette propriété va nous aider pour la génération des cartes plus tard.
### Cartes bicolores###
Cette famille contient toutes les autres cartes possibles exceptées les cartes unies. C'est-à-dire les cartes composées d'un point et d'un cercle de couleurs différentes.
À la différence des cartes unies, la complémentaire d'une carte bicolore n'est pas elle-même. Mais une carte différente composée d'un cercle et d'un point de couleur et position opposée afin de former un assemblage correct. Comme-ici :
<img src="img/DemonstrationAssemblageCarteBicolores.png" alt="Markdown Monster icon"/>
Nous savons qu'il existe 36 possibilités de cartes. 8 d'entre elles sont des cartes unies. Il reste donc 28 cartes bicolores que l'on peut rassembler en 14 paires de cartes complémentaires.
Ces 14 paires peuvent être elles aussi regrouper en fonction de leurs duos de couleurs formés par leurs figures.
Par exemple voici les familles des duos (Vert-Bleu) et (Violet-Rouge) composées de 2 paires de cartes complémentaires chacune:
<img src="img/FamilleDuosBleuVert-RougeViolet.png" alt="Markdown Monster icon"/>
**Remarque: Le fait de regrouper les cartes bicolores en famille de plus en plus précise va nous aider à comprendre le principe de génération des cartes.**
##Génération des doublons##
Un jeu de cartes Swish contient 60 cartes. Sachant qu'il n'existe que 36 possibilités de cartes. Nous savons donc que le jeu possède des doublons.
Cependant, si nous doublons toutes les cartes 36*2, nous obtenons un tas de 72 cartes. Il y a donc 12 cartes en trop. 12 cartes qui n'ont pas de doublons dans le paquet mais lesquels ?
En réalité, les 12 cartes manquantes sont en lien avec les paires complémentaires des familles de duos de couleurs vues au-dessus.
En effet, il existe un total de 6 familles de duos de couleurs :
###Bleu-Rouge###
<img src="img/FamilleDuosBleuRouge.png" alt="Markdown Monster icon"/>
###Bleu-Vert###
<img src="img/FamilleDuosBleuVert.png" alt="Markdown Monster icon"/>
###Bleu-Violet###
<img src="img/FamilleDuosBleuViolet.png" alt="Markdown Monster icon"/>
###Rouge-Vert###
<img src="img/FamilleDuosRougeVert.png" alt="Markdown Monster icon"/>
###Rouge-Violet###
<img src="img/FamilleDuosRougeViolet.png" alt="Markdown Monster icon"/>
###Violet-Vert###
<img src="img/FamilleDuosVertViolet.png" alt="Markdown Monster icon"/>
À cause de la symétrie axiale causée par le nombre impair de colonne sur les cartes, les familles de duos possèdent un nombre de cartes et donc de paires différents.
Pour générer les 60 cartes, nous devons doubler toutes les cartes unies de façon à pouvoir former les paires complémentaires. Sachant qu'il y a 8 cartes unies nous obtenons 16 cartes pour le moment.
Pour les cartes bicolores il faut s'intéresser aux familles de duos de couleurs. Pour chaque famille il existe un nombre de paires de cartes complémentaires. La logique est très simple, nous allons doubler toutes les paires sauf une.
**Par exemple** pour la famille (Bleu-Vert) nous avons 2 paires de cartes complémentaires :
<img src="img/FamilleDuosBleuVert.png" alt="Markdown Monster icon"/>
**Mais une seule est doublée pour obtenir ces cartes dans le jeu physique**
<img src="img/DoublonBleuVert.png" alt="Markdown Monster icon"/>
**REMARQUE** : **Ce processus est utilisé pour toutes les familles de duos sauf les familles (Vert-Violet) et (Bleu-Rouge) qui sont des familles particulières.**
En effet pour la famille (Vert-Violet)
**Nous allons doubler toutes les paires.**
Tandis que pour la famille (Bleu-Rouge).
**Deux paires ne vont pas être doublées.** Nous avons finalement nos 60 cartes dans le paquet en évitant de doubler un total de 12 cartes.
##CONCLUSION##
En suivant le processus nous avons réussi à enlever 12 cartes du jeu et ainsi obtenir le tas de 60 cartes que le jeu physique utilise.
**Mais pourquoi enlever 12 cartes ?**
Cela peut s'expliquer car les règles du jeu précisent que durant une partie, 16 cartes sont présentées aux joueurs. Dans des cas extrêmement rares, les 16 cartes ne peuvent être assemblées. Enlever ces 12 cartes, c'est tout simplement réduire les possibilités pour qu'un événement pareil se déroule dans une partie même si les possibilitées ne sont tout de même pas nul...

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -19,11 +19,7 @@
}
@font-face {
font-family: "Montserrat";
src: url("/fonts/MonstMontserrat-Black.woff") format("woff"),
url("/fonts/MonstMontserrat-Black.woff2") format("woff2");
}
a {
cursor: pointer;

@ -76,9 +76,9 @@
<div class="Mode_Forme">
<div class="titre">
<h3>Mode Forme</h3>
</div>
</div>
@ -146,7 +146,7 @@
<div id="pageGame">
<div class="menuhaut">
<div id="Redistribution">
<a onclick="creePartieDeTest()" id="relancerbtn">
<a onclick="redistribuer()" id="relancerbtn">
<div id="contourbuttonvalider">
<div class="bouttonvalider">
<h1 id="textjouer2">RELANCER</h1>
@ -155,7 +155,7 @@
</a>
</div>
<div id="Redistribution2">
<a id="relancerbtn" onclick="test()">
<a id="relancerbtn" onclick="testPourJeuClassique()">
<div id="contourbuttonvalider">
<div class="bouttonvalider2">
<h1 id="btnvalider2">VALIDER</h1>

@ -8,7 +8,9 @@ var darkprima = "#474747";
var darkseconda = "#393939";
var darktercia = "#606060";
var carteselect = [];
var deckPartie = []; //Ensemble des cartes affichées à l'écran
var deckPartie = []; //Ensemble des cartes affichées a l'ecran
var TasDuJEU = []; // Ensemble de toutes les cartes présente dans le jeu
@ -39,15 +41,19 @@ class Carte {
var divcase = document.createElement('div');
divcase.className = "item-form";
var ajouté = true;
var ajoute = true;
for (var j = 0; j < this.SesFigures.length; j++) {
if (i == this.SesFigures[j].X + (this.SesFigures[j].Y * 3)) {
ajouté = false;
var uneFigure = new Figure(this.SesFigures[j].type[0], this.SesFigures[j].forme, this.SesFigures[j].X, this.SesFigures[j].Y);
divconteneur.appendChild(uneFigure.CodeHTML);
try {
ajoute = false;
var uneFigure = new Figure(this.SesFigures[j].type, this.SesFigures[j].forme, this.SesFigures[j].X, this.SesFigures[j].Y);
divconteneur.appendChild(this.SesFigures[j].CodeHTML);
} catch (e) {
window.alert(this.SesFigures[j].type.length).length
}
}
}
if (ajouté) {
if (ajoute) {
divconteneur.appendChild(divcase);
}
}
@ -57,8 +63,11 @@ class Carte {
this.link.onclick = function selectioncarte() {
var macarte = this.id;
var lacarte = "card" + macarte;
var laCarte = deckPartie[this.id - 1]; //Carte liée avec le code HTML
for (var i = 0; i < deckPartie.length; i++) {
if (this.id == deckPartie[i].identifiant) {
var laCarte = deckPartie[i];//Carte liée avec le code HTML
}
}
if (document.getElementById(lacarte).style.boxShadow != "") {
var pos = carteselect.indexOf(laCarte);
carteselect.splice(pos, 1);
@ -146,7 +155,9 @@ class Figure {
this.X = Cox;
this.Y = Coy;
this.type = [];
this.type.push(leType);
for (var i = 0; i < leType.length; i++) {
this.type.push(leType[i]);
}
this.forme = forme;
var pos = this.X + this.Y * 3;
var divcase = document.createElement('div');
@ -237,9 +248,9 @@ const FormeFigure = {
};
const TypeFigure = {
Petit: 'petit',
Moyen: 'moyen',
Grand: 'grand'
Petit: 'p',
Moyen: 'm',
Grand: 'g'
};
@ -299,7 +310,7 @@ function journuit() {
function lancerpartie() {
document.getElementById("pageAccueil").style.visibility = "hidden";
//fonction de création de partie à changer en fonction du test voulu
genererTouteslesCartes3_4Possibles();
creePartieClassique();
document.getElementById("pageGame").style.visibility = "visible";
}
@ -316,6 +327,32 @@ function rechargerGAME() {
document.getElementById("containcards").appendChild(deckPartie[i].getHTML);
}
}
function redistribuer() {
deckPartie = [];
for (var i = 0; i < 16; i++) {
var index = getRandom(0, TasDuJEU.length - 1)
var dejaPresente = false;//Permet de savoir si la carte est déjà 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 déjà 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);
}
//================================================================================================================================================================
//Fonction créations de game
@ -325,30 +362,97 @@ function genererTouteslesCartes3_4Possibles() {
while (document.getElementById("containcards").firstElementChild != null) {
document.getElementById("containcards").firstElementChild.remove();
}
for (var k = 0; k < 2; k++) {
for (var j = 0; j < 2; j++) {
for (var i = 0; i < 12; i++) {
var AllFigure = [];
AllFigure.push(new Figure(TypeFigure.Petit, FormeFigure.Rond, k, j));
if (i != k + 3 * j) {
if (k == 0) {
AllFigure.push(new Figure(TypeFigure.Moyen, FormeFigure.Rond, i % 3, Math.floor(i / 3)));
var uneCarte = new Carte(i + 12 * j , AllFigure);
deckPartie.push(uneCarte);
document.getElementById("containcards").appendChild(uneCarte.link);
} else if (i != 2 && i != 5 && i != 8 && i != 11) {
AllFigure.push(new Figure(TypeFigure.Moyen, FormeFigure.Rond, i % 3, Math.floor(i / 3)));
var uneCarte = new Carte(i + 12 * (1 + k + j), AllFigure);
deckPartie.push(uneCarte);
document.getElementById("containcards").appendChild(uneCarte.link);
for (var j = 0; j < 2; j++) {
for (var i = 0; i < 12; i++) {
var AllFigure = [];
AllFigure.push(new Figure(new Array(TypeFigure.Petit), FormeFigure.Rond, 0, j));
if (i != 3 * j) {
AllFigure.push(new Figure(new Array(TypeFigure.Moyen), FormeFigure.Rond, i % 3, Math.floor(i / 3)));
var uneCarte = new Carte(deckPartie.length + 1, AllFigure);
deckPartie.push(uneCarte);
if (!doublonInterdit(uneCarte)) {
AllFigure = [];
AllFigure.push(new Figure(new Array(TypeFigure.Petit), FormeFigure.Rond, 0, j));
AllFigure.push(new Figure(new Array(TypeFigure.Moyen), FormeFigure.Rond, i % 3, Math.floor(i / 3)));
var unDoublon = new Carte(deckPartie.length + 1, AllFigure);
deckPartie.push(unDoublon);
}
}
}
}
for (var j = 0; j < 2; j++) {
for (var i = 0; i < 12; i++) {
var AllFigure = [];
AllFigure.push(new Figure(new Array(TypeFigure.Petit), FormeFigure.Rond, 1, j));
if (i != 3 * j + 1) {
if (i != 2 && i != 5 && i != 8 && i != 11) {
AllFigure.push(new Figure(new Array(TypeFigure.Moyen), FormeFigure.Rond, i % 3, Math.floor(i / 3)));
var uneCarte = new Carte(deckPartie.length + 1, AllFigure);
deckPartie.push(uneCarte);
if (!doublonInterdit(uneCarte)) {
AllFigure = [];
AllFigure.push(new Figure(new Array(TypeFigure.Petit), FormeFigure.Rond, 1, j));
AllFigure.push(new Figure(new Array(TypeFigure.Moyen), FormeFigure.Rond, i % 3, Math.floor(i / 3)));
var unDoublon = new Carte(deckPartie.length + 1, AllFigure);
deckPartie.push(unDoublon);
}
}
}
}
}
return deckPartie;
}
function afficherCartes(Liste) {
while (document.getElementById("containcards").firstElementChild != null) {
document.getElementById("containcards").firstElementChild.remove();
}
for (var i = 0; i < Liste.length; i++) {
document.getElementById("containcards").appendChild(Liste[i].link);
}
}
function creePartieClassique() {
TasDuJEU = genererTouteslesCartes3_4Possibles();
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 déjà 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 déjà 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 creePartieDeTest() {
function creePartieInfini() {
deckPartie = [];
carteselect = [];
while (document.getElementById("containcards").firstElementChild != null) {
@ -361,7 +465,7 @@ function creePartieDeTest() {
Cox1 = getRandom(0, 2);
Coy1 = getRandom(0, 3);
AllFigure.push(new Figure(TypeFigure.Petit, FormeFigure.Rond, Cox1, Coy1));
AllFigure.push(new Figure(new Array(TypeFigure.Petit), FormeFigure.Rond, Cox1, Coy1));
Cox2 = getRandom(0, 2);
Coy2 = getRandom(0, 3);
@ -370,7 +474,7 @@ function creePartieDeTest() {
Cox2 = getRandom(0, 2);
Coy2 = getRandom(0, 3);
}
AllFigure.push(new Figure(TypeFigure.Moyen, FormeFigure.Rond, Cox2, Coy2));
AllFigure.push(new Figure(new Array(TypeFigure.Moyen), FormeFigure.Rond, Cox2, Coy2));
//Code de Génération de Figure
var uneCarte = new Carte(j, AllFigure);
@ -381,7 +485,41 @@ function creePartieDeTest() {
}
//========================================================================================================================================================
//Changer les cartes
//Changer les cartes et Changer les cartes de Tas de jeu
function changerlesCartesDeTasDeJeu() {
while (carteselect.length != 0) {
var unIndex = TasDuJEU.indexOf(carteselect[0]);
TasDuJEU.splice(unIndex, 1);
if (TasDuJEU.length > 16) {
var index2 = getRandom(0, TasDuJEU.length - 1)
var dejaPresente = false;//Permet de savoir si la carte est déjà dans la liste
for (var j = 0; j < deckPartie.length; j++) {
if (TasDuJEU[index2].identifiant == deckPartie[j].identifiant) {
dejaPresente = true;
}
}
while (dejaPresente == true) {
index2 = getRandom(0, TasDuJEU.length - 1)
dejaPresente = false;//Permet de savoir si la carte est déjà dans la liste
for (var j = 0; j < deckPartie.length; j++) {
if (TasDuJEU[index2].identifiant == deckPartie[j].identifiant) {
dejaPresente = true;
}
}
}
unIndex = deckPartie.indexOf(carteselect[0]);
deckPartie[unIndex] = TasDuJEU[index2];
} else {
unIndex = deckPartie.indexOf(carteselect[0]);
deckPartie.splice(unIndex, 1);
}
carteselect.shift();
}
afficherCartes(deckPartie);
}
function changerlesCartes() {
while (carteselect.length != 0) {
@ -398,7 +536,7 @@ function remplacerLaCarte(uneCarte) {
Cox1 = getRandom(0, 2);
Coy1 = getRandom(0, 3);
AllFigure.push(new Figure(TypeFigure.Petit, FormeFigure.Rond, Cox1, Coy1));
AllFigure.push(new Figure(new Array(TypeFigure.Petit), FormeFigure.Rond, Cox1, Coy1));
Cox2 = getRandom(0, 2);
Coy2 = getRandom(0, 3);
@ -407,7 +545,8 @@ function remplacerLaCarte(uneCarte) {
Cox2 = getRandom(0, 2);
Coy2 = getRandom(0, 3);
}
AllFigure.push(new Figure(TypeFigure.Moyen, FormeFigure.Rond, Cox2, Coy2));
AllFigure.push(new Figure(new Array(TypeFigure.Moyen), FormeFigure.Rond, Cox2, Coy2));
//Code de Génération de Figure
var newCarte = new Carte(pos + 1, AllFigure);
deckPartie[pos] = newCarte;
}
@ -478,49 +617,115 @@ function creaMatrice(row, column) {
//=================================================================================
//chercheCombi => Compte les combinainsons de 2 cartes à l'écran
function chercheCombi2() {
var Cptsolution = 0;
for (var i = 0; i < 15; i++) {
for (var j = 0; j < 15 - i; j++) {
var DeckTeste = [];
var tabCode = [];
var tab = [];
DeckTeste.push(deckPartie[i]);
DeckTeste.push(deckPartie[j+i+1]);
var copie = [];
copie.splice(0, DeckTeste.length);
DeckTeste.splice(0, DeckTeste.length);
tab.splice(0, DeckTeste.length);
tabCode.splice(0, DeckTeste.length);
DeckTeste.push(copieCarte(deckPartie[i]));
DeckTeste.push(copieCarte(deckPartie[j + i + 1]));
for (var h = 0; h < DeckTeste.length; h++) {
copie.push(DeckTeste[i]);
}
tab = AssemblageARBRE(DeckTeste, DeckTeste[0]);
window.alert("Combinaison : "+DeckTeste[i].getIdentifiant+DeckTeste[j+i+1].getIdentifiant); //+1 au niveau des identifiants
tab = AssemblageARBRE(copieListeDeCarte(DeckTeste), copieCarte(DeckTeste[0]));
var solution = true;
var tabCode = [];
for (var i = 0; i < tab.length; i++) {
tabCode.push(tab[i].code);
for (var h = 0; h < tab.length; h++) {
tabCode.push(tab[h].code);
}
window.alert(tabCode);
for (var i = 0; i < tab.length; i++) {
if (tab[i].code == carteselect.length) {
for (var g = 0; g < tab.length; g++) {
if (tab[g].code == DeckTeste.length) {
solution = false;
//window.alert("yo mec");
}
}
if (solution) {
if (!solution) {
Cptsolution++;
window.alert("Combinaison : ", DeckTeste[i].getIdentifiant,DeckTeste[j].getIdentifiant);
window.alert("Combinaison a 2 trouvé: " + (i + 1) + " " + (i + j + 2));
}
}
}
window.alert("Nombre de solution à 2 cartes : " + Cptsolution);
}
//=================================================================================
//chercheCombi => Compte les combinainsons de 3 cartes à l'écran
function chercheCombi3() {
var Cptsolution = 0;
for (var i = 0; i < 15; i++) { //Partie fixe
for (var j = 0; j < 15 - i; j++) { //Partie movible 1
for (var k = 0; k < 15 - j; k++) { //Partie movible 2
var DeckTeste = [];
var tabCode = [];
var tab = [];
var copie = [];
copie.splice(0, DeckTeste.length);
DeckTeste.splice(0, DeckTeste.length);
tab.splice(0, DeckTeste.length);
tabCode.splice(0, DeckTeste.length);
DeckTeste.push(deckPartie[i]);
DeckTeste.push(deckPartie[j + i + 1]);
DeckTeste.push(deckPartie[k + j + i + 2]);
window.alert("Nombre de solution à 2 cartes : ", Cptsolution);
for (var h = 0; h < DeckTeste.length; h++) {
copie.push(DeckTeste[i]);
}
for (var z = 0; z < DeckTeste; z++) {
if (DeckTeste[z] == null) {
window.alert("Pb carte null :" + i + j + k);
}
}
tab = AssemblageARBRE(copieListeDeCarte(DeckTeste), copieCarte(DeckTeste[0]));
var solution = true;
for (var h = 0; h < tab.length; h++) {
tabCode.push(tab[h].code);
}
for (var g = 0; g < tab.length; g++) {
if (tab[g].code == DeckTeste.length) {
solution = false;
}
}
if (!solution) {
Cptsolution++;
window.alert("Combinaison a 3 trouvé: " + (i + 1) + " " + (i + j + 2) + " " + (k + j + i + 3));
}
}
}
}
if (Cptsolution == 0) {
window.alert("Pas de solution");
}
window.alert("Nombre de solution à 3 cartes : " + Cptsolution);
}
//=================================================================================
//FONCTION DE TEST => permet de tester des fonctionnalité via le bouton VALIDER
function test() {
function testPourJeuInfini() {
try {
if (carteselect.length == 0) {
window.alert("Selection Vide");
@ -531,10 +736,10 @@ function test() {
} else {
var copie = [];
for (var i = 0; i < carteselect.length; i++) {
copie.push(carteselect[i]);
copie.push(copieCarte(carteselect[i]));
}
var tab = [];
tab = AssemblageARBRE(copieListeDeCarte(copie), carteselect[0]);
tab = AssemblageARBRE(copieListeDeCarte(copie), copieCarte(carteselect[0]));
var solution = true;
var tabCode = [];
for (var i = 0; i < tab.length; i++) {
@ -552,13 +757,54 @@ function test() {
if (!solution) {
window.alert("J'ai une solution chef !!!!");
}
window.alert(TasDuJEU.length)
}
} catch (e) {
window.alert(e);
}
}
//Fonction de test mias pour le jeu classique
function testPourJeuClassique() {
//try {
if (carteselect.length == 0) {
window.alert("Selection Vide test pour jeu classique");
return;
} else if (carteselect.length < 2) {
window.alert("Selection Trop Petite");
return;
} else {
var copie = [];
for (var i = 0; i < carteselect.length; i++) {
copie.push(copieCarte(carteselect[i]));
}
var tab = [];
tab = AssemblageARBRE(copie, copieCarte(carteselect[0]));
var solution = true;
var tabCode = [];
for (var i = 0; i < tab.length; i++) {
tabCode.push(tab[i].code);
}
for (var i = 0; i < tab.length; i++) {
if (tab[i].code == carteselect.length) {
solution = false;
changerlesCartesDeTasDeJeu();
}
}
if (solution) {
window.alert("Rien trouvé chef !!!");
}
if (!solution) {
window.alert("J'ai une solution chef !!!!");
}
window.alert(TasDuJEU.length)
}
/*} catch (e) {
window.alert(e);
}*/
}
//===================================================================================
//Function de copie diverse
@ -574,16 +820,11 @@ function copieCarte(uneCarte) {
if (uneCarte == null) {
return null;
}
var carte = new Carte(uneCarte.getIdentifiant, uneCarte.SesFigures);
carte.SesFigures = new Array();
var AllFigure = [];
for (var i = 0; i < uneCarte.SesFigures.length; i++) {
carte.SesFigures.push(new Figure(uneCarte.SesFigures[i].type[0], uneCarte.SesFigures[i].getForme, uneCarte.SesFigures[i].getX, uneCarte.SesFigures[i].getY));
if (uneCarte.SesFigures[i].type.length > 1) {
for (var j = 1; j < uneCarte.SesFigures[i].type.length; j++) {
carte.SesFigures[carte.SesFigures.length - 1].type.push(uneCarte.SesFigures[i].type[j]);
}
}
AllFigure.push(new Figure(uneCarte.SesFigures[i].type, uneCarte.SesFigures[i].forme, uneCarte.SesFigures[i].X, uneCarte.SesFigures[i].Y));
}
var carte = new Carte(uneCarte.getIdentifiant, AllFigure);
carte.Matrice = copieMatrice(uneCarte.Matrice, uneCarte.row, uneCarte.column);
return carte;
}
@ -645,9 +886,9 @@ function AssemblageARBRE(TasDeCarte, Carte) {
return tab;
}
tab.push(AssemblageARBRE(uneTable, copieCarte(uneTable[0])));
tab.push(AssemblageARBRE(uneTable, Horizontale(uneTable[0])));
tab.push(AssemblageARBRE(uneTable, Verticale(uneTable[0])));
var derniereCarte = Horizontale(Verticale(uneTable[0]));
tab.push(AssemblageARBRE(uneTable, Horizontale(copieCarte(uneTable[0]))));
tab.push(AssemblageARBRE(uneTable, Verticale(copieCarte(uneTable[0]))));
var derniereCarte = Horizontale(Verticale(copieCarte(uneTable[0])));
tab.push(AssemblageARBRE(uneTable, derniereCarte));
for (var i = 0; i < tab.length; i++) {
for (var j = 0; j < tab[i].length; j++) {
@ -807,6 +1048,24 @@ function ajouterplayer(event){
*/
function doublonInterdit(uneCarte) {
var lesCoPetit = [];
lesCoPetit.push([1, 1], [1, 1], [1, 2], [1, 2], [1, 1], [2, 2], [1, 1], [2, 1], [1, 2], [2, 2], [1, 2], [2, 1]);
var lesCoMoyens = [];
lesCoMoyens.push([2, 1], [3, 3], [1, 1], [3, 4], [2, 3], [1, 4], [1, 2], [1, 1], [2, 3], [1, 3], [2, 4], [1, 3]);
for (var i = 0; i < lesCoPetit.length; i++) {
if (uneCarte.SesFigures[0].X == (lesCoPetit[i][0]) - 1) {
if (uneCarte.SesFigures[0].Y == (lesCoPetit[i][1]) - 1) {
if (uneCarte.SesFigures[1].X == (lesCoMoyens[i][0]) - 1) {
if (uneCarte.SesFigures[1].Y == (lesCoMoyens[i][1]) - 1) {
return true;
}
}
}
}
}
return false;
}

Loading…
Cancel
Save