关于SLG战略游戏中,人物移动范围的算法(js实现)
来源:互联网 发布:seo跟sem的区别 编辑:程序博客网 时间:2024/05/27 00:48
关于SLG战略游戏中,人物移动范围的算法
战略游戏里作战单位都是有移动力的, 显示移动选区的时候会出现围绕单位的一个菱形选区,里面包含了对障碍物的计算.
例: 假设目前有一单位坐标为 5,5
移动力为 2格时,出现的选区坐标!
2009-2-15 17:09
js函数实现
- function ScopeFinder()
- {
- this.sx=0; //中心点
- this.sy=0;
- this.step=5; //移动力
- this.maxX=10; //地图边界
- this.maxY=10;
- this.hinder={"6,5":true,"5,5":true}; //障碍点
- this.sp={}; //记录每个格子的移动力
- this.wp=[]; //等待处理的节点
- this.path=[]; //包含了结果
- this.opened={}; //包含了已经处理的点
- this.find=function()
- {
- this.path=[]; //清空
- this.opened={};
- this.wp=[];
- this.sp={};
- this.sp[this.sx+","+this.sy]=this.step; //将初始点的移动力设置为最高移动力
- this.wp.push([this.sx,this.sy]); //放进待处理队列
- this.opened[this.sx+","+this.sy]=true; //把起点放进已处理的点中
- while(this.wp.length)
- {
- this.getNode();
- }
- return this.path; //返回结果集合
- }
- //获取一个待拓展节点
- this.getNode=function()
- {
- var tmpNode=this.wp.pop();
- var x=tmpNode[0];
- var y=tmpNode[1];
- this.findNode(x,y,x+1,y); //右
- this.findNode(x,y,x-1,y); //左
- this.findNode(x,y,x,y+1); //下
- this.findNode(x,y,x,y-1); //上
- }
- //检查节点
- this.findNode=function(fx,fy,tx,ty)
- {
- if(tx<0 || ty<0 || tx>=this.maxX || ty>=this.maxY) { return; } //如果超出边界
- if(this.hinder[tx+","+ty]){return;} //如果是障碍
- if(this.opened[tx+","+ty]){return;} //如果是处理过的
- if(this.sp[fx+","+fy]-1<0){return;}; //如果已经没有移动力了
- //如果都不是,则代表是个可以拓展的节点
- this.sp[tx+","+ty]=this.sp[fx+","+fy]-1; //把新的节点的移动力继承并减1
- this.wp.push([tx,ty]); //加入等待队列
- this.opened[tx+","+ty]=true; //设置为已经处理的
- this.path.push([tx,ty]); //加入结果
- }
- }
0 0
- 关于SLG战略游戏中,人物移动范围的算法(js实现)
- SLG中搜索某个角色可移动区域的算法
- 游戏人物跟随鼠标移动的实现
- cocos2d-2 游戏中人物的移动
- Android 简单游戏实现笑脸的移动与人物移动
- Silverlight.XNA(C#)跨平台3D游戏研发手记:(二)四叉树遍历与人工智能A*算法在SLG移动路径范围测算中的应用
- 转][转]SLG中搜索某个角色可移动区域的算法
- 第一人称和第三人称游戏中人物的移动和旋转
- 关于游戏中拦截算法的实现
- 战棋类中实现的移动范围
- 战棋类中实现的移动范围
- 关于js中变量的作用范围
- js中关于排序算法的实现
- Android实现人物在地图中移动
- unity实现血条随人物的移动
- Android游戏中人物随手势移动例子
- 关于游戏中移动的坐标算法(复习初中的三角函数知识)
- 手机游戏3D人物的移动控制
- webgame游戏模式分析二
- 四种寻路算法计算步骤比较
- flash与后台数据交换方法整理1-LoadVars篇
- flash与后台数据交换方法整理3-WebService篇
- flash网游常用技术-XMLSocket
- 关于SLG战略游戏中,人物移动范围的算法(js实现)
- flash与后台数据交换方法整理2-Flash Remting篇
- 战争策略类Webgame的设计测试方法
- PHP 常用设计模式
- c++ string命令详解
- c++中的string的用法总结
- [Linux]TIME 函数
- Linux操作系统多线程同步Mutex详细介绍
- [C/C++]标准C++ 时间日期函数