Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme a terminer un exercice en javascript

21 janvier 2023 à 21:05:04

const COMBINATIONS = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6]
];
const PLAYER_ONE_CLASS = 'player-1';
const PLAYER_TWO_CLASS = 'player-2';
const PLAYED_CLASS = 'played';
const MAX_TURNS = 8;
let playerOneTurn = true;
let playerOnePoints = '0';
let playerTwoPoints = '0';
let turns = '0';
const playerOneCombination = [];
const playerTwoCombination = [];
const board = document.querySelector('.board');
const squares = Array.from(document.querySelectorAll('.square'));
const playerOneScore = document.querySelector('#player-1-score');
const playerTwoScore = document.querySelector('#player-2-score');
const alert = document.querySelector('template').content.querySelector('.alert');
const addAlert = (message) => {
const alertClone = alert.cloneNode(true);
alertClone.querySelector('.message').textContent = message;
document.body.insertBefore(alertClone, document.body.firstChild);
setTimeout(() => {
alertClone.querySelector('button').click()
}, 3000);
}
const checkCombination = (player) => {
if (player === PLAYER_ONE_CLASS) {
combination = playerOneCombination;
}
else {
combination = playerTwoCombination;
}
return COMBINATIONS.some((combinationToCheck) => {
return combinationToCheck.every((square) => {
return combination.includes(square);
});
});
}
const declareDraw = () => {
addAlert('Draw!');
squares.forEach((square) => {
square.removeEventListener('click', handleClick);
});
}
const resetBoard = () => {
board.classList.replace(PLAYER_TWO_CLASS, PLAYER_ONE_CLASS);
squares.forEach((square) => {
square.classList.remove(PLAYER_ONE_CLASS, PLAYER_TWO_CLASS, PLAYED_CLASS);
square.addEventListener('click', handleClick);
});
playerOneCombination.length = 0;
playerTwoCombination.length = 0;
/** 
* !!!QUESTION!!!
* 18. Réinitialiser la variable turns à 0. 
*/
turns.length = 0;
/**
* !!!QUESTION!!!
* 19. Réinitialiser la variable playerOneTurn à true. 
*/
playerOneTurn.length = true;
}
const incrementWinnersScore = (player) => {
/**
* !!!QUESTION!!!
* 20. Créer un if statement qui vérifie si le paramètre player est égal à la constante PLAYER_ONE_CLASS.
*/
if (incrementWinnersScore === PLAYER_ONE_CLASS) 
/**
* !!!QUESTION!!!
* 21. Si oui, incrémenter la variable playerOnePoints de 1.
*/
playerOnePoints++;
/**
* !!!QUESTION!!!
* 22. Sinon, incrémenter la variable playerTwoPoints de 1.
*/
playerTwoPoints++;
return player === PLAYER_ONE_CLASS ? playerOnePoints : playerTwoPoints;
  }
const checkWinner = (player) => {
if (checkCombination(player)) {
const playerScore = player === PLAYER_ONE_CLASS ? playerOneScore : playerTwoScore;
const playerPoints = incrementWinnersScore(player);
playerScore.textContent = playerPoints;
/**
* !!!QUESTION!!!
* 23. Modifier la string alertText afin qu'elle affiche le numéro du joueur qui a gagné.
* Par exemple, si le joueur 1 a gagné, la string alertText devrait être égale à "Player 1 win".
* Si le joueur 2 a gagné, la string alertText devrait être égale à "Player 2 win".
* Vous pouvez modifier la string comme vous le souhaitez. (en modifiant le type de variable, en utilisant une concaténation, etc.)
*/
const alertText = 'Player wins!';
addAlert(alertText);
squares.forEach((square) => {
square.removeEventListener('click', handleClick);
});
return true;
} else if (turns === MAX_TURNS) {
declareDraw();
return true;
}
return false;
};
const handleClick = (event) => {
const square = event.target;
square.removeEventListener('click', handleClick);
/**
* !!!QUESTION!!!
* 24. Utiliser une ternary operator pour définir la variable nommée player comme suit:
* - Si c'est au tour du joueur 1 de jouer, la variable player est égale à la classe PLAYER_ONE_CLASS.
* - Sinon, la variable player est égale à la classe PLAYER_TWO_CLASS.
*/
/**
* !!!QUESTION!!!
* 25. Utiliser une ternary operator pour définir la variable nommée nextPlayer comme suit:
* - Si c'est au tour du joueur 1 de jouer, la variable nextPlayer est égale à la classe PLAYER_TWO_CLASS.
* - Sinon, la variable nextPlayer est égale à la classe PLAYER_ONE_CLASS.
*/
square.classList.add(player, PLAYED_CLASS);
board.classList.replace(player, nextPlayer);
/**
* !!!QUESTION!!!
* 26. Assignez la variable nommée squareNumber à l'ID de la case.
* Pour aller chercher l'id, utilisez square.id
* Assurez-vous de coercer la valeur en Number.
*/
/**
* !!!QUESTION!!!
* 27. Vérifier si playerOneTurn est égal à true.
* Si c'est le cas, utilisez ce code: playerOneCombination.push(squareNumber);
* Sinon, utilisez ce code: playerTwoCombination.push(squareNumber);
*/
const hasWinner = checkWinner(player);
/**
* !!!QUESTION!!!
* 28. Vérifier si hasWinner est égal à true.
* Si c'est le cas, utilisez ce code: return resetBoard();
*/
/**
* !!!QUESTION!!!
* 29. Inverser la valeur de la variable "playerOneTurn" pour passer au joueur suivant. Donc si c'est au tour du joueur 1 de jouer,
* la variable "playerOneTurn" est égale à true et si c'est au tour du joueur 2 de jouer, la variable "playerOneTurn" est égale à false.
*/
/**
* !!!QUESTION!!!
* 30. Incrémenter la variable "turns" de 1 pour indiquer qu'un tour a été joué.
*/
};
(() => {
squares.forEach((square) => {
square.addEventListener('click', handleClick);
});
})();
  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2023 à 21:18:35

As-tu essayé chatGPT ? Ça répond encore plus vite que ce que tu prends pour des toutous sur Openclassroom.
  • Partager sur Facebook
  • Partager sur Twitter
21 janvier 2023 à 21:30:11

Bonjour,

Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Pour plus d'informations, nous vous invitons à lire les règles générales du forum

Manquement global aux règles

Votre message enfreint beaucoup de règles basiques du forum à tel point qu'il serait fastidieux de les énumérer dans ce message. Je vous invite donc à lire de toute urgence les règles générales du forum ainsi que la Charte de Bonne Conduite et les éventuelles règles additionnelles de la section du forum dans laquelle vous postez, visibles parmi les sujets épinglés lorsqu'il y en a.

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)