SKGreyHound

Untitled

Jan 18th, 2021
862
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. function ticTacToe(input) {
  2.  
  3. let dashboard = [[false, false, false],
  4. [false, false, false],
  5. [false, false, false]];
  6.  
  7. let win = false;
  8. let player = 'X';
  9. for (let i = 0; i < input.length; i++) {
  10. let [row, col] = input[i].split(' ').map(num => Number(num));
  11.  
  12. if (!dashboard[row][col]) {
  13. dashboard[row][col] = player;
  14.  
  15. if (checkForWinner(dashboard, player)) {
  16. win = true;
  17. break;
  18. }
  19.  
  20. player = player === 'X' ? 'O' : 'X'
  21. } else {
  22. console.log("This place is already taken. Please choose another!");
  23. }
  24.  
  25. }
  26.  
  27. if (win) {
  28. console.log(`Player ${player} wins!`);
  29. } else {
  30. console.log("The game ended! Nobody wins :(");
  31. }
  32. dashboard.forEach(line => {
  33. console.log(line.join('\t'));
  34. });
  35.  
  36. function checkForWinner(currentBoard, sign) {
  37. let isWinner = false;
  38. for (let i = 0; i < 3; i++) {
  39. if (currentBoard[i][0] === sign && currentBoard[i][1] === sign && currentBoard[i][2] === sign) {
  40. isWinner = true;
  41. break;
  42. }
  43. if (currentBoard[0][i] === sign && currentBoard[1][i] === sign && currentBoard[2][i] === sign) {
  44. isWinner = true;
  45. break;
  46. }
  47. }
  48. if (!isWinner) {
  49. if ((currentBoard[0][0] === sign && currentBoard[1][1] === sign && currentBoard[2][2] === sign) ||
  50. (currentBoard[2][0] === sign && currentBoard[1][1] === sign && currentBoard[0][2] === sign)) {
  51. isWinner = true;
  52. }
  53. }
  54. return isWinner;
  55. }
  56. }
Advertisement
Add Comment
Please, Sign In to add comment