Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function ticTacToe(moves) {
- const dashboard = [
- [false, false, false],
- [false, false, false],
- [false, false, false]
- ];
- let currentPlayer = 'X';
- for (let move of moves) {
- const [row, col] = move.split(' ').map(Number);
- if (dashboard[row][col] !== false) {
- console.log("This place is already taken. Please choose another!");
- continue;
- }
- dashboard[row][col] = currentPlayer;
- if (checkWinner(dashboard, row, col, currentPlayer)) {
- console.log(`Player ${currentPlayer} wins!`);
- printDashboard(dashboard);
- return;
- }
- currentPlayer = currentPlayer === 'X' ? 'O' : 'X';
- if (isDashboardFull(dashboard)) {
- console.log("The game ended! Nobody wins :(");
- printDashboard(dashboard);
- return;
- }
- }
- function checkWinner(dashboard, row, col, player) {
- if (dashboard[row].every(cell => cell === player)) return true;
- if (dashboard.every(row => row[col] === player)) return true;
- if ((row === col || row + col === 2) && checkDiagonal(dashboard, player)) return true;
- return false;
- }
- function checkDiagonal(dashboard, player) {
- const n = dashboard.length;
- let mainDiagonal = true;
- let secondaryDiagonal = true;
- for (let i = 0; i < n; i++) {
- if (dashboard[i][i] !== player) {
- mainDiagonal = false;
- }
- if (dashboard[i][n - 1 - i] !== player) {
- secondaryDiagonal = false;
- }
- }
- return mainDiagonal || secondaryDiagonal;
- }
- function isDashboardFull(dashboard) {
- return dashboard.every(row => row.every(cell => cell !== false));
- }
- function printDashboard(dashboard) {
- for (let row of dashboard) {
- console.log(row.map(cell => cell === false ? 'false' : cell).join('\t'));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement