?? agent.as
字號:
?import com.gamepackage.tilemap.pathfinder.Headquarter;
class com.gamepackage.tilemap.pathfinder.Agent
{ private var x: Number; private var y: Number; private var dir: Number; private var path: Array;
private var hq: Headquarter;
function Agent ( x: Number , y: Number , dir: Number , path: Array, hq: Headquarter )
{ this.x = x; this.y = y; this.dir = dir; this.path = path;
this.hq = hq;
hq.agents.push( this ); } function move (): Boolean
{
var map: Array = hq.map; var occ: Array = hq.occ; if ( map[ y ][ x ] == undefined ) { return false; }; if ( occ[ y ][ x ] ) { return false; }; if ( x == hq.x1 && y == hq.y1 )
{
hq.pathFound = true;
hq.foundPath = path;
return true; } if ( occ[ y ] == undefined ) { occ[ y ] = []; }; occ[ y ][ x ] = true;
if ( dir == 1 ) { if ( ~map[ y + 1 ][ x ] & 1 ) new Agent ( x, y + 1, 4, path.concat ( [ { x: x , y: y + 1 } ] ), hq ); if ( ~map[ y - 1 ][ x ] & 1 ) new Agent ( x, y - 1, 8, path.concat ( [ { x: x , y: y - 1 } ] ), hq ); if ( ~map[ y ][ x + 1 ] & 1 )
{
path.push ( { x: ++x , y: y } );
return true; }
return false;
} else if ( dir == 2 ) { if ( ~map[ y + 1 ][ x ] & 1 ) new Agent ( x, y + 1, 4, path.concat ( [ { x: x , y: y + 1 } ] ), hq ); if ( ~map[ y - 1 ][ x ] & 1 ) new Agent ( x, y - 1, 8, path.concat ( [ { x: x , y: y - 1 } ] ), hq ); if ( ~map[ y ][ x - 1 ] & 1 )
{
path.push ( { x: --x , y: y } );
return true; };
return false; } else if ( dir == 4 ) {
var yMap = map[y]; if ( ~yMap[ x + 1 ] & 1 ) new Agent ( x + 1, y, 1, path.concat ( [ { x: x + 1 , y: y } ] ), hq ); if ( ~yMap[ x - 1 ] & 1 ) new Agent ( x - 1, y, 2, path.concat ( [ { x: x - 1 , y: y } ] ), hq ); if ( ~map[ y + 1 ][ x ] & 1 )
{
path.push ( { x: x , y: ++y } );
return true; };
return false; }
// else ( dir == 8 )
var yMap = map[y]; if ( ~yMap[ x + 1 ] & 1 ) new Agent ( x + 1, y, 1, path.concat ( [ { x: x + 1 , y: y } ] ), hq ); if ( ~yMap[ x - 1 ] & 1 ) new Agent ( x - 1, y, 2, path.concat ( [ { x: x - 1 , y: y } ] ), hq ); if ( ~map[ y - 1 ][ x ] & 1 )
{ path.push ( { x: x , y: --y } );
return true; };
return false; }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -