新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行目で、カード選択ボタン配列の要素を空にしています。