编辑代码

//定义行数和列数
let rows = 9
let cols = 5
var group : Array<String> = []

//函数1:初始化草地
func initGame() {
    group.removeAll()
    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>=cols {
        return
    }
    group[row*cols+col] = objectID
}

//调用程序
initGame()
setObject(row: 1, col: 3, objectID: "<")
setObject(row: 3, col: 1, objectID: "B" )
setObject(row: 6, col: 2, objectID: "B")
display()

//函数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")
}

//函数:5猴子向前1步
func step() {
    var (row,col,status) = findMonkey()
    switch status {
        case "up":
        if row > 0 {
            group[row*cols+col]="|"
            row -= 1
            group[row*cols+col]="^"
        }
        case "down":
        if row < rows-1 {
            group[row*cols+col]="|"
            row += 1
            group[row*cols+col]="v"
        }
        case "left":
        if col > 0 {
            group[row*cols+col]="-"
            col -= 1
            group[row*cols+col]="<"
        }
        case "right":
        if col < cols-1 {
            group[row*cols+col]="-"
            col += 1
            group[row*cols+col]=">"
        }
        default:
        print()
    }
}


//函数6:猴子转向
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+col] = "<"
            case "left":
            group[row*cols+col] = "^"
            case "right":
            group[row*cols+col] = "v"
            default:
            print()
        }
    }
}


//调用程序
initGame()
setObject(row: 1, col: 3, objectID: "<")
setObject(row: 3, col: 1, objectID: "B")
setObject(row :6, col: 2, objectID: "B")
display()
step()
step()
turn(direction: "left")
step()
step()
display()