Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Connect{
- var grid : [[Character]]
- var n : Int
- var finished : Bool
- init(_ n : Int) {
- grid = [[Character]](repeating: [Character](repeating: "O", count: n), count: n)
- self.n = n
- finished = false
- }
- func printGrid(){
- for row in grid{
- print(row)
- }
- }
- func put(_ col: Int, _ char: Character){
- if finished {
- print("game over")
- return
- }
- for i in stride(from: n - 1, to: 0, by: -1){
- if grid[i][col] == "O" {
- grid[i][col] = char
- checkWin(i, col)
- break
- }
- }
- }
- func checkWin(_ x: Int, _ y:Int){
- let user = grid[x][y]
- var count = 0
- //check bottom
- var i = x
- while i < n && count < 4{
- if grid[i][y] == user {
- i += 1
- count += 1
- }else{
- break
- }
- }
- if count == 4 {
- printWinner(user)
- return
- }
- //check left right
- var j = y
- count = 0
- while j >= 0 && count < 4{
- if grid[x][j] == user {
- j -= 1
- count += 1
- }else{
- break
- }
- }
- j = y + 1
- while j < n && count < 4{
- if grid[x][j] == user {
- j += 1
- count += 1
- }else{
- break
- }
- }
- if count == 4 {
- printWinner(user)
- return
- }
- //check 2 cross
- i = x
- j = y
- count = 0
- while i < n && j >= 0 && count < 4 {
- if grid[i][j] == user {
- j -= 1
- i += 1
- count += 1
- }else{ break }
- }
- if count == 4 {
- printWinner(user)
- return
- }
- i = x + 1
- j = y + 1
- while i < n && j < n && count < 4 {
- if grid[i][j] == user {
- j += 1
- i += 1
- count += 1
- }else{ break }
- }
- if count == 3 {
- printWinner(user)
- return
- }
- }
- func printWinner(_ char: Character) {
- printGrid()
- finished = true
- print("\(char) win !!!!!")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement