Dans le code ci-dessous concernant un petit jeu de dés, si lors d'un tirage le joueur tombe sur un "1" alors il doit céder son tour, j'ai donc tenté de réattribuer la valeur "joueurActif" (calculscores.js...remplirScoreCourant()) et s'en suit un return de ladite variable pour l'exploiter/actualiser dans les autres fonctions... Or la variable ne change pas comme elle le devrait dans la fonction "btnRoll" mais si dans la fonction "remplirScoreCourant"... Ce qui fait que le numéro de joueur actif n'est pas actualisé interdisant la permutation de tour de joueur...
En dehors de ce problème le code fonctionne parfaitement...
Merci d'avance pour vos lumières

Main.js :
Code : Tout sélectionner
import Joueur from "./classes/Joueur.js";
import {tirage} from "./functions/tirages.js"
import {
angleArray,btnHold,btnNewGame,btnRoll,checkHistorique,divHistorique,divScoreCourantJ1,divScoreCourantJ2,divScoreTotalJ1,divScoreTotalJ2} from "./constants.js";
import { calculScoresTotaux, afficherHistorique,currentJ1,currentJ2,historique,remplirScoreCourant} from "./functions/calculScores.js";
export var joueurActif;
//Initialisation des variables des 2 joueurs
export const j1 = new Joueur(1, 0, 0);
export const j2 = new Joueur(2, 0, 0);
//Au démarrage de la page
window.onload = () => {
barreInfo.innerHTML = `<h4>Appuyer sur le bouton "nouvelle partie" pour commencer</h4>`;
btnHold.classList.add("disabled");
btnRoll.classList.add("disabled");
checkHistorique.checked = false;
};
//Détermine qui est le premier joueur par aléatoire
function premierJoueur() {
joueurActif = Math.floor(Math.random() * 2) + 1;
barreInfo.innerHTML = `<h4>Le joueur ${joueurActif} commence la partie</h4>`;
return joueurActif;
}
const initialiser = () => {
//Obtenir un premier joueur de façon aléatoire
premierJoueur();
//Mise à zéro des champs et tableaux
currentJ1.length = 0;
currentJ2.length = 0;
historique.length = 0;
divScoreCourantJ1.textContent = 0;
divScoreTotalJ1.textContent = 0;
divScoreCourantJ2.textContent = 0;
divScoreTotalJ2.textContent = 0;
};
btnNewGame.addEventListener("click", () => {
//Nouvelle partie
initialiser();
btnRoll.classList.remove("disabled");
console.log("Joueur actif depuis btnNewGame = " + joueurActif);
});
//Lancement du dé
btnRoll.addEventListener("click", () => {
btnHold.classList.remove("disabled");
tirage();
remplirScoreCourant(joueurActif);
//Si l'option est sélectionnée l'historique de
// la partie est affiché
if (checkHistorique.checked === true) {
divHistorique.style.display = "block";
afficherHistorique();
} else {
divHistorique.style.display = "none";
}
console.log("Joueur actif depuis bouton btnRoll = " + joueurActif);
});
Code : Tout sélectionner
import { resultatTirage } from "../functions/tirages.js";
import {
divScoreCourantJ1,
divScoreCourantJ2,
divScoreTotalJ1,
divScoreTotalJ2,
btnHold,
btnRoll,
divHistorique,
} from "../constants.js";
import { j1, j2,joueurActif } from "../main.js";
//historique de la partie
export const historique = [];
export const currentJ1 = [];
export const currentJ2 = [];
var scoreCourantJ1 = 0;
var scoreCourantJ2 = 0;
var scoreTotalJ1 = 0;
var scoreTotalJ2 = 0;
export const calculScoresTotaux = (joueurActif) => {
// const calculJ1 = scoreCourantJ1 + scoreTotalJ1
// const calculJ2 = scoreCourantJ2 + scoreTotalJ2
// //Calcul score total du joueur 1 tant qu'inférieur à 100
// if (joueurActif == 1 && calculJ1 < 100) {
// scoreTotalJ1 += scoreCourantJ1
// divScoreTotalJ1.textContent = scoreTotalJ1
// divScoreCourantJ1.textContent = 0
// currentJ1.length = 0
// joueurActif = 2
// return joueurActif
// }
// //Si joueur 1 obtient 100 points il gagne
// if (joueurActif == 1 && calculJ1 == 100) {
// alert("Le joueur 1 a gagné la partie")
// btnHold.disabled = true
// btnRoll.disabled = true
// }
// //Calcul score total du joueur 2 tant qu'inférieur à 100
// if (joueurActif == 2 && calculJ2 < 100) {
// scoreTotalJ2 += scoreCourantJ2
// divScoreTotalJ2.textContent = scoreTotalJ2
// divScoreCourantJ2.textContent = 0
// currentJ2.length = 0
// joueurActif = 1
// return joueurActif
// }
// if (joueurActif == 2 && calculJ2 == 100) {
// alert("Le joueur 2 a gagné la partie")
// btnHold.disabled = true
// btnRoll.disabled = true
// }
};
export const remplirScoreCourant = (joueurActif) => {
//Si l'un des joueurs tire un "1" alors il perd son score courant
if (joueurActif === 1 && resultatTirage === 1) {
j1.setScoreCourant(0);
//vidage tableau de score courant
currentJ1.length = 0;
divScoreCourantJ1.textContent = 0;
barreInfo.innerHTML = `Le joueur 1 cède son tour avec un total provisoire de ${scoreTotalJ1} points, doit obtenir ${
100 - scoreTotalJ1
} pour gagner.`;
joueurActif = 2
console.log("Joueur actif depuis remplirScoreCourant : "+joueurActif)
return joueurActif
}
if (joueurActif === 2 && resultatTirage === 1) {
j2.setScoreCourant(0);
//vidage tableau de score courant
currentJ2.length = 0;
divScoreCourantJ2.textContent = 0;
barreInfo.innerHTML = `Le joueur 2 cède son tour avec un total provisoire de ${scoreTotalJ2} points, doit obtenir ${
100 - scoreTotalJ2} pour gagner.`;
joueurActif = 1;
console.log("Joueur actif depuis remplirScoreCourant : " + joueurActif);
return joueurActif;
}
if (joueurActif === 1 && resultatTirage > 1) {
currentJ1.push(resultatTirage);
scoreCourantJ1 = currentJ1.reduce((a, b) => a + b, 0);
divScoreCourantJ1.textContent = scoreCourantJ1;
j1.setScoreCourant (scoreCourantJ1);
barreInfo.innerHTML = `Le joueur 1 a tiré un ${resultatTirage}.`;
console.log("score courant J1 = " + j1.getScoreCourant());
}
if (joueurActif === 2 && resultatTirage > 1) {
currentJ2.push(resultatTirage);
scoreCourantJ2 = currentJ2.reduce((a, b) => a + b, 0);
j2.setScoreCourant(scoreCourantJ2)
divScoreCourantJ2.textContent = scoreCourantJ2;
barreInfo.innerHTML = `Le joueur 2 a tiré un ${resultatTirage}.`;
console.log("score courant J2 = " + j2.getScoreCourant());
}
};
export const afficherHistorique = () => {
//On inverse le tableau d'historique
const rows = historique.reverse().map((row) => {
return `<p>${row}</p>`;
});
divHistorique.innerHTML = rows.join("");
};