You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
3.4 KiB
172 lines
3.4 KiB
class GameData {
|
|
|
|
hauteur;
|
|
largeur;
|
|
timeEnd;
|
|
numberColonne1;
|
|
numberColonne2;
|
|
isEtNonAllowed;
|
|
isOuNonAllowed;
|
|
niveau;
|
|
isTuto;
|
|
mode;
|
|
container;
|
|
colonneTot;
|
|
|
|
constructor(hauteur, largeur, colonneTot, timeEnd, mode, isTuto, container) {
|
|
this.hauteur = hauteur;
|
|
this.largeur = largeur;
|
|
this.timeEnd = timeEnd;
|
|
this.numberColonne1 = 2;
|
|
this.numberColonne2 = 1;
|
|
this.isEtNonAllowed = false;
|
|
this.isOuNonAllowed = false;
|
|
this.niveau = 1;
|
|
this.mode = mode;
|
|
this.isTuto = isTuto;
|
|
this.container = container;
|
|
this.colonneTot = colonneTot;
|
|
}
|
|
|
|
createStageCanvas() {
|
|
stage = new Konva.Stage({
|
|
container: this.container,
|
|
/*rotation: -90,
|
|
x: 20,
|
|
y: 1000,*/
|
|
width: this.hauteur,
|
|
height: this.largeur,
|
|
});
|
|
stage.add(layer);
|
|
}
|
|
|
|
generateRandomDoor() {
|
|
numberPerColonne = [this.numberColonne1, this.numberColonne2];
|
|
var logiqueCount = 0;
|
|
|
|
for (let i = 0; i < this.colonneTot; i++) {
|
|
liveColonneNumber.push([]);
|
|
}
|
|
for (let i = 0; i < this.colonneTot; i++) {
|
|
for (let j = 0; j < numberPerColonne[i]; j++) {
|
|
logiqueCount++;
|
|
let type = null;
|
|
switch (getRandomArbitrary(0, 4)) {
|
|
case 0:
|
|
type = "et";
|
|
break;
|
|
case 1:
|
|
type = "ou";
|
|
break;
|
|
case 2:
|
|
if (this.isEtNonAllowed) {
|
|
type = "etnon";
|
|
} else {
|
|
type = "et";
|
|
}
|
|
break;
|
|
case 3:
|
|
if (this.isOuNonAllowed) {
|
|
type = "nonou";
|
|
} else {
|
|
type = "et";
|
|
}
|
|
break;
|
|
}
|
|
insertLogiqueColonne("logique" + logiqueCount, type, i);
|
|
}
|
|
}
|
|
logiques.forEach(function (element) {
|
|
createLinkAuto(element.name);
|
|
});
|
|
}
|
|
|
|
|
|
|
|
setDifficulty(niveau) {
|
|
switch (niveau) {
|
|
case 1:
|
|
case 2:
|
|
timeEnd = 5;
|
|
break;
|
|
case 3:
|
|
case 4:
|
|
timeEnd = 4;
|
|
break;
|
|
case 5:
|
|
timeEnd = 3;
|
|
break;
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
isEtNonAllowed = true;
|
|
timeEnd = 5;
|
|
numberColonne1 = 3;
|
|
break;
|
|
case 9:
|
|
case 10:
|
|
case 11:
|
|
isEtNonAllowed = true;
|
|
timeEnd = 4;
|
|
numberColonne1 = 3;
|
|
break;
|
|
case 12:
|
|
case 13:
|
|
case 14:
|
|
isEtNonAllowed = true;
|
|
isOuNonAllowed = true;
|
|
timeEnd = 4;
|
|
numberColonne1 = 3;
|
|
break;
|
|
default:
|
|
isEtNonAllowed = true;
|
|
isOuNonAllowed = true;
|
|
timeEnd = 3;
|
|
numberColonne1 = 4;
|
|
break;
|
|
}
|
|
}
|
|
createGame(){
|
|
|
|
this.setDifficulty(this.niveau);
|
|
|
|
initTimer();
|
|
this.createStageCanvas();
|
|
this.generateRandomDoor();
|
|
|
|
calculNombreSwitch();
|
|
switchCreator(numberOfSwitch);
|
|
createAllLinkSwitch();
|
|
|
|
initAllSwitch();
|
|
createEnd();
|
|
initEnd();
|
|
|
|
checkAllSortieLogique();
|
|
}
|
|
}
|
|
|
|
function createSwitch(id, x, y) {
|
|
var switche = {
|
|
id: id,
|
|
x: x,
|
|
y: y,
|
|
};
|
|
switchsInfo.push(switche);
|
|
switchsInfoCopy.push(switche);
|
|
switchs.push(id);
|
|
var num = lineCount.length;
|
|
lineCount.push(1);
|
|
var rect1 = new Konva.Rect({
|
|
x: x,
|
|
y: y,
|
|
width: SwitchWidth,
|
|
height: SwitchHeight,
|
|
stroke: colorSwitchBorder,
|
|
fill: colorSwitchInnactiveBackground,
|
|
strokeWidth: 4,
|
|
id: id,
|
|
id3: null,
|
|
});
|
|
layer.add(rect1);
|
|
} |