编辑代码

//定义行数和列数
let rows = 9
let cols = 5
//定义一个一维空数组,用于保存
var group : Array<String> = []


//函数1:初始化草地
    func initGame(){
        group.remveAll() //用于清空数组
        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:在指定位置添加一个物体,^ v < > B
   func setObject(row:Int,col:Int.objectID: String) {
       if row>=rows || col>=cols {
           return
       }
       group[row*cols+col] = objectID
   }


   /*效果:初始化并显示
   首先调用初始化草地函数,然后调用放置函数在(行号1,列号3)放置一个猴子,
   在(行号3,列号1)放置一个香蕉,在(行号6,列号2)放置一个香蕉,
   最后显示这个效果
*/
//==调用程序开始--
        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]=">"
            }
            default:
                print()
        }
    }



//函数6:猴子转向
    func turn(direction:String){
        let (row,col,status) =findMonkey()
        if direction == "left" {
            switch status {
            case "up":
                group[row*cols+col]= "<"
                
            }
        }
    }