1 / 7
文档名称:

Flash AS3.0搜索AStar最短路径 制作:TittupFrog(跳跳蛙).doc

格式:doc   页数:7页
点击预览全文
下载敬告:本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。如果您已付费下载过本站文档,您可以点这里二次下载
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表
文档介绍:Flash AS3.0搜索A*(AStar)最短路径
制作:TittupFrog(跳跳蛙)
/* Example (for as 3.0):
var N = 250, M = 200;
var sx = 0, sy = 0, dx = N-1, dy = M-1, i, j;
var map = new Array(N);
for ( i = 0; i < N; i++) {
map[i] = new Array(M);
for ( j = 0; j < M; j++) { map[i][j] = 0; }
}
var path = Astar.getPath(map, sx, sy, dx, dy);
for (i = 0; i < path.length; i++) { trace('path ' + i + ': (' + path[i].x + ',' + path[i].y + ')'); }
*/
package
{
public class Astar
{
public static function getPath(map, sx, sy, dx, dy)
{
var i, j, d, t, p;
// height and width of map
var H = map.length;
var W = map[0].length;
// Node of Graph
function Node(a, b, r, s)
{
var obj = new Object();
obj.x = a;
obj.y = b;
obj.G = 0;
obj.H = Math.abs(a - dx) + Math.abs(b - dy);
obj.reachable = r;
obj.ispillar = s;
obj.sur = [];
obj.from = null;
obj.vis = false;
return (obj);
}
function buildBond(n1, n2)
{
n1.sur.push(n2);
n2.sur.push(n1);
}
function cmp(n1, n2)
{
if (n1.G + n1.H < n2.G + n2.H)
{
return -1;
}
else if (n1.G + n1.H > n2.G + n2.H)
{
return 1;
}
else
{
return 0;
}
}
// Graph of map
var graph = new Array(H);
for (i = 0; i < H; i++)
{
graph[i] = new Array(W);
for (j = 0; j < W; j++)
{
// add new nodes in graph array
t = map[i][j];
graph[i][j] = Node(i, j, (t == 0), (t == 0));
if (t != 0)
{
continue;
}
// add left right bonds
if (j > 0)
{
if (graph[i][j - 1].reachable)
{
buildBond(graph[i][j - 1], graph[i][j]);
}
}
// add up bonds
if (i > 0)
{
if (graph[i - 1][j].reachable)
{
buildBond(graph[i - 1][j], graph[i][j]);
}
if (j > 0)
{
if (graph[i - 1][j - 1].reachable && graph[i][j - 1].reachable && graph[i - 1][j].reachable)
{
buildBond(graph[i - 1][j - 1], graph[i][j]);
}
}
if (j < W - 1)
{
if (graph[i - 1][j + 1].reachable && graph[i - 1][j].reachable && map[i][j + 1] == 0)
{
buildBond(graph[i - 1][j + 1], graph[i][j]);
}
}
}
}
}
// start traverse
graph[sx][sy].G = 0;
var q = [graph[sx][sy]];
while (q.length > 0)
{
p = q.shift();
p.vis = true;
if (p.H == 0)
{
break;
}
for (d in p.sur)
{
if ((p.sur[d]).vis)
{
continue;
}
if ((p.sur[d]).from == null)
{
(p.sur[d]).from = p;
// (p.sur[d]).G = p.G + 1;
(p.sur[d]).G = p.G + Math.sqrt(((p.sur[d]).x - p.x) * ((p.sur[d]).x - p.x) + ((p.sur[d]).y - p.y) * ((p.sur[d]).y - p.y));
q.push(p.sur[d]);
q.sort(cmp);
}
}
}
// get path
if (!graph[dx][dy].vis)
{
return [];
}
var path = [graph[dx][dy]];
while ((path[0]).from != null)
{
path.unshift(path[0].from);
}
return path;
}
}
}
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class ShortestPath extends MovieClip
{
public function ShortestPath()
{
const h = 9, w = 10;
var setscr = false, setdst = false;
var start_btn = new S
点击预览全文
下载
缩小
点击下载
放大

Flash AS3.0搜索AStar最短路径 制作:TittupFrog(跳跳蛙).doc

上传人:\(^o^)/~ 2015/5/16 文件大小:0 KB

下载得到文件列表

Flash AS3.0搜索AStar最短路径 制作:TittupFrog(跳跳蛙).doc

相关文档

flash制作
热度:
FLASH制作毕业设计论文
热度:
FLASH 动画制作
热度:
FLASH动画制作
热度:
flash拖拽游戏制作
热度:
Flash游戏制作--打靶
热度:
Flash毕业论文:基于FLASH的MTV制作
热度:
as3教程 flash ActionScrip 3
热度:
AS3 扫盲,初识AS3
热度:
基于Flash as3的“连连看”游戏型课件制作实例
热度:
Flash AS3.0制作表达式计算器 制作:TittupFrog(跳跳蛙)
热度:
Flash AS3.0制作监测头 制作:TittupFrog(跳跳蛙)
热度:
Flash AS3.0制作鼠标跟随 制作:TittupFrog(跳跳蛙)
热度:
Flash AS3.0搜索AStar最短路径 制作:TittupFrog(跳跳蛙)
热度: