Swiftで行こう…第13回「トランプ5」(もちゃち)

2014-11-22

目次ページへ

ーーーMavericks Xcode6.1ーーー
前回の問題の答えの一つです。

013-01

013-02

以下ソースコードです。

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var lblCard: UILabel!
    @IBOutlet weak var lblCount: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        for i in 0 ..< cardCount {
            check += [false]
            var lbl = UILabel(frame: CGRectMake(0, 0, 50, 21))
            lbl.center = CGPointMake(160 + 50 * CGFloat(i / 13), 50 + CGFloat(i % 13) * 30)
            lbl.textAlignment = NSTextAlignment.Center
            lbl.text = "⬛️"
            eachCard += [lbl]
            self.view.addSubview(lbl)
        }
        count = cardCount
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    let mark: [String] = ["♣️","♦️","♥️","♠️"]
    let number: [String] = ["A","2","3","4","5","6","7","8","9","T","J","Q","K"]
    let cardCount = 52
    var check: [Bool] = []
    var count = 0
    var eachCard: [UILabel] = []

    @IBAction func btnGoTouch(sender: AnyObject) {
        if count == 0 {
            for i in 0 ..< cardCount {
                check[i] = false
                eachCard[i].text = "⬛️"
            }
            var alert = UIAlertView()
            alert.title = "初期化"
            alert.message = "カードを配り直します"
            alert.addButtonWithTitle("OK")
            alert.show()
            count = cardCount
        }

        var card: Int = 0
        var randInt = Int(arc4random_uniform(UInt32(count)))
        for i in 0 ... randInt {
            while check[card] {
                card++
            }
            if i < randInt {
                card++
            }
        }

        check[card] = true

        count--
        lblCount.text = count.description

        if card == 52 {
            lblCard.text = "JK"
        } else {
            lblCard.text = mark[card / 13] + number[card % 13]
        }
        eachCard[card].text = lblCard.text
    }
}

このように大量のラベルを貼る時は、コードで生成してしまった方が楽です。

さて次回からポーカーに入ります。

問題です。5枚のカードを重複無く配って下さい。

目次ページへ

Since1991 © Shimayugu All Rights Reserved.
アップルおよびアップルのロゴは、米国および他の国々で登録されたApple Inc.の商標です。
湘南マッキントッシュユーザーズグループは、独立したユーザグループで、Apple Japan合同会社が権限を与えた団体、支援する団体、またはその他に承認する団体ではありません。