Ich bin neu im Programmieren und ich versuche gerade Swift zu lernen. Ich versuche ein einfaches Stein-Schere-Papierspiel zu machen. Um es zu tun, habe ich eine switch-Anweisung verwendet, aber aus irgendeinem Grund funktioniert es nicht richtig.Stein-Papier-Schere App (Swift)?
Dies ist die Struktur I gedacht dieses kleine Spiel zu machen:
Es gibt drei Tasten für Stein, Schere, Papier, und Sie haben zu wählen. Es gibt ein Label, das sagt, was der Gegner (Computer) gewählt hat, und ich nannte es GegnerLabel. Es ist ein Label, das sagt, was das Ergebnis ist („Sie haben gewonnen“, zum Beispiel), und ich nannte es
resultLabelund es funktioniert wie folgt (diese genau so, wie es ist strukturiert):
var a = Int()
if the player chooses Rock ---> a = 0
if the player chooses Paper ---> a = 1
if the player chooses Scissors ---> a = 2
For the opponent (computer, not a person) there is a randomNumber which
could be 0,1,2, and same here, if 0->opponent chose rock, if
1->opponent chose paper, if 2-> opponent chose scissors
und Dann schrieb ich eine switch-Anweisung, die alles zusammenfasst. Das Problem ist, dass aus irgendeinem Grund, wenn ich die App laufen, wenn ich Rock wählen alles gut funktioniert, aber wenn ich Papier oder Schere wählen, sind die Ergebnisse falsch.
Zum Beispiel, wenn ich Papier (a = 1) wähle und der Gegner hat Papier (was bedeutet, dass die Zufallszahl Zufallszahl = 1 ist), ist das ErgebnisLabel nicht "DRAW", wie es sein sollte, aber es ist "You Lost": Papier und Schere funktionieren nicht !! Was mache ich falsch? Hier wird der vollständige Code ist:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var opponentLabel: UILabel!
@IBOutlet weak var resultLabel: UILabel!
@IBOutlet weak var rockButton: UIButton!
@IBOutlet weak var paperButton: UIButton!
@IBOutlet weak var scissorsButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Hide()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func Hide() {
opponentLabel.hidden = true
resultLabel.hidden = true
}
func unHide() {
opponentLabel.hidden = false
resultLabel.hidden = false
}
var a = Int()
var randomNumber = Int()
func randomChoice() {
randomNumber = Int(arc4random() % 3)
NSLog("randomNumber%ld", randomNumber)
}
func gameOn() {
switch(randomNumber) {
case 0:
opponentLabel.text = "The opponent chose : ROCK"
if a == 0 {
resultLabel.text = "DRAW"
} else {
if a == 1 {
resultLabel.text = "YOU WON!"
}
if a == 2 {
resultLabel.text = "YOU LOST!"
}
}
unHide()
break
case 1:
opponentLabel.text = "The opponent chose: PAPER"
if a == 0 {
resultLabel.text = "YOU LOST!"
} else {
if a == 1 {
resultLabel.text = "DRAW"
}
if a == 2 {
resultLabel.text = "YOU WON!"
}
}
unHide()
break
case 2:
opponentLabel.text = "The opponent chose: SCISSORS"
if a == 0 {
resultLabel.text = "YOU WON!"
} else {
if a == 1 {
resultLabel.text = "YOU LOST!"
}
if a == 2 {
resultLabel.text = "DRAW"
}
}
unHide()
break
default:
break
}
}
@IBAction func rockButton(sender: AnyObject) {
a == 0
randomChoice()
gameOn()
}
@IBAction func paperButton(sender: AnyObject) {
a == 1
randomChoice()
gameOn()
}
@IBAction func scissorsButton(sender: AnyObject) {
a == 2
randomChoice()
gameOn()
}
}
Und Sie sollten die break-Anweisung vermeiden, außer für den Standardfall (weil es keine Aktion darin gibt) – FredericP