Light app — 修正版

Yi Cheng Chiang
Aug 23, 2017 · 17 min read

進階版寫了一個在一個畫面,隨機出現七種顏色(彩虹,顏色不能重覆),但是原本寫的有很大錯誤,程式碼如下:
這樣的寫法持續寫下去,要寫5000多個才能完全得到所有的可能。第二種寫法可以使用比較的方法,第一個格子跟第二個格子一樣的時候,在重新run一次顏色,第三個在跟第一個和第二個比較……..到七個在跟前六個比較……這樣就能得到結果。

@IBAction func pressButtin(_ sender: Any) {let number = Int(arc4random())if number % 7 == 0 {view1.backgroundColor = UIColor(red: 148/255, green: 0/255, blue: 211/255, alpha: 1)view2.backgroundColor = UIColor(red: 75/255, green: 0/255, blue:130/255, alpha: 1)view3.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view4.backgroundColor = UIColor(red: 0, green: 255, blue: 0, alpha: 1)view5.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view6.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view7.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)} else if number & 7 == 1 {view7.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view1.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view2.backgroundColor = UIColor(red: 0, green: 0, blue: 255, alpha: 1)view3.backgroundColor = UIColor(red: 0, green: 255, blue: 0, alpha: 1)view4.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view5.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view6.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)} else if number % 7 == 2 {view6.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view7.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view1.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view2.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view3.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view4.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view5.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}else if number % 7 == 3 {view5.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view6.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view7.backgroundColor = UIColor(red: 0, green: 0, blue: 255, alpha: 1)view1.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view2.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view3.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view4.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}else if number % 7 == 4{view4.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view5.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view6.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view7.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view1.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view2.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view3.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}else if number % 7 == 5{view3.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view4.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view5.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view6.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view7.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view1.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view2.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}else {view2.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view3.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view4.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view5.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view6.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view7.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view1.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}}var initValue = Int(arc4random())func initColor(){if initValue % 7 == 0 {view1.backgroundColor = UIColor(red: 148/255, green: 0/255, blue: 211/255, alpha: 1)view2.backgroundColor = UIColor(red: 75/255, green: 0/255, blue:130/255, alpha: 1)view3.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view4.backgroundColor = UIColor(red: 0, green: 255, blue: 0, alpha: 1)view5.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view6.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view7.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)} else if initValue & 7 == 1 {view7.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view1.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view2.backgroundColor = UIColor(red: 0, green: 0, blue: 255, alpha: 1)view3.backgroundColor = UIColor(red: 0, green: 255, blue: 0, alpha: 1)view4.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view5.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view6.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)} else if initValue % 7 == 2 {view6.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view7.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view1.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view2.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view3.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view4.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view5.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}else if initValue % 7 == 3 {view5.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view6.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view7.backgroundColor = UIColor(red: 0, green: 0, blue: 255, alpha: 1)view1.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view2.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view3.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view4.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}else if initValue % 7 == 4{view4.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view5.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view6.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view7.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view1.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view2.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view3.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}else if initValue % 7 == 5{view3.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view4.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view5.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view6.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view7.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view1.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view2.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}else {view2.backgroundColor = UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1)view3.backgroundColor = UIColor(red: 75/255, green: 0, blue: 130/255, alpha: 1)view4.backgroundColor = UIColor(red: 0, green: 0, blue: 255/255, alpha: 1)view5.backgroundColor = UIColor(red: 0, green: 255/255, blue: 0, alpha: 1)view6.backgroundColor = UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1)view7.backgroundColor = UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1)view1.backgroundColor = UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)}}}

本週上課有教GameplayKit framework的GKRandomDistribution和GKShuffledDistribution。可以解決這樣的狀況,程式碼如下:
程式碼簡單明暸可以表達,其時也試了好多遍才OK。

@IBAction func pressButton(_ sender: UIButton) {var colorSelection = [UIColor(red: 148/255, green: 0, blue: 211/255, alpha: 1), UIColor(red: 75/255, green: 0/255, blue:130/255, alpha: 1),UIColor(red: 0, green: 0, blue: 255/255, alpha: 1),UIColor(red: 0, green: 255/255, blue: 0,alpha:1),UIColor(red: 255/255, green: 255/255, blue: 0, alpha: 1),UIColor(red: 255/255, green: 127/255, blue: 0, alpha: 1),UIColor(red: 255/255, green: 0, blue: 0, alpha: 1)]let colorAmount = GKShuffledDistribution(lowestValue: 0, highestValue: 6)view1.backgroundColor=colorSelection[colorAmount.nextInt()]view2.backgroundColor = colorSelection[colorAmount.nextInt()]view3.backgroundColor = colorSelection[colorAmount.nextInt()]view4.backgroundColor = colorSelection[colorAmount.nextInt()]view5.backgroundColor = colorSelection[colorAmount.nextInt()]view6.backgroundColor = colorSelection[colorAmount.nextInt()]view7.backgroundColor = colorSelection[colorAmount.nextInt()]}

彼得潘的 Swift iOS App 開發教室

學習 Swift iOS App 開發的學生作品集

)

    Yi Cheng Chiang

    Written by

    彼得潘的 Swift iOS App 開發教室

    學習 Swift iOS App 開發的學生作品集

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade