2016-09-11 3 views
-2

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

resultLabel

und 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() 

} 



} 
+0

Und Sie sollten die break-Anweisung vermeiden, außer für den Standardfall (weil es keine Aktion darin gibt) – FredericP

Antwort

0

In Ihrem @IBAction Funktionen, Sie 'a' mit 0, 1 oder 2 anstelle des Gebens 'a' diesen Wert zu vergleichen.

Ändern Sie Ihren Code so anstelle von a == 0, es ist a = 0. Tun Sie dies für die 3 @IBActions und versuchen Sie es erneut und es sollte funktionieren.

+0

Danke @AEkon !! Es hat funktioniert, und auch .. Ich habe jetzt etwas Neues gelernt! – tommsyeah