编辑代码

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

    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: fileName1,tag: tag1)
            //在下面的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:CGFloat,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 = errorColor.filter {
        $0 == (row,col)
    }
    if result.count >= 1 && TipsFlag {
        btn.blackgroundColor = .blue
    }
    else {
        btn.blackgroundColor = .yellow
    }
    btn.tag = tag
    btn.addTarget(self, action: #selector(buttonCheckMusicTimer(_:)),for: .touchUpInside)
    view.addSubview(btn)
}
@IBAction func onTips(_ sender : UIButton) {
    TipsFlag = !TipsFlag
    dispalyArrayGraphButtonTips()
}
@IBAction func onBegin(_ sender : UIButton) {
    //游戏结束标志
    GameOver = false
    //获取游戏开始时间并保存
    beginTimestamp = getCurrentTimeStamp()
    //倒计时
    timeElapse()
    //数组初始化
    initGame()
    distractorCreate(mount: 5)
    differenceCreate(mount: 3)
    dispalyArrayGraphButtonTips()
}

//函数13:移除素有子控件
func removeAllSubviews(view:UIView) {
    if view.subview.count>0 {
        view.subviews.forEach({$0.removeFromSuperview()})
    }
}
@IBAction func onTips(_ sender : UIButton) {
    TipsFlag = !TipsFlag
    dispalyArrayGraphButtonTips()
}
@IBAction func onBegin(_ sender : UIButton) {
    //游戏结束标志
    GameOver = false
    //获取游戏开始时间并保存
    beginTimestamp = getCurrentTimeStamp()
    //倒计时
    timeElapse()
    //数组初始化
    initGame()
    distractorCreate(mount: 10)
    differenceCreate(mount: 8)
    dispalyArrayGraphButtonTips()
}
@IBAction func onNext (_ sender : UIButton) {
    GameOver = ture
    TipsFlag = false
    let myView1 = self.view.viewWithTag(2001) as! UIImageView
    let myView2 = self.view.viewWithTag(2002) as! UIImageView
    CurrentBackground > 4 {
        if CurrentBackground = 1
    }
    let image = UIImage(named: "back0\(CurrentBackground)")!
    myView1.image = image
    myView2.image = image
    removeAllSubviews(view: myView1)
    removeAllSubviews(view: myView2)
}