最近工作忙,没什么时间写新东西,翻点以前的东西出来,呵呵
这是以前准备做MMO的时候搞的一些测试,当时准备自己写A*的,不过这个只是简单的,没有智能的,两点一线的,具体算法自己也忘了,哈哈......
Flash动画
下面是算法的具体代码,里面有注释,我这里不说了,无非就是先算一下竖的路能不能走,然后再算一下横的路能不能,再把所有的点存起来放在数组里....然后返回结果,呵呵
程序代码
/**
* ...
* @author Default
* @version 0.1
*/
package soda {
public class FindPath
{
//地图数组
private var map:Array;
//路径数组
private var pathX:Array;
private var pathY:Array;
private var result:Object;
//存放已经寻找到的路
private var findResult:Object;
//平移路径所花费的代价
private var titleWidth:int = 10;
//斜移路径所花费的代价
private var titleTilted:int = 14;
public function FindPath()
{
pathX = new Array();
pathY = new Array();
findResult = new Object();
result = new Object();
}
/**
* 设置一个寻找路径的数组
* @param map
* @return
*/
public function setMap(map:Array):void
{
this.map = map;
}
/**
* 计算该点是否可走
* @param endX
* @param endY
* @return 一个布尔值
*/
public function isWalk(endX:int,endY:int):Boolean
{
if(map[endY][endX] == 1)
{
return true;
}
return false;
}
/**
* 寻找一条可走的路径
* @param startX
* @param startY
* @param endX
* @param endY
* @return 返回寻找到的最适合的路径数组
*/
public function findPath(startX:int,startY:int,endX:int,endY:int):Object
{
//x坐标的差距
var tempX:int = Math.abs(startX - endX);
//y坐标的差距
var tempY:int = Math.abs(startY - endY);
pathX = new Array();
pathY = new Array();
if(endX > startX)
{
//检查x位置
//var xx:int = 0;
var yy:int = startY;
for(var i:int = startX + 1; i <= endX; i++)
{
//xx = i;
if(map[yy][i] != 1)
{
//break;
pathX.unshift(i - 1);
yy++;
i--;
pathY.unshift(yy);
}
else
{
pathX.unshift(i);
pathY.unshift(yy);
}
}
if(yy > endY)
{
//检查y位置
for(var i:int = yy; i >= endY; i--)
{
if(map[i][endX] != 1)
{
break;
}
else
{
pathX.unshift(endX);
pathY.unshift(i);
}
}
}
else
{
//检查y位置
for(var i:int = yy + 1; i <= endY; i++)
{
if(map[i][endX] != 1)
{
break;
}
else
{
pathX.unshift(endX);
pathY.unshift(i);
}
}
}
}
result.x = pathX;
result.y = pathY;
return result;
}
//检查纵向的数组是否可通行
private function vertical(start:int, end:int, variable:int):void
{
//检查y位置
for(var i:int = start; i <= end; i = i + variable)
{
if(map[i][end] != 1)
{
break;
}
else
{
pathX.unshift(end);
pathY.unshift(i);
}
}
}
}
}
点击下载源代码
分享到:
相关推荐
该工具的最新版本4.2.2修复了一个关键问题,即非会员在微信小程序前端无法查看微信区块的问题,从而扩大了潜在用户的使用范围。 在前端方面,此工具的小程序设计注重用户体验,提供简洁易用的界面,使用户能够快速...
站长亲测版金手指在线虚拟微模拟股票交易区块系统程序源码
小程序区块养猫 理财 完整漂亮 未测试,无教程,自行研究,价格设置成1,签到一下就有了,相当于免费 小程序区块养猫 理财 完整漂亮 未测试,无教程,自行研究,价格设置成1,签到一下就有了,相当于免费 小程序区块养猫 理财 ...
区块宠物整个操作流程非常简单,宠物只是一个商品,用户低买高卖赚差价,公司只提供一个交易平台,所有资金都是玩家点对点交易,无需通过公司。 1. 注册实名认证 输入手机号码(获取验证码)、手机验证码、用户名、...
在基于汇编语言编写内存数据区块拷贝的程序中,主要涉及到的知识点包括: 1. **内存操作**:内存是计算机存储数据的基本单元,数据区块拷贝就是从一个内存位置复制数据到另一个位置。这需要理解内存地址的概念,...
网上下载的区块狗源代码,分享给大家!以前叫区块狗,其实里面写的区块鱼,我想了想应该是一套。叫啥都无所谓,就是区块动物,区块+动物就行了呗。要不试试区块外星人?
华登区块鱼区块宠物养殖系统源码 完美修复版,派特宠物街模式区块链源码,程序配套有安卓APP,APP在\\\\public\\\\app目录,内附安装教程
2020年运营级区块鸟源码–定制版黄金鸟区块养殖区块宠物体系 网上传播的区块宠物类型的源码太多了,真正好用又都雅的真没几个。这个除了界面美丽外,相应速率和代码优化的都很是的不错,跟今朝网上传播的那些几百上...
没错,就是目前很火的区块狗系统源码,此系统本人花一万多买的。现在淘宝上互钻上卖的都是这个源码。现在完全分享给大家。如果有能力的做二开更完美。
华登区块宠物养殖系统莱特区块狗区块猫源码 完美运营版本.zip
2020运营版华登区块狗区块彼特猪区块系统源码
区块数据
目前很火的区块狗系统源码。本人在CSDN下载的该源码,解决了按照文档搭建出现的各种问题(如:Failed opening required ),该源码可正常运行。为了帮助大家能正常的运行,我把构建中需要注意的地方追加到文档后面。
华登区块狗区块鱼区块宠物养成系区块猫
小程序区块养猫+理财+完整无问题+365养猫+区块养宠赚钱
2020新版区块鼠非你莫鼠区块狗宠物养殖源码
从压缩包子文件的文件名称“ACR122读写工具”来看,这可能包含了该工具的安装程序或可执行文件,用户下载后可以直接运行,开始进行ACR122U与S50卡的读写操作。为了确保安全,用户在使用前应该了解软件的使用指南,...