Advertisement
Pripovedac

Vanilla TicTacToe

Aug 20th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var board = [
  2.     ['', '', ''],
  3.     ['', '', ''],
  4.     ['', '', '']
  5. ]
  6. var emptyBoard = [
  7.     ['', '', ''],
  8.     ['', '', ''],
  9.     ['', '', '']
  10. ]
  11. var isX = true
  12. var gameOn = true
  13. var boxesLeftToClick = Math.pow(board[0].length, 2)
  14. function play(i, j) {
  15.     //Znam da ne bi trebalo isX/board da gadjam globalno
  16.     //ali mislim da je neprakticno da svaki put
  17.     //unosim naizmenicno true/false da se zna
  18.     //ko igra.
  19.     if (board[i][j] != '')
  20.         console.log('Ovo polje je vec zauzeto.')
  21.     else {
  22.         if (isX) {
  23.             board[i][j] = 'x'
  24.         }
  25.         else {
  26.             board[i][j] = 'o'
  27.         }
  28.         boxesLeftToClick--
  29.         checkWinner(board, isX, gameOn)
  30.         isX = !isX
  31.         if(boxesLeftToClick == 0 && gameOn == true) {
  32.             resetGame()
  33.         }
  34.         console.log(board)
  35.     }
  36. }
  37. function checkWinner(board, isX, gameOn) {
  38.     if (checkRow(board, 0)) {
  39.         console.log('First row. Winner: ', isX ? 'x.' : 'o.')
  40.      }
  41.     else if (checkRow(board, 1)) {
  42.         console.log('Second row. Winner: ', isX ? 'x.' : 'o.') }
  43.     else if (checkRow(board, 2)) {
  44.         console.log('Third row. Winner: ', isX ? 'x.' : 'o.') }
  45.     else if (checkRow(transposeMatrix(board), 0)) {
  46.         console.log('First column. Winner: ', isX ? 'x.' : 'o.') }
  47.     else if (checkRow(transposeMatrix(board), 1)) {
  48.         console.log('Second column. Winner: ', isX ? 'x.' : 'o.') }
  49.     else if (checkRow(transposeMatrix(board), 2)) {
  50.         console.log('Third column. Winner: ', isX ? 'x.' : 'o.') }
  51.     else if (checkMainDiagonal(board)) {
  52.         console.log('Main diagonal. Winner: ', isX ? 'x.' : 'o.' ) }
  53.     else if (checkOtherDiagonal(board)) {
  54.         console.log('The other diagonal. Winner: ', isX ? 'x.' : 'o.' ) }
  55. }
  56.  
  57. function checkRow(board, i) {
  58.     var gameOver = board[i][0] != '' && board[i][0] == board[i][1] && board[i][1] == board[i][2]
  59.     if(gameOver) {
  60.       resetGame()
  61.     }
  62.     return gameOver
  63. }
  64. function checkMainDiagonal(board) {
  65.     var gameOver = board[0][0] != '' && board[0][0] == board[1][1] && board[1][1] == board[2][2]
  66.     if(gameOver) {
  67.         resetGame()
  68.     }
  69.     return gameOver
  70. }
  71. function checkOtherDiagonal(board) {
  72.     var gameOver = board[0][2] != '' && board[0][2] == board[1][1] && board[1][1] == board[2][0]
  73.     if(gameOver) {
  74.         resetGame()
  75.     }
  76.     return gameOver
  77. }
  78. function transposeMatrix(matrix) {
  79.   var result = new Array(matrix[0].length)
  80.   for(var i = 0; i < result.length; i++) {
  81.       result[i] = new Array(matrix[0].length)
  82.       for(var j = 0; j < result[i].length; j++) {
  83.           result[i][j] = matrix[j][i]
  84.       }
  85.   }
  86.   return result
  87. }
  88.  
  89. function resetGame() {
  90.   console.log('Mozete otpoceti novu igru.')
  91.   if(boxesLeftToClick == 0) {
  92.       console.log('Neresno.')
  93.     }    
  94.   this.board = emptyBoard
  95.   this.gameOn = false
  96.   this.isX = true
  97.  
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement