第二周Swift总结

猜拳游戏


import UIKit

class ViewController: UIViewController {
    
    var thyAnswer = 0
    
    @IBOutlet weak var cloth: UIButton!
    
    @IBAction func showCloth(sender: AnyObject) {
        cloth.backgroundColor = UIColor.blackColor()
        thyAnswer = 3
    }

    @IBAction func showStone(sender: AnyObject) {
        thyAnswer = 2
    }

    @IBAction func showScissor(sender: AnyObject) {
        thyAnswer = 1
    }

    @IBAction func okAction(sender: AnyObject) {
        
        let cp = Int(arc4random_uniform(4)) + 1   
        if thyAnswer == 1 && cp == 2 || thyAnswer == 2 && cp == 3 || thyAnswer == 3 && cp == 1{
            if thyAnswer == 1{
                overLabel("你输了,你出的剪刀,电脑出的石头")
            }else if thyAnswer == 2{
                overLabel("你输了,你出的石头,电脑出的布")
            }else{
                overLabel("你输了,你出的布,电脑出的剪刀")
            }
        }
        else if thyAnswer == cp{
            overLabel("和,你们出的一样的")
        }
        else if thyAnswer == 0{
            overLabel("请做出你要出的选择")
        }
        else{
            if thyAnswer == 1{
                overLabel("你赢了,你出的剪刀,电脑出的布")
            }else if thyAnswer == 2{
                overLabel("你赢了,你出的石头,电脑出的剪刀")
            }else {
                overLabel("你赢了,你出的布,电脑出的石头")
            }
        }
    }
    func overLabel(stl:String){
        showEnd.text = stl
    }

    @IBOutlet weak var showEnd: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        showEnd.adjustsFontSizeToFitWidth = true
        
    }

}

-以上就是代码,个人总结就是将if的灵活运用,if与if的多重嵌套,当然也可以用swith case 这个,个人错的地方比较多的地方就是考虑if的�各种情况不全面,有漏掉的地方,比如这个的thyAnswer == 0就容易漏掉。最后还有小地方就是注意showEnd.adjustsFontSizeToFitWidth = true动态变化,就是框框随着文字变动而变动。

骰子赌博

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        lastWager.adjustsFontSizeToFitWidth = true
        lastWager.text = "\(money)"
    }
    
    
    @IBOutlet weak var rightDice: UILabel!
    
    
    @IBOutlet weak var leftDice: UILabel!
    var money = 1000000
    var debt = 0
    var isJuge = 0
    @IBAction func okAction(sender: AnyObject) {


        while isJuge == 0 || isJuge == 1{
            debt = Int(showWager.text!)!
            while  debt <= 0 || debt > money{
                alertAlert("请选择你要下的赌注", msg: "你是否继续游戏")
            }
            let firstPoint = roll() + roll()
            if firstPoint == 7 || firstPoint == 11{
                
                alertAlert("你赢了", msg: "你是否继续游戏")
            money += debt
                isJuge = 2
            }
            else if firstPoint == 2 || firstPoint == 3 || firstPoint == 12{
                alertAlert("你输了", msg: "你是否继续游戏")
                money -= debt
                isJuge = 2
            }else{
                isJuge = 1
            }
            while isJuge == 1{
                    let current = roll() + roll()
                    if current == 7{
                alertAlert("你输了", msg: "你是否继续游戏")
                    money -= debt
                        isJuge = 2
                }
                else if current == firstPoint{
                alertAlert("你赢了", msg: "你是否继续游戏")
                    money += debt
                        isJuge = 2
                }
           }
            lastWager.text = "\(money)"
            if money <= 0{
                alertAlert("你的余额不足,请补足再继续游戏", msg: "你是否继续游戏")
                isJuge = 2
            }
        }

    }
    func roll() -> Int{
        return Int(arc4random_uniform(6)) + 1
    }
    func alertAlert(tl:String,msg:String){
        let alertController = UIAlertController(title: tl, message: msg, preferredStyle: .Alert)
        
        let yAction = UIAlertAction(title: "确定", style: .Default, handler: {
            action in
            self.isJuge = 0
            
            
        })
        let nAction = UIAlertAction(title: "取消", style: .Default, handler: {
            action in
            self.isJuge = 2
        })
        alertController.addAction(nAction)
        alertController.addAction(yAction)
        self.presentViewController(alertController, animated: true, completion: nil)
    }
    
    @IBOutlet weak var showWager: UITextField!
    
    @IBOutlet weak var lastWager: UILabel!
    
}

