Swiftで行こう…第32回「ババ抜き3」(もちゃち)

2015-02-07

目次ページへ

ーーーYosemite Xcode6.1.1ーーー
今回はペアになったカードを除く処理です。他の人のカードは伏せて行うのですが、今は、きちんと処理されているのを確かめる為、表にして表示しようと思います。
いきなり全部の処理を行うのは難しいので、まずペアになっているカードを消すという処理をします。

032-01

032-02

以下、追加部分のソースコードです。

    @IBAction func btnPairTouch(sender: AnyObject) {
        for i in 0 ..< 4 {
            for j in 0 ..< 13 {
                if (eachCard[i][j].tag == 52) || (eachCard[i][j].tag == -1) {
                    continue
                }
                for k in j + 1 ..< 14 {
                    if (eachCard[i][k].tag == 52) || (eachCard[i][k].tag == -1) {
                        continue
                    }
                    if (eachCard[i][j].tag % 13) == (eachCard[i][k].tag % 13) {
                        eachCard[i][j].tag = -1
                        eachCard[i][k].tag = -1
                        break
                    }
                }
            }
            for j in 0 ..< 14 {
                if eachCard[i][j].tag >= 0 {
                    eachCard[i][j].text = cardObj.disp(eachCard[i][j].tag)
                } else {
                    eachCard[i][j].text = " "
                }
            }
        }
    }

続いて、詰める処理をします。

032-03

以下、問題部分のソースコードです。

    @IBAction func btnPairTouch(sender: AnyObject) {
        for i in 0 ..< 4 {
            for j in 0 ..< 13 {
                if (eachCard[i][j].tag == 52) || (eachCard[i][j].tag == -1) {
                    continue
                }
                for k in j + 1 ..< 14 {
                    if (eachCard[i][k].tag == 52) || (eachCard[i][k].tag == -1) {
                        continue
                    }
                    if (eachCard[i][j].tag % 13) == (eachCard[i][k].tag % 13) {
                        eachCard[i][j].tag = -1
                        eachCard[i][k].tag = -1
                        break
                    }
                }
            }
            var find: Bool = false
            var k: Int = 0
            for j in 0 ..< 14 {
                if eachCard[i][j].tag == -1 {
                    find = true
                } else {
                    if find {
                        eachCard[i][k].tag = eachCard[i][j].tag
                        eachCard[i][j].tag = -1
                    }
                    k++
                }
            }
            for j in 0 ..< 14 {
                if eachCard[i][j].tag >= 0 {
                    eachCard[i][j].text = cardObj.disp(eachCard[i][j].tag)
                } else {
                    eachCard[i][j].text = " "
                }
            }
        }
    }

上手く行きましたか。
本来、最初にカードを伏せて出した時に、カードが配られるべきです。
次回は最初からカードが配られるように変更します。変更してみて下さい。

目次ページへ

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