java23種設計模式——四、原型模式
阿新 • • 發佈:2020-08-27
package chapter05 object test03 { def main(args:Array[String]):Unit={ //1.建立迷宮,使用二維陣列map(8)(7) val map = Array.ofDim[Int](8,7) //2.給地圖加牆 //0:沒有探測過 //1:表示牆 //2. 表示經過探測是通路 //3. 表示經過探測是死路 //最上邊和下邊加牆 for(i <- 0 until 7){ map(0)(i)=1 map(7)(i)=1 }//最左邊和最右邊加牆 for(i <- 0 until 6){ map(i)(0)=1 map(i)(6)=1 } map(3)(1)=1 map(3)(2)=1 map(2)(2)=1 println("迷宮的情況是:") for(row <- map){ for (item <- row){ printf("%d ",item) } println() } setWay(map,1,1) println("迷宮的情況是:")for(row <- map){ for (item <- row){ printf("%d ",item) } println() } //編一個方法,探測該點是否可以走 // map:地圖,i探測位置的橫座標,j 探測位置的縱座標 def setWay(map:Array[Array[Int]],i:Int,j:Int): Boolean ={ if(map(6)(5)==2){//路走通 return true }else{//map的可能取值為0,1,3 if(map(i)(j)==0){//說明該點還沒有探測過 //使用策略探測該點(下=》右=》上=》左) //假定這個點是走的通map(i)(j)=2 map(i)(j)=2 if(setWay(map,i+1,j)){//向下 return true }else if(setWay(map,i,j+1)){//向右 return true }else if(setWay(map,i-1,j)){//向上 return true }else if(setWay(map,i,j-1)){//向左 return true }else{ //說明四個方向都走不通,假設錯誤 map(i)(j)=3 return false } }else{//1,2,3 return false } } } } }