Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Cassidy Brooke - Recurse Center
- Written in JavaScript, Node
- July 6, 2019
- */
- // this is required to take terminal inputs in Node.js
- const readline = require('readline');
- const rl = readline.createInterface({
- input: process.stdin,
- output: process.stdout
- });
- // welcome message
- console.log('\n');
- console.log('******************************');
- console.log('* Tic-Tac-Toe *');
- console.log('******************************');
- console.log('\n');
- console.log('How to play:' + '\n' + 'Select a square on your turn.' + '\n' + 'Player to get three vertically, horizontally or diagonally in a row wins.' + '\n');
- // store board state in data structure
- board = {
- 'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
- 'mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ',
- 'bot-L': ' ', 'bot-M': ' ', 'bot-R': ' '
- }
- // print board state to console
- function drawBoard(board) {
- console.log(board['top-L'] + '|' + board['top-M'] + '|' + board['top-R']);
- console.log('-+-+-');
- console.log(board['mid-L'] + '|' + board['mid-M'] + '|' + board['mid-R']);
- console.log('-+-+-');
- console.log(board['bot-L'] + '|' + board['bot-M'] + '|' + board['bot-R']);
- }
- // possible winning combos
- function checkForWinner(board, turn) {
- if ((board['top-L'] === winner && board['top-M'] === winner && board['top-R'] == winner) ||
- (board['mid-L'] === winner && board['mid-M'] === winner && board['mid-R'] == winner) ||
- (board['bot-L'] === winner && board['bot-M'] === winner && board['bot-R'] == winner) ||
- (board['top-L'] === winner && board['mid-L'] === winner && board['bot-L'] == winner) ||
- (board['top-M'] === winner && board['mid-M'] === winner && board['mid-R'] == winner) ||
- (board['top-R'] === winner && board['mid-M'] === winner && board['bot-R'] == winner) ||
- (board['top-L'] === winner && board['mid-M'] === winner && board['bot-R'] == winner) ||
- (board['bot-L'] === winner && board['mid-M'] === winner && board['top-R'] == winner)) {
- return true
- } else {
- return false
- }
- }
- // initialize blank board for first turn
- drawBoard(board);
- let won = false;
- let winner;
- let turn = 'X';
- let move;
- function processInput() {
- rl.question('\n' + 'Turn for ' + turn + '. Your move: ', function(move) {
- winner = turn;
- won = checkForWinner(board, winner);
- if (won === true) {
- console.log('Game over: Player ' + winner + ' wins the game!')
- rl.close();
- } else {
- board[move] = turn;
- if (turn === 'X') {
- turn = 'O';
- } else {
- turn = 'X';
- };
- drawBoard(board);
- processInput();
- }
- });
- }
- processInput();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement