Titre
Choisissez un tirage
Etape 1/3
      //const cardWrapper = document.getElementById(« card-wrapper »); const selectedCards = document.getElementById(« selected-cards »); const gameTitle = document.getElementById(« game-title »); const notice = document.getElementById(« notice »); let cards = cardWrapper.getElementsByClassName(« card »); let cardsFaceUp = cardWrapper.getElementsByClassName(« card-front »); // Instance de Game active let currentGame = {}; let currentEtape = 0; // Instances de Card active let objArcanes = {}; // ??? let card = «  »; class Card { constructor(name, number, description, meanings) { this.name = name; this.number = number; this.description = description; this.meanings = { upright: meanings[0], reversed: meanings[1] }; this.image = «  »; this.correspondance = «  »; // ex: Le Magicien = 1 & Roue de la fortune 10 = 1(10=1+0=1) & Le soleil 19 = 1 (19 = (1 + 9) = 10 = (1 + 0) = 1) this.association = «  »; // this.isFaceUp = false; this.isUpRight = true; this.cssClass = « card card-back »; this.cssId = « card » + number; } /* // Getter : binds an object property to a function that will be called when that property is looked up. get named() { //Utilisation: instance.named return this.name; } Setter : binds an object property to a function to be called when there is an attempt to set that property. set visible(visible) { //Utilisation: instance.visible = true this.isVisible = visible; }*/ // Method returnTheCard() { if (this.isFaceUp === true) { //On retourne la carte this.isFaceUp = false; console.log(« on cache  » + this.name); this.cssClass = « card card-back »; let nodea = document.getElementById(`${this.cssId}`); //nodea.outerHTML = `
    • `; nodea.innerHTML = «  »; nodea.classList.remove(« card-front »); nodea.classList.add(« card-back »); } else { //on montre la carte this.isFaceUp = true; console.log(« on montre  » + this.name); this.cssClass = « card card-front »; let nodea = document.getElementById(`${this.cssId}`); //nodea.outerHTML = `
    • ${this.name}

    • `; nodea.innerHTML = `

      ${this.name}

      `; nodea.classList.remove(« card-back »); nodea.classList.add(« card-front »); } } addCardToWrapper(isFaceUp) { let node = document.createElement(« li »); cardWrapper.appendChild(node); //Si les cartes doivent etre affiché if (isFaceUp) { this.isFaceUp = true; this.cssClass = « card »; node.outerHTML = `
    • ${this.name}

    • `; } else { this.isFaceUp = false; this.cssClass = « card card-back »; node.outerHTML = `
    • `; } card = document.getElementById(this.cssId); card.addEventListener( « click », (event) => { // START Event action once Time !! console.log(`carte choisie ${this.name}`); // On ajoute l’ID à la liste des cartes selected currentGame.selectedCards.push(this.cssId); //On retourne la carte this.returnTheCard(); // On previent le gestionnaire d’evenement de Game que la carte est ajouter // checkChoice(); currentGame.eventManager(); }, { once: true } ); } } class Game { constructor(name, desc, nbrToChoose) { this.name = name; // Nom de partie this.desc = «  »; // Description this.date = «  »; // Date du lancement de la partie this.currentEtape = 0; this.etapes = nbrToChoose; // nbr to choose this.shuffle = []; // Liste des cartes apres mélange. this.objShuffle = {}; // Liste des objets Card (d’apres la liste shuffle) this.selectedCards = []; // Liste des cartes selectionnées. this.notice = []; // messages guide des étapes. // Ajouter la possibilité d’avoir des cartes à l’envers } startGame() { // ### Reinitialisation du plateau de jeu // Retirer les cartes du plateau de jeu -> wrapper cardWrapper.innerHTML = «  »; // Retirer les cartes choisis -> selectedCards Wrapper selectedCards.innerHTML = «  »; // Retirer le message en cours notice.innerHTML = «  »; gameTitle.innerHTML = this.name; /////////////////// //this.selectedCards = []; // choix //this.shuffle = {}; //tirage let nDate = new Date(); // recuperer la date this.date = nDate.toTimeString(); // ajout de la date à la partie // ### On mélange les cartes -> shuffle[i] for (let i = 0; this.shuffle.length < 22; ) { let num = Math.floor(Math.random() * 22); // random de 0 et 21 if (!this.shuffle.includes(num)) { this.shuffle.push(num); i++; console.log(this.shuffle); } else { i--; } } // On creer les instances de Card et on les ajoute à objShuffle[] for (let i = 0; i < this.shuffle.length; i++) { let n = this.shuffle[i]; this.objShuffle[i] = new Card(arcanes[n][0], i, arcanes[n][1], [ arcanes[n][2], arcanes[n][3] ]); // On ajoute la carte au Wrapper this.objShuffle[i].addCardToWrapper(); // (1) pour retourner les cartes } // afficher notice // } noticeManager() {} eventManager() { // => Etape Manager console.log(« check Choice ! Etape  » + this.currentEtape ); if (this.selectedCards.length == this.etapes[this.currentEtape]) { console.log(« check Choice OK! ->c’est bon passe a la suite »); this.removeCardsToWrapper(); this.selectedCards = []; this.currentEtape ++; if (this.etapes[this.currentEtape]>0){ notice.innerHTML = « Vous devez choisir  » + this.etapes[this.currentEtape] + » cartes »; }else { notice.innerHTML = « Vous avez fini on passe a la suite ma gueule »; } } else { notice.innerHTML = « Vous devez choisir  » +(this.etapes[this.currentEtape] – this.selectedCards.length) + » cartes »; console.log(« ETAPE STILL NOT COMPLETED! »); } } removeCardsToWrapper() { // retirer les cartes selectionné du wrapper et les mettres dans console.log(« Il y a  » + cardsFaceUp.length +  » cartes à déplacer »); for (const i = 0; i < cardsFaceUp.length; ) { //On retire la carte du wrapper let oldChild = cardWrapper.removeChild(cardsFaceUp[i]); // //et on la place dans le deuxieme wrapper selectedCards.appendChild(oldChild); } } ctrlAnimations() { // ICI on controle les animations mystqiues } exportGame() { // Sauvegarder les infos de la partie } } const arcanes = [ // [number] name, description, upright meaning, reversed meaning] [ "Le fou / Le mat", "description absente", "Nouveau départ
      Insouciance », « Etre mal preparé
      Agir comme un gamin » ], [ « Le magicien / Le bateleur », « description absente », « Talent Compétence
      Confiance en soi », « Faire fausse route
      Procrastiner » ], [ « La grande prêtresse / La papesse », « description absente », « Intuition Spiritualité
      Monde intérieur », « Dissimulation
      Mauvaise interpretation » ], [« L’impératrice », « description absente », «  », «  »], [« L’empereur », « description absente », «  », «  »], [« Le hiérophante / Le pape », « description absente », «  », «  »], [« Les Amoureux / L’amoureux », « description absente », «  », «  »], [« Le chariot », « description absente », «  », «  »], [« La force », « description absente », «  », «  »], [« L’ermite », « description absente », «  », «  »], [« La roue de la fortune », « description absente », «  », «  »], [« La justice », « description absente », «  », «  »], [« Le pendu », « description absente », «  », «  »], [« La mort / L’arcane sans nom », « description absente », «  », «  »], [« La tempérance », « description absente », «  », «  »], [« Le diable », « description absente », «  », «  »], [« La tour / La maison de dieu », « description absente », «  », «  »], [« L’étoile », « description absente », «  », «  »], [« La lune », « description absente »], [« Le soleil », « description absente », «  », «  »], [« Le jugement », « description absente », «  », «  »], [« Le monde », « description absente », «  »,  » « ] ]; const numerologie = { 1: « Potentiel, Commencement, Etincelle, Inspiration », 2: « Union, Relation, Dualité, Dilemme, Partenariat, Interaction, Adaptation », 3: « Créativité, Mouvement, Croissance, Planification, Fécondité, Célébration » }; /* Creation d’une instance de Card let arcan1 = new Card(arcanes[0][0],0,arcanes[0][1],([arcanes[0][2],arcanes[0][3]])); */ //Tirage Auto function newTirageAuto() { // On reinitialise la liste des anciennes cartes tirées objArcanes = {}; tirage = { date: « aujourdhui », ordre: [] }; // On vide le wrapper cardWrapper.innerHTML = «  »; //On selectionne 3 cartes for (let i = 0; tirage.ordre.length < 3; ) { //random x3 let num = Math.floor(Math.random() * 22); // random de 0 et 21 if (!tirage.ordre.includes(num)) { tirage.ordre.push(num); i++; } else { i--; } } for (let cn = 0; cn < tirage.ordre.length; cn++) { let i = tirage.ordre[cn]; objArcanes[i] = new Card(arcanes[i][0], i, arcanes[i][1], [ arcanes[i][2], arcanes[i][3] ]); objArcanes[i].addCardToWrapper(1); } } //Afficher toutes les cartes function allCard() { //On reinitialise les cartes objArcanes = {}; // On vide le wrapper cardWrapper.innerHTML = ""; // creer les instances de chaques carte et les ajouter au wrapper (DOM) for (let i = 0; i < arcanes.length; i++) { objArcanes[i] = new Card(arcanes[i][0], i, arcanes[i][1], [ arcanes[i][2], arcanes[i][3] ]); objArcanes[i].addCardToWrapper(true); //true = cartes visibles } } function newTirage() { // --- Réinitialisation des variables // Retirer les cartes du plateau de jeu -> wrapper cardWrapper.innerHTML = «  »; // Retirer les cartes choisis -> selectedCards Wrapper selectedCards.innerHTML = «  »; // Supprimer les anciens choix choix = []; // Supprimer la liste de carte mélanger tirage = {}; // — Définition des variables du tirage // Stocker l’ordre des cartes melangées + date du mélange let date = new Date(); // date tirage = { date: date.toTimeString(), // ajout de la date ordre: [] }; // Definir le nombre de carte à tirer nbrToChoose = 5; // On mélange les cartes -> tirage.ordre[i] for (let i = 0; tirage.ordre.length < 22; ) { let num = Math.floor(Math.random() * 22); // random de 0 et 21 if (!tirage.ordre.includes(num)) { tirage.ordre.push(num); i++; } else { i--; } } // On ajoute les cartes mélangées au Wrapper -> objArcanes[i] for (let cn = 0; cn < tirage.ordre.length; cn++) { let i = tirage.ordre[cn]; objArcanes[i] = new Card(arcanes[i][0], i, arcanes[i][1], [ arcanes[i][2], arcanes[i][3] ]); } // } function createGame() { currentGame = new Game("Tirage Du Diable", "Une partie endiablée", [5, 2,4]); currentGame.startGame(); }