import UIKit
class ViewController: UIViewController {
@IBOutlet weak var playerLabel: UILabel!
@IBOutlet weak var winnerLabel: UILabel!
// Add 9 buttons to your storyboard and connect them to these outlets
@IBOutlet weak var button1: UIButton!
@IBOutlet weak var button2: UIButton!
@IBOutlet weak var button3: UIButton!
@IBOutlet weak var button4: UIButton!
@IBOutlet weak var button5: UIButton!
@IBOutlet weak var button6: UIButton!
@IBOutlet weak var button7: UIButton!
@IBOutlet weak var button8: UIButton!
@IBOutlet weak var button9: UIButton!
var gameLogic = GameLogic()
override func viewDidLoad() {
super.viewDidLoad()
updateUI()
}
@IBAction func buttonTapped(_ sender: UIButton) {
let row = sender.tag / 3
let column = sender.tag % 3
gameLogic.playMove(row: row, column: column)
computerPlay()
updateUI()
}
func updateUI() {
playerLabel.text = "Player: \(gameLogic.currentPlayer == .x ? "X" : "O")"
if let winner = gameLogic.winner {
winnerLabel.text = "Winner: \(winner == .x ? "X" : "O")"
disableButtons()
} else {
winnerLabel.text = ""
}
button1.setTitle(playerString(for: gameLogic.board[0][0]), for: .normal)
button2.setTitle(playerString(for: gameLogic.board[0][1]), for: .normal)
button3.setTitle(playerString(for: gameLogic.board[0][2]), for: .normal)
button4.setTitle(playerString(for: gameLogic.board[1][0]), for: .normal)
button5.setTitle(playerString(for: gameLogic.board[1][1]), for: .normal)
button6.setTitle(playerString(for: gameLogic.board[1][2]), for: .normal)
button7.setTitle(playerString(for: gameLogic.board[2][0]), for: .normal)
button8.setTitle(playerString(for: gameLogic.board[2][1]), for: .normal)
button9.setTitle(playerString(for: gameLogic.board[2][2]), for: .normal)
}
func playerString(for player: Player?) -> String {
if player == nil {
return ""
} else if player == .x {
return "X"
} else {
return "O"
}
}
func disableButtons() {
button1.isEnabled = false
button2.isEnabled = false
button3.isEnabled = false
button4.isEnabled = false
button5.isEnabled = false
button6.isEnabled = false
button7.isEnabled = false
button8.isEnabled = false
button9.isEnabled = false