Ich arbeite an einem Tic Tac Toe Projekt, aber es funktioniert nicht. Das Problem, das ich damit erhielt, ist auf let space = sender.tag
. Was passiert, wenn ich auf eine Tic-Tac-Toe-Box klicke, um es zu testen, gibt es mir "exc_bad_inst". Kann mir jemand helfen?EXC_BAD_INST Fehler beim Ausführen meiner iOS App
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var buttonOne: UIButton!
@IBOutlet weak var buttonTwo: UIButton!
@IBOutlet weak var buttonThree: UIButton!
@IBOutlet weak var buttonFour: UIButton!
@IBOutlet weak var buttonFive: UIButton!
@IBOutlet weak var buttonSix: UIButton!
@IBOutlet weak var buttonSeven: UIButton!
@IBOutlet weak var buttonEight: UIButton!
@IBOutlet weak var buttonNine: UIButton!
@IBOutlet weak var gameResult: UILabel!
var gameState = ["","","",
"","","",
"","",""
]
let winningCombos = [[0, 1, 2], [3, 4, 5], [6, 7, 8], //horizontal
[0, 3, 6], [1, 4, 7], [2, 5, 8], //vertical
[0, 4, 8], [2, 4, 6]] //diagonals
var gameOver = false
var turnCount = 0
var currentPlayer: String!
func pickFirstPlayer() -> String {
if arc4random_uniform(2) == 0 {
currentPlayer = "o"
} else {
currentPlayer = "x"
}
return currentPlayer
}
func toggleNextPlayer() {
if currentPlayer == "o" {
currentPlayer = "x"
} else {
currentPlayer = "o"
}
}
@IBAction func makeMove(sender: AnyObject) {
let space = sender.tag
if (gameState[space] == "" && gameOver == false) {
let turnImage = UIImage(named: "\(self.currentPlayer).png")
sender.setImage(turnImage!, forState: .Normal)
gameState[space] = self.currentPlayer
self.toggleNextPlayer()
self.turnCount++
self.checkForWinner()
}
}
func checkForWinner() {
var winner = ""
for combo in winningCombos {
var row: [String] = []
for space in combo {
row.append(gameState[space])
}
if (row[0] == row[1] && row[1] == row[2] && row[0] != "") {
gameOver = true
winner = row[0].uppercaseString
gameResult.text = "\(winner) is the winner!"
}
}
if (turnCount == 9 && winner == "") {
gameResult.text = "It's a tie!"
gameOver = true
}
}
override func viewDidLoad() {
super.viewDidLoad()
pickFirstPlayer()
}
}
Dank für die Info, geht über das so schnell wie möglich –