编辑代码

//函数1:初始化函数
func initGame(){
   group.removeA11()//用于清除数组
   for _ in 0..<rows {
     for _ in 0..<cols {
        group.append("0")
       }
     }
}


//函数2:显示
func display() {
    for i in 0..<rows {
        for j in 0..<cols {
            print(group[i*cols+j], separator: " ", terminator: " ")
        }
        print()
    }
}

//函数3:添加一个物体
func setObject(row:Int,col:Int,objectID: String) {
    if row>=rows || col>=co1s {
        return
    }
    group[row*cols+col] = objectID
}

//函数4:查找猴子所在位置和状态
func findMonkey()->(Int,Int,String)
    for i in 0..<rows {
        for j in 0..<cols { 
            let value = group[i*cols+j]
            switch value {
            case "^":
                return(i,j,"up")
            case "v":
                return(i,j,"down")
            case "<":
                return(i,j,"left")
            case ">":
                return(i,j,"right")
            default:
                print()
            }
        }
    }
    return(0,0, "none")
}

//猴子转向
func turn(direction:String){
    let (row,col, status) = findMonkey ()
    if direction== "left" {
        switch status {
        case "up":
           group[row*cols+col] = "<"
        case "down":
           group[row*cols+col] = ">"
        case "left":
           group[row*cols+col] = "v"
        case "right":
           group[row*cols+col] = "^"
        default:
            print()
        }

    }
else if direction=="right" {
     print(row,col,status)
     switch status { 
     case "up":
        group[row*cols+col] = ">"
     case "down":
        group[row*cols+co1] = "<"
     case "left":
        group[row*cols+col] = "^"
     case "right":
        group[row*cols+co1] = "v"
     default:
         printn()
    }
    }
}

func step(steps:Int) {
   var (row,col,status) = findMonkey()
   switch status {
    case "up":
        for _ in 0..<steps {
            if row > 0 {
                group[row*cols+col]="|"
                row -= 1
                group(row*cols+col]="^"
            }
        }
    case "down":
        for _ in 0..<steps {
           if row < rows-1 {
                group[row*cols+co1]="|"
                row += 1
                group[row*cols+col]="v"
            }
        }
    case"left":
        for _ in 0..<steps {
            if col > 0 {
                group[row*cols+col]="-"
                col -= 1        
                group[row*cols+col]="<"
            }
        }
    case "right":
        forin 0..<steps {
            if col < cols-1 {
                 group [row*cols+col]="-"
                col += 1
                group[row*cols+col]=">"
            }
        }
        default:
            print()
        }
    }


//5.设计图设计图
//图形化显示程序
func displayBackgroundView() {
    let h = backgroundView.frame.size.height
    let w = backgroundView.frame.size.width

    let padding : CGFloat = 15
    let margin : CGFloat = 30
    //计算每个格子的高度和宽度
    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 fect = CGRect (x: X, y:y, width: grid_w, height: grid_h)
        //用于根据数组中数值来决定显示哪个图片
        let data = group [i*cols+j]
        var fileName = ""
        switch data {
        case "0":
            fileName ="GreenBlock"
        case "B":
            fileName ="Banana"
        case "^":
            fileName ="Monkey_up"
        case "v":
            fileName ="Monkey_down"
        case "<":
            fileName ="Monkey_left"
        case ">":
            fileName ="Monkey_right"
        default:
            fileName = "GreenBlock"
        ) 
        let img = UIImage(named: fileName)
        let imgView = UIImageView(frame: rect)
        imgView.image = img
        self.backgroundView.addSubview(imgView)
        }
    }
}