编辑代码

let rows = 9
let cols = 5
var group : Array<String> = []
func initGame() {
    group.removeAll()
    for _ in 0..<rows {
       for _ in 0..<cols {

       } 
    }
}
func display() {
    for i in 0..<rows {
        for j in 0..<cols {
            print(group[i*cols+j], separator: " ", terminator: " ")
        }
        print()
    }
}
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()
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 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()
    }
}
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()