Ich bin ziemlich neu in der Programmierung und möchte Swift 3.0 lernen.Bool gibt nicht korrekt zurück
Ich habe versucht, mein eigenes TicTacToe-Spiel zu schreiben, aber irgendwie die Bool Rückkehr funktioniert nicht so, wie ich will, wenn ich für einen Gewinner überprüfen ...
Die CheckWin() Funktion wie folgt aussieht :
func CheckWin() -> Bool {
if button1.titleLabel?.text == button2.titleLabel?.text && button2.titleLabel?.text == button3.titleLabel?.text && button1.titleLabel?.text != nil {
return true
} else {
return false
}
//and so on...
Mein Problem ist, wenn ich auf einen Knopf klicken sie auf die Schaltfläche mit einem „X“ oder ein „O“ und danach rufen sie die CheckWin() Funktion I füllt über eine if-Anweisung aber es setzt der Labeltext zu "Won!" Nach der nächsten Zeit klicke ich auf eine Schaltfläche. Anstatt es sofort zu überprüfen und den Labeltext auf "Gewonnen!" Zu setzen.
@IBAction func buttonClick(_ sender: UIButton) {
if sender.titleLabel?.text == nil {
if player % 2 == 0 {
sender.setTitle(playerx, for: UIControlState.normal)
player += 1 //Adds 1 to the variable player
turn += 1 //Adds 1 to the variable turn (to check later for a draw)
} else {
sender.setTitle(playero, for: UIControlState.normal)
player += 1
turn += 1
}
}
if CheckWin() {
label.text = "Won!"
}
}
Ich freue mich über jede Hilfe/Tipps! Danke im Voraus!
(By the way, ich weiß, dass es nicht so eine gute Idee ist, einen Auslass für jeden Knopf zu schaffen, aber auf dem ersten Arbeits Ich will nur dieses Ding bekommen, bevor ich zu verbessern beginnen) :)
Verwenden Sie den * Debugger. * Setzen Sie einen Haltepunkt, Einzelschritt durch den Code, überprüfen Sie die Variablen. An welchem Punkt tut das Programm nicht, was Sie erwarten? –
@MartinR wenn es auf die if-Anweisung CheckWin() geht, überprüft es die button.titleLabels, aber irgendwie false zurück und das nächste Mal, wenn ich auf eine Schaltfläche klicke es überprüft es wieder und es gibt wahr zurück, aber der Code sagt, dass es die titleLabel zu "X" oder "O" vor, nicht wahr? Ich bekomme es nicht ... meiner Meinung nach sollte der Code korrekt sein –
Oberhalb der Zeile "if button1.titleLabel? .text" fügen Sie drei Druckanweisungen wie "print (button1.titleLabel? .text)" usw. ein. Was zeigen sie in der Konsole? – Magnas