Je travaille sur le jeu Tic Tac Toe, en utilisant JavaScrip. Lorsque j'appelle la fonction MinMax, j'obtiens une séquence d'erreur de journal. Ici j'appelle la fonction minmax et les valeurs que j'ai assignées sont correctes selon mes connaissances.Erreur de console de retour de l'algorithme JavaScript Minmax Uncaught TypeError: Impossible de lire la propriété 'cost' de undefined
const value = minmax(gridCopy, depth+1, ((player===PLAYER_TOKEN)?COMPUTER_TOKEN:PLAYER_TOKEN));
Je reçois une erreur dans la console
main.js:86 Uncaught TypeError: Cannot read property 'cost' of undefined
at minmax (main.js:86)
at minmax (main.js:64)
at minmax (main.js:64)
at minmax (main.js:64)
at minmax (main.js:64)
at minmax (main.js:64)
at minmax (main.js:64)
at minmax (main.js:64)
at minmax (main.js:64)
at computerMove (main.js:120)
Si vous voulez avoir regard sur mon funtion complet est le code ici.
function minmax(newGrid, depth, player) {
const gameState= gameOver(newGrid);
if(gameState === false) {
const values= [];
for (var i=0; i<3; i++) {
for (var j = 0; j<3;j++){
const gridCopy = _.cloneDeep(newGrid);
if (gridCopy[i][j]!=='') continue;
gridCopy[i][j]=player;
const value = minmax(gridCopy, depth+1, ((player===PLAYER_TOKEN)?COMPUTER_TOKEN:PLAYER_TOKEN));
values.push({
cost:value,
cell: {
i:i,
j:j
}
});
}
}
if (player === COMPUTER_TOKEN) {
const max = _.maxBy(values, (v) => {
return v.cost;
});
if (depth === 0) {
return max.cell;
}
else {
return max.cost;
}
}
else {
const min = _.minBy(values, (v) => {
return v.cost;
});
if (depth === 0) {
return min.cell;
}
else {
return min.cost;
}
}
}else if (gameState === null){
return 0;
}
else if (gameState===PLAYER_TOKEN) {
return depth - 10;
}
else if (gameState===COMPUTER_TOKEN) {
return 10 - depth;
}
}
function computerMove(){
return minmax(grid,0,COMPUTER_TOKEN);
}
Voici le lien pour compléter le projet
https://codepen.io/ziaullahzia/full/wqpGxW/
Bonjour, Merci pour votre réponse ................ J'utilise funtion computerMove() pour appeler minmax funtion. . si vous vérifiez le code dans codepne ... ressemble à ça ..................................... ............................. fonction computerMove() { return minmax (grille, 0, COMPUTER_TOKEN); } – ziaullahzia
Ajout d'une modification pour la réponse. – alperenc
Oui, merci, ça marche. Je vais vérifier les détails pour en savoir plus. – ziaullahzia