编辑代码

//函数11:图形化显示程序,支持 Button,支持提示功能 
func displayArrayGraphButtonTips() {
let myview1 = self.view.viewWithTag(2001) as! UIImageView
let myview2 = self.view.viewWithTag(2002) as! UIImageView
myView1.backgroundColor = .darkGray 
myView2.backgroundColor = .darkGray
//支持View可以进行交互等操作
myView1.isUserInteractionEnabled = true 
myView2.isUserInteractionEnabled = true

let h = myView1.frame.size.height 
let w = myView1.frame.size.width

let padding : CGFloat = 5 
let margin : CGFloat = 10

//计算每个格子的高度和宽度
let grid_w = (w - margin * 2 - padding * CGFloat(cols - 1)) / CGFloat (cols)
let grid_h = (h - margin * 2 - padding * CGFloat(rows - 1)) / CGFloat (rows)

for i in 0..<rows {
for j in 0..<cols {
let x = margin + CGFloat(j) * (grid_w + padding) 
let y = margin + CGFloat(i) * (grid_h + padding)
let rect = CGRect(x: x, y:y , width: grid_w, height: grid_h)

//在上面的ImageView中显示
let fileName1 = iv1[i * cols + j] 
let tag1 =  i * cols + j + 5000
addButton(view: myView1, rect: rect, fileName: fileNamel, tag: tagl)

//在下面的ImageView中显示
let fileName2 = iv2[i * cols + j] 
let tag2 = i * cols + j + 4000
addButton(view: myView2, rect: rect,fileName: fileName2, tag:tag2)
}
}
}

// 函数12: View 上面添加 Button 的函数,提示功能,用于减少代码数量
func addButton(view:UIView,rect:CGRect,fileName:String,tag:Int) {
let img = UIImage(named: fileName) 
let btn = UIButton(frame: rect) 
btn.setImage(img, for: .normal)
var mytag = tag
if mytag >= 5000 {
    mytag -= 5000
}
else if mytag >= 4000 {
    mytag -= 4000
}
let row = Int (mytag / cols) 
let col = mytag - cols * row

let result = errorCords.filter {
    $0 == (row,col)
}
if result.count >= 1 && TipsFlag {
    btn.backgroundColor = .blue
}
else{
    btn.backgroundColor = .yellow
}
btn.tag = tag
btn.addTaiget(self, action: #selector(buttonCheckMusicTimer (_:)), for: .touchUpInside)
view.addSubview(btn)
}
@IBAction func onTips(_ sender : UIButton) {
TipsFlag =! TipsFlag
displayArrayGraphButtonTips()
}

@IBAction func onBegin(_ sender : UIButton) {
//游戏结束标志
GameOver = false
//获取游戏开始时间并保存
beginTimestamp = getCurrentTimeStamp()
//倒计时
timeElapse()
//数组初始化 
initGame()
distractorCreate(mount: 5) 
differenceCreate(mount: 3)
displayArrayGraphButtonTips()
}
//函数12:View上面添加Button的函数,提示功能,用于减少代码数量
func addButton(view:UIView,rect:CGRect,fileName:String,tag:Int) {
let img = UIImage(named: fileName) 
let btn = UIButton(frame: rect) 
btn.setImage(img, for: .normal)

var mytag = tag
if mytag >= 5000 {
mytag -= 5000
}
else if mytag >= 4000 {
mytag -= 4000
}
let row = Int (mytag / cols) 
let col = mytag - cols * row

let result = errorCords.filter {
$0 == (row,col)
}

if result.count >= 1 && TipsFlag {
btn.backgroundColor = .blue 
btn.tag = tag
btn.addTarget(self,action: #selector(buttonCheckMusicTimer (_:)), for:.touchUpInside)
view.addSubview(btn)
}

let result1 = cords.filter {
$0 == (row,col)
}
if result1.count >= 1 {
btn.tag = tag
btn.addTarget(self, action: #selector (buttonCheckMusieTimer(_:)), for:.touchupInside)
view.addSubview(btn)
}
}

//画数 13:移除所有子控件
func removeAllSubViews(view:UIView) {
if view.subviews.count>0 {
view.subviews.forEach({$0.removeFromSuperview()})
}
}

@IBAction func onTips(_ sender :UIButton) {
TipsFlag =! TipsFlag
displayArrayGraphButtonTips()
}

@IBAction func onBegin(_ sender : UIButton){
//游戏结束标志
GameOver = false
//获取游戏开始时间并保存
beginTimestamp = getCurrentTimeStamp()
//倒计时
timeElapse()
//数组初始化 
initGame()
distractorCreate(mount: 10) 
differenceCreate(mount: 8)
displayArrayGraphButtonTips()
}

@IBAction func onNext(_ sender : UIButton){
GameOver = true 
TipsFlag = false
let myView1 = self.view.viewWithTag(2001) as! UIImageView 
let myView2 = self.view.viewWithTag(2002) as! UIImageView 
CurrentBackground += 1
if CurrentBackground > 4 {
CurrentBackground = 1
}
let image = UIImage(named: "back0\(CurrentBackground)")! 
myView1.image = image 
myView2.image = image
removeAllSubViews(view: myView1) 
removeAllSubViews(view: myView2)
}