Advertisement
HXXXXJ

Connect 4

Apr 12th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.51 KB | None | 0 0
  1.  
  2. class Connect{
  3.     var grid : [[Character]]
  4.     var n : Int
  5.     var finished : Bool
  6.     init(_ n : Int) {
  7.         grid =  [[Character]](repeating: [Character](repeating: "O", count: n), count: n)
  8.         self.n = n
  9.         finished = false
  10.     }
  11.    
  12.     func printGrid(){
  13.         for row in grid{
  14.             print(row)
  15.         }
  16.     }
  17.    
  18.     func put(_ col: Int, _ char: Character){
  19.         if finished {
  20.             print("game over")
  21.             return
  22.         }
  23.         for i in stride(from: n - 1, to: 0, by: -1){
  24.             if grid[i][col] == "O" {
  25.                 grid[i][col] = char
  26.                 checkWin(i, col)
  27.                 break
  28.             }
  29.         }
  30.        
  31.     }
  32.    
  33.     func checkWin(_ x: Int, _ y:Int){
  34.         let user = grid[x][y]
  35.         var count = 0
  36.         //check bottom
  37.         var i = x
  38.         while i < n && count < 4{
  39.             if grid[i][y] == user {
  40.                 i += 1
  41.                 count += 1
  42.             }else{
  43.                 break
  44.             }
  45.         }
  46.         if count == 4 {
  47.             printWinner(user)
  48.             return
  49.         }
  50.        
  51.         //check left right
  52.         var j = y
  53.         count = 0
  54.         while j >= 0 && count < 4{
  55.             if grid[x][j] == user {
  56.                 j -= 1
  57.                 count += 1
  58.             }else{
  59.                 break
  60.             }
  61.         }
  62.         j = y + 1
  63.         while j < n && count < 4{
  64.             if grid[x][j] == user {
  65.                 j += 1
  66.                 count += 1
  67.             }else{
  68.                 break
  69.             }
  70.         }
  71.         if count == 4 {
  72.             printWinner(user)
  73.             return
  74.         }
  75.        
  76.         //check 2 cross
  77.         i = x
  78.         j = y
  79.         count = 0
  80.         while i < n && j >= 0 && count < 4 {
  81.             if grid[i][j] == user {
  82.                 j -= 1
  83.                 i += 1
  84.                 count += 1
  85.             }else{ break }
  86.         }
  87.         if count == 4 {
  88.             printWinner(user)
  89.             return
  90.         }
  91.        
  92.         i = x + 1
  93.         j = y + 1
  94.         while i < n && j < n && count < 4 {
  95.             if grid[i][j] == user {
  96.                 j += 1
  97.                 i += 1
  98.                 count += 1
  99.             }else{ break }
  100.         }
  101.         if count == 3 {
  102.             printWinner(user)
  103.             return
  104.         }
  105.     }
  106.    
  107.    
  108.     func printWinner(_ char: Character) {
  109.         printGrid()
  110.         finished = true
  111.         print("\(char) win !!!!!")
  112.     }
  113.    
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement