Javascript 我如何让它检测到胜利?
我正在努力让这个终端游戏(tic-tac-toe)检测到一场胜利,但我不太确定如何去做。我需要游戏通过节点测试。我尝试了一些不同的方法,但都没有成功。我需要把剩下的代码放在“function checkForWin”中,这样才能工作Javascript 我如何让它检测到胜利?,javascript,Javascript,我正在努力让这个终端游戏(tic-tac-toe)检测到一场胜利,但我不太确定如何去做。我需要游戏通过节点测试。我尝试了一些不同的方法,但都没有成功。我需要把剩下的代码放在“function checkForWin”中,这样才能工作 'use strict'; const assert = require('assert'); const readline = require('readline'); const rl = readline.createInterface({ input:
'use strict';
const assert = require('assert');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let board = [
[' ', ' ', ' '],
[' ', ' ', ' '],
[' ', ' ', ' ']
];
let playerTurn = 'X';
function printBoard() {
console.log(' 0 1 2');
console.log('0 ' + board[0].join(' | '));
console.log(' ---------');
console.log('1 ' + board[1].join(' | '));
console.log(' ---------');
console.log('2 ' + board[2].join(' | '));
}
function horizontalWin() {
if (
board [0] [0] === playerTurn &&
board [0] [1] === playerTurn &&
board [0] [2] === playerTurn
) {
return true;
} else if (
board [1] [0] === playerTurn &&
board [1] [1] === playerTurn &&
board [1] [2] === playerTurn
) {
return true;
} else if (
board [2] [0] === playerTurn &&
board [2] [1] === playerTurn &&
board [2] [2] === playerTurn
) {
return true;
}
return false;
}
function verticalWin() {
if (
board [0] [0] === playerTurn &&
board [1] [0] === playerTurn &&
board [2] [0] === playerTurn
) {
return true;
} else if (
board [0] [1] === playerTurn &&
board [1] [1] === playerTurn &&
board [2] [1] === playerTurn
) {
return true;
} else if (
board [0] [2] === playerTurn &&
board [1] [2] === playerTurn &&
board [2] [2] === playerTurn
) {
return true;
}
return false;
}
function diagonalWin() {
if (
board [0] [0] === playerTurn &&
board [1] [1] === playerTurn &&
board [2] [2] === playerTurn
) {
return true;
} else if (
board [0] [2] === playerTurn &&
board [1] [1] === playerTurn &&
board [2] [0] === playerTurn
) {
return true;
}
return false;
}
function checkForWin() {
}
function ticTacToe(row, column) {
let selectedRow = board[row];
selectedRow[column] = playerTurn;
if (playerTurn === 'X') {
playerTurn = 'O';
} else if (playerTurn === 'O') {
playerTurn = 'X';
}
}
function getPrompt() {
printBoard();
console.log("It's Player " + playerTurn + "'s turn.");
rl.question('row: ', (row) => {
rl.question('column: ', (column) => {
ticTacToe(row, column);
getPrompt();
});
});
}
// Tests
if (typeof describe === 'function') {
describe('#ticTacToe()', () => {
it('should place mark on the board', () => {
ticTacToe(1, 1);
assert.deepEqual(board, [ [' ', ' ', ' '], [' ', 'X', ' '], [' ', ' ', ' '] ]);
});
it('should alternate between players', () => {
ticTacToe(0, 0);
assert.deepEqual(board, [ ['O', ' ', ' '], [' ', 'X', ' '], [' ', ' ', ' '] ]);
});
it('should check for vertical wins', () => {
board = [ [' ', 'X', ' '], [' ', 'X', ' '], [' ', 'X', ' '] ];
assert.equal(verticalWin(), true);
});
it('should check for horizontal wins', () => {
board = [ ['X', 'X', 'X'], [' ', ' ', ' '], [' ', ' ', ' '] ];
assert.equal(horizontalWin(), true);
});
it('should check for diagonal wins', () => {
board = [ ['X', ' ', ' '], [' ', 'X', ' '], [' ', ' ', 'X'] ];
assert.equal(diagonalWin(), true);
});
it('should detect a win', () => {
assert.equal(checkForWin(), true);
});
});
} else {
getPrompt();
}