LayaAir之製作迷宮

2021-09-29 21:46:29 字數 3392 閱讀 4675

最近看到一篇部落格,也是製作迷宮的,我仔細看了一下,裡面涉及乙個演算法--並查集(不相交集合),沒有聽過,就打算練習一下,由於最近又在使用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...