新Swiftで行こう…第34回「ババ抜き3」 田部井保
今回はペアになったカードを除く処理です。他の人のカードは伏せて行うのですが、今は、きちんと処理されているのを確かめる為、表にして表示しようと思います。
いきなり全部の処理を行うのは難しいので、まずペアになっているカードを消すという処理をします。
以下、追加部分のソースコードです。
@IBAction func btnPairTouch(_ sender: Any) {
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(card: eachCard[i][j].tag)
} else {
eachCard[i][j].text = " "
}
}
}
}
実行してみて下さい。カードが消されると思います。続いて、詰める処理をします。
以下、問題部分のソースコードです。
@IBAction func btnPairTouch(_ sender: Any) {
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 = false
var k = 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 += 1
}
}
for j in 0 ..< 14 {
if eachCard[i][j].tag >= 0 {
eachCard[i][j].text = cardObj.disp(card: eachCard[i][j].tag)
} else {
eachCard[i][j].text = " "
}
}
}
}
上手く行きましたか。
本来、最初にカードを伏せて出した時に、カードが配られるべきです。
次回は最初からカードが配られるように変更します。変更してみて下さい。