Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.56 KB | None | 0 0
  1. /*
  2. Cassidy Brooke - Recurse Center
  3. Written in JavaScript, Node
  4. July 6, 2019
  5. */
  6.  
  7.  
  8. // this is required to take terminal inputs in Node.js
  9. const readline = require('readline');
  10. const rl = readline.createInterface({
  11. input: process.stdin,
  12. output: process.stdout
  13. });
  14.  
  15.  
  16. // welcome message
  17. console.log('\n');
  18. console.log('******************************');
  19. console.log('* Tic-Tac-Toe *');
  20. console.log('******************************');
  21. console.log('\n');
  22. 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');
  23.  
  24.  
  25. // store board state in data structure
  26. board = {
  27. 'top-L': ' ', 'top-M': ' ', 'top-R': ' ',
  28. 'mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ',
  29. 'bot-L': ' ', 'bot-M': ' ', 'bot-R': ' '
  30. }
  31.  
  32.  
  33. // print board state to console
  34. function drawBoard(board) {
  35. console.log(board['top-L'] + '|' + board['top-M'] + '|' + board['top-R']);
  36. console.log('-+-+-');
  37. console.log(board['mid-L'] + '|' + board['mid-M'] + '|' + board['mid-R']);
  38. console.log('-+-+-');
  39. console.log(board['bot-L'] + '|' + board['bot-M'] + '|' + board['bot-R']);
  40. }
  41.  
  42.  
  43. // possible winning combos
  44. function checkForWinner(board, turn) {
  45.  
  46. if ((board['top-L'] === winner && board['top-M'] === winner && board['top-R'] == winner) ||
  47. (board['mid-L'] === winner && board['mid-M'] === winner && board['mid-R'] == winner) ||
  48. (board['bot-L'] === winner && board['bot-M'] === winner && board['bot-R'] == winner) ||
  49. (board['top-L'] === winner && board['mid-L'] === winner && board['bot-L'] == winner) ||
  50. (board['top-M'] === winner && board['mid-M'] === winner && board['mid-R'] == winner) ||
  51. (board['top-R'] === winner && board['mid-M'] === winner && board['bot-R'] == winner) ||
  52. (board['top-L'] === winner && board['mid-M'] === winner && board['bot-R'] == winner) ||
  53. (board['bot-L'] === winner && board['mid-M'] === winner && board['top-R'] == winner)) {
  54. return true
  55. } else {
  56. return false
  57. }
  58. }
  59.  
  60.  
  61. // initialize blank board for first turn
  62. drawBoard(board);
  63. let won = false;
  64. let winner;
  65. let turn = 'X';
  66. let move;
  67.  
  68.  
  69. function processInput() {
  70. rl.question('\n' + 'Turn for ' + turn + '. Your move: ', function(move) {
  71. winner = turn;
  72. won = checkForWinner(board, winner);
  73.  
  74. if (won === true) {
  75. console.log('Game over: Player ' + winner + ' wins the game!')
  76. rl.close();
  77. } else {
  78. board[move] = turn;
  79. if (turn === 'X') {
  80. turn = 'O';
  81. } else {
  82. turn = 'X';
  83. };
  84. drawBoard(board);
  85. processInput();
  86. }
  87. });
  88. }
  89. processInput();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement