Skip to content

Instantly share code, notes, and snippets.

@priort
Created January 2, 2021 17:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save priort/7000ae6de803ef02a633c800a7b35557 to your computer and use it in GitHub Desktop.
Save priort/7000ae6de803ef02a633c800a7b35557 to your computer and use it in GitHub Desktop.
let handleTurnTaken = (turnTakenEvent) => {
if(turnTakenEvent.gameboard[turnTakenEvent.row][turnTakenEvent.col] !== 'X' && turnTakenEvent.gameboard[turnTakenEvent.row][turnTakenEvent.col] !== 'O') {
console.log('Player ' + turnTakenEvent.player + ' has taken a turn');
let nextPlayer = turnTakenEvent.player === 'O' ? 'X' : 'O';
let nextGameBoard = turnTakenEvent.gameboard.map(
(row, rIndex) => {
return row.map((col, cIndex) => {
return rIndex === turnTakenEvent.row && cIndex === turnTakenEvent.col ?
turnTakenEvent.player : col
});
}
)
if (winChecker.thereIsAWinner(nextGameBoard)) {
eventDispatcher.dispatch({
name: 'winner-determined-event',
winner: turnTakenEvent.player,
gameboard: nextGameBoard
});
}
else if (winChecker.gameBoardIsFull(nextGameBoard)){
eventDispatcher.dispatch({
name: 'completed-with-no-winner-event',
gameboard: nextGameBoard
});
} else {
eventDispatcher.dispatch({
name: 'game-board-updated-event',
nextPlayer: nextPlayer,
gameboard: nextGameBoard
});
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment