maymunskoa

TicTacToe /Arrays Advanced Practice/

Jun 21st, 2020
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input){
  2.     const dashboard = [
  3.         [false, false, false],
  4.         [false, false, false],
  5.         [false, false, false]
  6. ];
  7.     let currentPlayer = 'X';
  8.  
  9.     for (const line of input) {
  10.             let [row, col] = line.split(' ').map(Number);
  11.         if (dashboard[row][col] === false){
  12.             dashboard[row][col] = currentPlayer;
  13.            
  14.             // check for winner
  15.             if (checkWinner(dashboard, row, col)){
  16.                 console.log(`Player ${dashboard[row][col]} wins!`);
  17.                 break;
  18.             }else{
  19.                 if(isFinished(dashboard)){
  20.                     console.log(`The game ended! Nobody wins :(`);
  21.                     break;
  22.                    
  23.                 }
  24.             }
  25.                 //if winner => BREAk!
  26.             currentPlayer = currentPlayer === 'X'? 'O':'X';
  27.         }else{
  28.             console.log('This place is already taken. Please choose another!');
  29.         }
  30.            
  31.  
  32.        
  33.        
  34.     }
  35.  
  36.     return dashboard.map(x=>x.join('\t')).join('\n');
  37. ////////
  38. ////////
  39. ////////
  40.     function checkWinner(mtrx, r, c){
  41.         if(
  42.            mtrx[r][0] === mtrx[r][1] && mtrx[r][0] === mtrx[r][2] ||
  43.            mtrx[0][c] === mtrx[1][c] && mtrx[0][c] === mtrx[2][c] ||
  44.            mtrx[0][0] === mtrx[1][1] && mtrx[0][0] === mtrx[2][2] && mtrx[0][0] !== false ||
  45.            mtrx[0][2] === mtrx[1][1] && mtrx[0][2] === mtrx[2][0] && mtrx[0][2] !== false
  46.            ){
  47.                return true;
  48.            }
  49.            return false;
  50. }
  51.  
  52.     function isFinished(mtrx){
  53.         for(let row = 0; row < mtrx.length; row++){
  54.             for(let col = 0; col < mtrx[row].length; col++){
  55.                 if(mtrx[row][col] === false){
  56.                     return false;
  57.                 }
  58.             }
  59.  
  60.         }
  61.         return true;
  62.     }
  63.  
  64. }
Advertisement
Add Comment
Please, Sign In to add comment