最近看到一篇部落格,也是製作迷宮的,我仔細看了一下,裡面涉及乙個演算法--並查集(不相交集合),沒有聽過,就打算練習一下,由於最近又在使用layaair,就打算用它來寫。
先看我之前看的那兩篇文章:鏈結1,鏈結2
我使用的是layaair2.2.0beta4
效果圖:
新建乙個指令碼,指令碼繼承laya.script,把該指令碼新增到場景裡
//畫地圖
this.m_linebox = new laya.sprite();
this.setpos(this.m_linebox,0,0);
this.setzorder(this.m_linebox,0);
this.owner.addchild(this.m_linebox);
for (let i = 0; i < 16; i++)
//畫藍色方塊
this.m_blue = new laya.sprite();
this.m_blue.size(20,20);
this.setpos(this.m_blue,105,105);
this.setzorder(this.m_blue,1);
this.owner.addchild(this.m_blue);
this.m_blue.graphics.drawrect(0,0,20,20,"#003dff","#003dff",1);
//畫紅色色方塊
this.m_red = new laya.sprite();
this.m_red.size(20,20);
this.setpos(this.m_red,105+420,105+420);
this.setzorder(this.m_red,0);
this.owner.addchild(this.m_red);
this.m_red.graphics.drawrect(0,0,20,20,"#ff0400","#ff0400",1);
//設定位置
private setpos(object:laya.sprite,x:number,y:number):void
//設定層級
private setzorder(object:laya.sprite,value:number):void
//鍵盤控制
onkeydown(e:laya.event)
}
//移動物件
private moveobject(object:laya.sprite,x:number,y:number):void
//初始化節點陣列
this.m_mapinfoary.foreach(e => );
//初始化起始點、終止點
this.m_begin = new laya.point(this.m_blue.x-105,this.m_blue.y-105);
this.m_end = new laya.point(this.m_red.x-105,this.m_red.y-105);
//建立迷宮
this.createmaze(this.m_begin,this.m_end);
}}
}//判斷移動
private judgemove(object:laya.sprite,valuex:number,valuey:number):boolean
else if(valuex<0&&nownodeinfo.left)
else if(valuey>0&&nownodeinfo.down)
else if(valuey<0&&nownodeinfo.up)
return false;
}else
}
class nodeinfo
}
//初始化起始點、終止點
this.m_begin = new laya.point(this.m_blue.x-105,this.m_blue.y-105);
this.m_end = new laya.point(this.m_red.x-105,this.m_red.y-105);
//初始化節點陣列
for (let i = 0; i < 225; i++)
private createmaze(begin:laya.point,end:laya.point):void
if(r_num%15<14&&this.limitabunion(r_num+1,r_nodeinfo))
if(math.floor(r_num/15)>0&&this.limitabunion(r_num-15,r_nodeinfo))
if(math.floor(r_num/15)<14&&this.limitabunion(r_num+15,r_nodeinfo))
if(dary.length!=0)
this.mopline(r_num%15*30+100,math.floor(r_num/15)*30+100,dary[dvalue]);
this.willabunion(r_nodeinfo,tempnode,null);
if(this.judgeabunion(beginnode, endnode))break;}}
}
//擦線
private mopline(x:number,y:number,value:number)
}//限制ab聯盟
private limitabunion(aindex:number,_b:nodeinfo):boolean
//將ab聯盟
private willabunion(a:nodeinfo,b:nodeinfo,c:nodeinfo):voidelse
}elseelseelseelse}}
}}//判斷ab聯盟
private judgeabunion(a:nodeinfo,b:nodeinfo):booleanelse
}elseelse}}
//隨機數
public static getrandomint(min: number, max: number): number
laya龍骨換裝 LayaAir之骨骼動畫 基礎
layaair可以是用dragonbone和spine生成的骨骼動畫檔案,但是需要將他們的動畫檔案進行轉化,轉化後的檔案才能夠被layaair識別.而無論是dragonbone還是spine都不是layaair官方工具,轉化的安全和相容性有些問題,這是乙個坑.到目前為止此轉化有2個問題 對版本的支援...
外掛程式製作 如何使用AE外掛程式來製作迷宮線路
aescripts mazefx是一款可以在mac平台上製作各類迷宮線路圖的ae外掛程式,可以幫助開啟製作出各類隨機化向量迷宮,調整宮出路路徑動畫效果,幫助開啟控制每乙個迷宮結構。mazefx是adobe after effects的乙個工具,專門用於建立隨機的基於向量的迷宮 迷宮 mazefx能夠...
Python 製作迷宮遊戲(二) 遊戲視窗
上一節我們使用prime做了迷宮的底層陣列,它的形式是乙個二維陣列.這一節我們著手開始製作遊戲視窗 注意 如果使用idle,則最好在sys.exit 語句之前先關閉pygame,以免idle掛起造成不必要的麻煩 pygame生成乙個視窗非常的方便 匯入模組初始化後便可以定義自己的視窗 main.py...