新Swiftで行こう…第88回「ババ抜き10解説」 田部井保

目次 通常版

 ユーザーがカードを引くボタンを加えて、引いた後の処理を追加します。

    ///ユーザーが2番目の人のカードを引く処理
    @IBAction func btnHikuTouch(_ sender: Any) {
        //2番目の人
        let i = 1
        //2番目の人のカード枚数
        var kl = 14
        //2番目の人のカード、無効カードが出るまで検査
        for j in 0 ..< 14 {
            //無効カードが出たら
            if eachCard[i][j].tag == -1 {
                //2番目の人のカード枚数はj
                kl = j
                //ループを抜ける
                break
            }
        }
        //ユーザーが引くカード位置
        var k = 0
        //2番目の人のカード枚数分ループ
        for j in 0 ..< kl {
            //カード選択ボタン配列でタグが1のもの
            if eachCardButton[j].tag == 1 {
                //ユーザーが引くカード位置決定
                k = j
                //ループを抜ける
                break
            }
        }
        
        //3番目の人(ユーザー)
        let ii = 2
        //引いたカードと同じナンバーのカードがあった
        var stop = false
        //引いたカードがジョーカー以外
        if eachCard[i][k].tag != 52 {
            //3番目の人のカードをチェックする
            for jj in 0 ..< 14 {
                //引いたカードと同じナンバーのカードがあったら、詰める
                if stop {
                    //詰める
                    eachCard[ii][jj - 1].tag = eachCard[ii][jj].tag
                }
                //無効カードだったら
                if eachCard[ii][jj].tag == -1 {
                    //ループを抜ける
                    break
                }
                //ジョーカーなら次のループ
                if eachCard[ii][jj].tag == 52 {
                    //次のループ
                    continue
                }
                //引いたカードと同じナンバーのカードがあったら
                if (eachCard[ii][jj].tag % 13) == (eachCard[i][k].tag % 13) {
                    //フラグを立てる
                    stop = true
                }
            }
        }
        //引いたカードと同じナンバーのカードが無かったら
        if stop == false {
            //3番目の人のカードをチェック
            for jj in 0 ..< 14 {
                //無効カードが見つかったら
                if eachCard[ii][jj].tag == -1 {
                    //引いたカードをそこに置く
                    eachCard[ii][jj].tag = eachCard[i][k].tag
                    //ループを抜ける
                    break
                }
            }
        }
        //2番目の人のカード、3番目の人が引いたカードより後ろのカードを一つずつ詰める
        for j in k + 1 ..< 14 {
            eachCard[i][j - 1].tag = eachCard[i][j].tag
        }
        //2番目の人の最後のカードを無効にする
        eachCard[i][13].tag = -1
        //表示する
        show()
        
        //カード選択ボタンを画面から消す
        for cardBtn in eachCardButton {
            cardBtn.removeFromSuperview()
        }
        //カード選択ボタン配列を消去する
        eachCardButton.removeAll()
    }

 この処理は、第85回「ババ抜き7解説」とほぼ同じです。違う所は20行目からの、カード選択ボタン配列でタグが1のものを探す部分。これはユーザーが選んだカードの位置になります。そして83行目からのカード選択ボタン配列を消去する部分。まず83行目から85行目で、画面から削除しています。そして87行目で、カード選択ボタン配列の要素を空にしています。

目次 通常版

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA