新Swiftで行こう…第35回「ババ抜き4」 田部井保
最初からカードが配られるように変更します。本来は伏せるのですが、きちんと処理されているのを確かめる為に、表にして処理します。そして配るボタンを配り直しボタンにします。今までは、配るボタン、1回配ってからもう一回押すとエラーになっていました。
今回関数構成を見直しました。
以下ソースコードです。
//
// ViewController.swift
// baba
//
// Created by 保 Tabei on 2024/09/15.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
put53()
}
var eachCard: [[UILabel]] = [[],[],[],[]]
var cardObj:Card = Card(cdCnt: Card.EnumCard.joker)
func put53() {
for i in 0 ..< 4 {
for j in 0 ..< 14 {
let lbl = UILabel(frame: CGRectMake(0, 0, 50, 21))
lbl.center = CGPointMake(50 + 40 * CGFloat(j % 7), 150 + 120 * CGFloat(i) +
50 * CGFloat(j / 7))
lbl.textAlignment = NSTextAlignment.center
if i != 0 && j == 13 {
lbl.text = " "
} else {
lbl.text = "⬛️"
}
eachCard[i] += [lbl]
self.view.addSubview(lbl)
}
}
share()
show()
}
func share() {
cardObj.reset()
for i in 0 ..< 4 {
for j in 0 ..< 14 {
if i != 0 && j == 13 {
eachCard[i][j].tag = -1
} else {
var ii: Int
ii = cardObj.put()
eachCard[i][j].text = cardObj.disp(card: ii)
eachCard[i][j].tag = ii
}
}
}
}
func show() {
for i in 0 ..< 4 {
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 btnGoTouch(_ sender: Any) {
//for i in 0 ..< 4 {
// for j in 0 ..< 14 {
// if i != 0 && j == 13 {
// } else {
// eachCard[i][j].tag = cardObj.put()
// eachCard[i][j].text = cardObj.disp(card: eachCard[i][j].tag)
// }
// }
//}
share()
show()
}
@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 = " "
// }
//}
}
show()
}
}