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

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. vue 设置头文件

    vue的头文件是在index.html文件中设置的,毕竟vue的入口 先说一下标签页的名字: 就是这个名字的设置,要想每个标签页的名字都不一样,需要做以下这三步:1. 首先,在index.html文件 ...

  2. C语言集锦(三)Direct3D和GDI+的例子

    0.前言 有些时候你可能想了解,如何用纯C语言来写Direct3D和GDI+的Demo.注意,下面的Direct3D例子不适用于TCC编译器,GDI+的例子是可以的. 1.Direct3D C语言的例 ...

  3. hdu 2824(欧拉函数)

    The Euler function Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. Android进阶之Fragment与Activity之间的数据交互

    1 为什么 因为Fragment和Activity一样是具有生命周期,不是一般的bean通过构造函数传值,会造成异常. 2 Activity把值传递给Fragment 2.1 第一种方式,也是最常用的 ...

  5. AC日记——任务查询系统 洛谷 P3168

    题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任务从第Si秒开始,在第Ei ...

  6. sprak 环境搭建的坑

    1,/etc/hosts下的ip master/slave 的对照 /etc/sysconfig/network 配置: NETWORKING=yes HOSTNAME=master 以及spark/ ...

  7. (6)ASP.NET HttpServerUtility 类

    HttpServerUtility 类 提供用于处理 Web 请求的 Helper 方法 https://msdn.microsoft.com/zh-cn/library/system.web.htt ...

  8. 可靠UDP设计

    最近加入了一个用帧同步的项目,帧同步方案对网络有着极大的影响,于是采用了RUDP(可靠UDP),那么为什么要摒弃TCP,而费尽心思去采用UDP呢?要搞明白这个问题,首先要了解TCP和UDP的区别 , ...

  9. 防止ddos攻击

    1.防止ddos攻击 :接入层过滤器,去判断非法请求ip地主(如果请求过多,自己加入黑名单),上传至防火墙黑名单,不再录入 2.防止xss/css攻击 :在接入层,有第三方jra包工具类,过滤所有请求

  10. iOS7自定义back按钮和pop交互手势

    Clambake for iPhone有一个回退按钮在所有的导航条上.这是一个简单的没有文字箭头. 实现一个自定义按钮是简单的.类似这个设置controller 的navigationItem一个le ...