来自十奶的大作业教学视频。

http://www.swiftv.cn/course/ic2tqzob

 

主要了解了MVC模型。

首先是View,通过设计mainstoryboard构建UI界面,主要靠拖动,用到了label和button。

接着是model,设计RPS(剪子包袱锤)结构体,见Rps.swift。

 1 //
 2 //  Rps.swift
 3 //  rockios
 4 //
 5 //  Created by can on 15/11/9.
 6 //  Copyright (c) 2015年 can. All rights reserved.
 7 //
 8 
 9 import Foundation
10 
11 
12 struct Rps{
13     private var stat:Stats!
14     
15     enum Stats {
16         case Rock
17         case Scissor
18         case Paper
19     }
20     
21     func getStats () -> Stats {
22         return stat
23     }
24     
25     mutating func setStats (inputStat: Stats!) {
26         stat=inputStat
27     }
28     
29     func randomRps () -> Stats{             //生成一个随机的手势
30         let randomNumer = arc4random_uniform(3)
31         var randomStat:Stats!
32         switch randomNumer{
33         case 0:
34             randomStat =  .Rock
35         case 1:
36             randomStat = .Scissor
37         case 2:
38             randomStat = .Paper
39         default:
40             print("Error")
41         }
42         return  randomStat
43     }
44     
45     func compare (aRpsStat:Stats, anotherRpsStat:Stats) -> Int {
46         //返回三种状态,0为前者数,1为前者赢,2为平局
47         var result:Int!
48         switch aRpsStat {
49         case .Rock:
50             switch anotherRpsStat{
51             case .Rock:
52                 result=2
53             case .Scissor:
54                 result=1
55             case .Paper:
56                 result=0
57             }
58             
59         case .Scissor:
60             switch anotherRpsStat{
61             case .Rock:
62                 result=0
63             case .Scissor:
64                 result=2
65             case .Paper:
66                 result=1
67             }
68             
69         case .Paper:
70             switch anotherRpsStat{
71             case .Rock:
72                 result=1
73             case .Scissor:
74                 result=0
75             case .Paper:
76                 result=2
77             }
78             
79         }
80         return result
81 }
82 
83 }

最后是control,即ViewControl.swift,要和mainstoryboard关联起来,靠outlet和action。

//
//  ViewController.swift
//  rockios
//
//  Created by can on 15/11/9.
//  Copyright (c) 2015年 can. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    
    var rps = Rps();
    
    
    // outlet and action
    
    @IBOutlet weak var Rock: UIButton!
    
    @IBOutlet weak var Paper: UIButton!
    
    @IBOutlet weak var Scissor: UIButton!
    
    
    @IBOutlet weak var textUp: UITextField!
    
    @IBOutlet weak var textDown: UITextField!
    
    @IBAction func Rock(sender:AnyObject){
        rps.setStats(.Rock)
        judgement()
    }
    
    @IBAction func Paper(sender:AnyObject){
        rps.setStats(.Paper)
        judgement()
    }
    
    @IBAction func Scissor(sender:AnyObject){
        rps.setStats(.Scissor)
        judgement()
    }
    
    @IBAction func again(sender:AnyObject){
        resetAll()
    }
    
    //全局初始化
    func resetAll(){
        textUp.text = ""
        textDown.text = ""
        rps.setStats(nil)
    }
    
    //判断输赢
    func judgement () {
        let randomRps=rps.randomRps()
        let currentStat=rps.getStats()
        let result = rps.compare(currentStat, anotherRpsStat: randomRps)
        screen(result,stat:currentStat,anotherStat:randomRps)
    }
   
    
    //控制显示的方法
    func screen(result:Int,stat:Rps.Stats,anotherStat:Rps.Stats){
        var resultString=""
        var statString=""
        var anotherString=""
        
        switch result{
        case 0:
            resultString="输"
        case 1:
            resultString="赢"
        case 2:
            resultString="竟然平局"
        default:
            resultString="醉"
        }
        
        switch stat{
        case .Rock:
            statString = "👊"
        case .Scissor:
            statString = "✌️"
        case .Paper:
            statString = "✋"
        }
        
        switch anotherStat{
        case .Rock:
            anotherString = "👊"
        case .Scissor:
            anotherString = "✌️"
        case .Paper:
            anotherString = "✋"
        }
        
        textUp.text = "你" + resultString + "了!"
        textDown.text = "你出了" + statString + ",但电脑出了" + anotherString + "!"
        
    }

    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}