做这个做了好久,不过总体还是做出来了,其实后面还可以在添加一些功能,比如充值,本来想用老师的repeat while 的,但是用起来感觉还是没有while 顺手就没有用了,出现的问题就是在第二次和之后的丢骰子的时候没有退出循环,一直在游戏中循环,然后我没用老师的bool类型 我直接的是isJuge赋值0 1 2

屏幕快照 2016-08-06 上午10.36.16.png
屏幕快照 2016-08-06 上午10.36.42.png

百钱百鸡

for x in 0...20{
    for y in 0...33{
            let z = 100 - x - y
            if  5*x+3*y+z/3==100 && z%3==0{
                print("公鸡:\(x),母鸡:\(y),小鸡:\(z)")
            }
    }
}

这里就是三重循环,之前我在吃饭的时候和几个学安卓的同学交流了一下,他们表示三重循环运算没问题,直接就可以得到答案,但是我用swift就会报错,但是没关系,解决办法利用他们之间的函数关系替代第三个变量,就变成二重循环,这里需要注意一个隐含的条件能被三整除小鸡的数量。

排序

数组的排序在swift语言中已经帮我们弄了一些方法了,生序降序,删除数组中的一些元素,sort(),sortInplace(),remove()方便了程序员的操作,就是有了这些等等方便的方法与大众化,才能有某些老师大胆的推测未来20年的霸主语言。

1.冒泡排序

var arry = [34,56,2134,2,32345,34,45,12,23,]
//冒泡,两两比较,前面的元素比后面的元素大就交换位置
for i in 0..<arry.count - 1{
    var swapped = false
    for j in 0..<arry.count - 1 - i{
        if arry[j] > arry[j + 1]{
            (arry[j],arry[j + 1]) = (arry[j + 1],arry[j])
            swapped = true
        }
    }
    if swapped == false{
        break
    }
}
print(arry)

冒泡排序就是最前面的与后面依次做比较,如果是比较大,最里面的for循环就是拿出最前面的与后面依次做比较,外层的for循环就是需要循环的总次数,当然这里还是比较简单的,值得注意的是对于数组的值的一个标记,这里的true和false就是这个目的,以后如果想用几个以上的标记可以1,2,3...这些来表示,就有点像玩游戏的顶点传送,如果是1就把人传送到哪里,是2就传送到另外一个地方,在后面的练习中会有大量的出现,不仅有这个好处,还有可以停止while循环的好处,比如while isPonit = true{ isPoint = false }比用break优雅一些。
引伸一下知识点,如果要我们删除数组中相同的数值怎么办。

let array = [34,56,2134,2,32345,34,45,12,23,45,23]
var dictInts = Dictionary<String, Int>()

for number in array {
    dictInts[String(number)] = number
}
print(dictInts)

var result = [Int]()
for value in dictInts.values {
    result.append(value)
    print(result)
}
print(result)

想了半天,本来不想用字典的,就只想用数组解决的,但是设计到在循环中不能删除相同的数值,在循环之外去删除设计到数组的index的提取,如果是一个还好解决,如果设计到几个,个人觉得又要用数组来记录所提取的值,感觉很麻烦,用字典就很容易解决。如果有直接数组解决的同学可以私我。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,650评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,621评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,743评论 0 33
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,397评论 0 17
  • 大妮八岁,现上小学二年级,在学习上很是让我苦恼。道理也讲了很多,我相信她对于那些道理也会理解个三四分,可在她在行动...
    大妮小妮阅读 496评论 0 0