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

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. 【linux高级程序设计】(第八章)进程管理与程序开发 5

    守候进程 启动方式: 在系统启动时由/etc/rd.d目录下的启动脚本启动 利用inetd超级服务器启动 有cron命令定时启动,以及在终端用nohup命令启动 守护进程编程要点 (1)屏蔽有关控制终 ...

  2. ASP.NET MVC验证所有属性是否合法

    1.实现代码: /// <summary> /// 验证所有属性是否合法 /// </summary> /// <param name="modelState& ...

  3. slam学习足迹

    1.slam入门介绍 2.齐次坐标系 3.贝叶斯滤波 均值:平均值 标准差:样本的集中程度/分散度 方差:标准差的平方 协方差:不同维度之间的关系(相关度) 协方差矩阵:多维度之间的关系(相关度) 4 ...

  4. scanf格式控制符之%[]的应用

    考虑只读入小写字母的字符串,这个问题要如何用scanf解决呢? 这就用到了%[] 这个格式控制符,它支持a-z这样的格式控制 char s[111]; scanf("%[a-z]" ...

  5. log4j(一)

    一.基础知识 Log4j有三个重要组件:Logger-日志信息的级别,appenders-日志信息的输出目的地,layouts-日志信息的输出格式. Logger-日志信息的级别:level 是日志记 ...

  6. 线程安全的单例模式还需要对成员变量的set get方法设置锁么

    不需要,线程安全的单例模式,在获得对象时已经加锁了,保证每时每刻只有一个线程获得此单例对象.所以不需要再上锁了啊

  7. 关于Sending build context to Docker daemon 数据很大的问题

    以往进行docker build的时候都是在新建的文件夹下面进行,这次为了图方便,就直接放在开发根目录下进行build,这样子问题就来了.于是就有了下面的文件大小发送量: Sending build ...

  8. Web.config配置文件详解(新手必看) 【转】

    来源 :http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配置 ...

  9. Android - EditText 注意(缺少字符)

    EditText 注意(缺少字符) 本文地址:http://blog.csdn.net/caroline_wendy EditText使用监听(Listener)addTextChangedListe ...

  10. Linux常用的几个vi小命令

    输入跳转命令: 命令行前 Ctrl+A 命令行后 Ctrl+E VI命令中: 当前行 行首  "0" 当前行 行尾  "Shift+4" 当前文档首行首字符:& ...