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

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 = "

Swift实战(一): 剪子包袱锤ios应用的更多相关文章

  1. Swift实战-豆瓣电台(九)简单手势控制暂停播放(全文完)

    Swift实战-豆瓣电台(九)简单手势控制暂停播放 全屏清晰观看地址:http://www.tudou.com/programs/view/tANnovvxR8U/ 这节我们主要讲UITapGestu ...

  2. Swift实战-豆瓣电台(八)播放进度与时间

    视频观看地址:http://www.tudou.com/programs/view/4mEtz8S72k0/?resourceId=399000367_06_02_99 这节主要内容是NSTimer, ...

  3. Swift实战-豆瓣电台(七)显示动画

    youku观看地址http://v.youku.com/v_show/id_XNzMxODQzNDIw.html 这是一个很酷的动画效果.特别是数据多的时候 知识点 在单元格(Cell)显示方法中设置 ...

  4. Swift实战-豆瓣电台(六)视图跳转,传参及回跳

    youku观看地址:http://v.youku.com/v_show/id_XNzMxMzQ3MDcy.html 要点 在ChannelController里面声明一个代理 这个代理遵循我们自定义的 ...

  5. Swift实战-豆瓣电台(五)播放音乐

    观看地址 http://v.youku.com/v_show/id_XNzMwODM0MzI0.html 在这节里面,我们简单学习了一下MediaPlayer的使用 引入媒体框架 import Med ...

  6. Swift实战-豆瓣电台(四)歌曲列表的展现

    观看地址 http://v.youku.com/v_show/id_XNzMwNDE0OTA4.html 这节的主要内容是如何利用cell展现获取到的数据. 首先申明两个数组来储存我们获取到的数据 v ...

  7. Swift实战-豆瓣电台(三)获取网络数据

    观看地址:http://v.youku.com/v_show/id_XNzMwMzQxMzky.html 这节内容,我们先说了怎么将storyboard中的组件在类中进行绑定.然后写了一个类用来获取网 ...

  8. Swift实战技巧

    Swift实战技巧 从OC转战到Swift,差别还是蛮大的,本文记录了我再从OC转到Swift开发过程中遇到的一些问题,然后把我遇到的这些问题记录形成文章,大体上是一些Swift语言下面的一些技巧,希 ...

  9. Swift开发iOS项目实战视频教程(一)---iOS真简单

    本课主要介绍iOS项目的创建.第一个iOS项目的开发.UILabel.UIButton的使用. 假设你看完此视频还认为iOS非常难,请你来找我! 本教程摒弃枯燥的语法和知识解说,全是有趣有料的项目实战 ...

随机推荐

  1. python日期时间相关

    参考: http://www.coder4.com/archives/2239 http://www.cnblogs.com/lhj588/archive/2012/04/23/2466653.htm ...

  2. js 验证数字的正则表达式集

    <script type="text/javascript">     function validate(){       var reg = new RegExp( ...

  3. 2016百度之星资格赛 Round1(2,3,4题)

    Problem B Accepts: 2515 Submissions: 9216 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...

  4. AC日记——灾后重建 洛谷 P1119

    灾后重建 思路: 看到n<=200,思考弗洛伊德算法: 如何floyed呢? floyed是一种动态规划求最短路的算法: 它通过枚举中间点来更新两点之间最短路: 回到这个题本身: 所有点的重建完 ...

  5. AC日记——[国家集训队2010]小Z的袜子 cogs 1775

    [国家集训队2010]小Z的袜子 思路: 传说中的莫队算法(优雅的暴力): 莫队算法是一个离线的区间询问算法: 如果我们知道[l,r], 那么,我们就能O(1)的时间求出(l-1,r),(l+1,r) ...

  6. Git Base 操作(一)

    Git常用命令 1. 命令git init把这个目录变成Git可以管理的仓库: 2. 命令git commit把文件提交到仓库 这里需要注意的是,Git只能跟踪文本文件的改动,如txt文件,网页,所有 ...

  7. Django ModelChoiceField前台下拉菜单显示object的解决方法

    在网上找了好半天都没找到,在model中添加即可,不加的话显示就是object def __str__(self): return self.name

  8. Codeforces Round #450 (Div. 2) B. Position in Fraction【数论/循环节/给定分子m 分母n和一个数c,找出c在m/n的循环节第几个位置出现,没出现过输出-1】

    B. Position in Fraction time limit per test 1 second memory limit per test 256 megabytes input stand ...

  9. Topcoder SRM 668 DIV 2

    VerySecureEncryption 模拟 题意: 给你个串message,然后一个置换key,输出置换K次后的结果. 题解: 直接模拟就好. 代码: #include<iostream&g ...

  10. NOI模拟题6 Problem C: Circle

    Solution 首先这个矩阵, 很明显的就是Vandermonde矩阵. 我们有公式: \[ |F_n| = \prod_{1 \le j < i \le n} (a_i - a_j) \] ...