用cocos2d3.0写一个srpg游戏-移动部分的实现
来源:互联网 发布:视频画质增强软件 编辑:程序博客网 时间:2024/04/27 22:35
确定SRPG一个人物的移动范围,
我用的是比较傻的穷举法,
其实就是把人物可移动长度的每一个点都判断一下是否可以移动,
然后根据地形对人物影响的障碍等级,
每走一步,就少一个障碍等级的行走能力。
具体看代码
void SearchPathForSLG::init(TMXTiledMap* map,Point heroIndex,int runLength,bool movePath[][255]){
Point mapSize=Point(map->getMapSize().width,map->getMapSize().height);
//重置可移动范围
for (int i=0; i<255; i++) {
for (int j=0; j<255; j++) {
movePath[i][j]=false;
}
}
//设置移动的障碍等级
for (int i=0; i<255; i++) {
for (int j=0; j<255; j++) {
obstacleLevel[i][j]=TMXMapHelper::getMapTiledObstacleLevel(TMXMapHelper::getMapTiledType(Point(i,j), map));
}
}
//开始查找
search(heroIndex,runLength,movePath,mapSize);
}
//查找可移动范围-顺序为上,下,左,右
bool SearchPathForSLG::search(Point heroIndex,int count,bool movePath[][255],Point mapSize){
searchPath(Point(heroIndex.x,heroIndex.y-1),count,movePath,mapSize);
searchPath(Point(heroIndex.x,heroIndex.y+1),count,movePath,mapSize);
searchPath(Point(heroIndex.x-1,heroIndex.y),count,movePath,mapSize);
searchPath(Point(heroIndex.x+1,heroIndex.y),count,movePath,mapSize);
return false;
}
//查找对应位置是否可移动
bool SearchPathForSLG::searchPath(Point heroIndex,int count,bool movePath[][255],Point mapSize){
Point thisPoint=heroIndex;
//如果该位置没有越界,就继续盘但
if(thisPoint.x>=0&&thisPoint.y>=0&&thisPoint.x<mapSize.x&&thisPoint.y<mapSize.y){
int pointX=(int)thisPoint.x;
int pointY=(int)thisPoint.y;
//获取该位置的障碍等级
int thisObstacleLevel=obstacleLevel[pointX][pointY];
//如果障碍等级是99说明改位置是不能移动的
if(thisObstacleLevel==99)
return false;
//如果当前可移动能力减掉障碍等级之后还能移动,就继续查找
if((count-thisObstacleLevel)>=0){
movePath[pointX][pointY]=true;
search(thisPoint,count-thisObstacleLevel,movePath,mapSize);
}
}
return false;
}
效果可以看图。
- 用cocos2d3.0写一个srpg游戏-移动部分的实现
- 用cocos2d3.0写一个srpg游戏-srpg介绍
- 用cocos2d3.0写一个srpg游戏-开篇
- 用cocos2d3.0写一个srpg游戏-需要实现什么
- 用cocos2d3.0写一个srpg游戏-从配置文件中读取敌我出战阵容(一)
- Cocos2d3.0之 action的用法从一个故事说起
- 用JAVA写的一个飞机游戏
- 【用Cocos Creator给暗恋的女生写一个游戏(7)】——(Run Game)背景移动
- Cocos2d3.0话说ValueMap的一般用法
- 写了一个C#的俄罗斯方块的游戏,包含人工智能部分,源码可下载
- 用Vue写的一个计时游戏,来源于脚本之家的代码,自己写了注释,修改了部分地方
- 用Shell编程写一个能实现自动安装目录和运行游戏的脚本
- 以前写的一个游戏~
- 发个从前的游戏开发习作(SRPG,仅支持Android)
- 用OpenGL写的一个可以上下左右移动的球
- 我用c++写的一个多项式的处理器的核心部分和输出部分。实现多项式的加法,减法,乘法,除法,及其求余。
- 一个用wiEngine写的非常简单的游戏
- 一个在网上找到的用C++写的游戏
- 叶子华戒烟经历:2014/4/28
- ubuntu下使用vi是方向键变乱码 退格键不能使用的解决方法
- windows下nginx+php第二天
- iOS的framework常见问题汇总
- Jsoup进阶之获取指定数据
- 用cocos2d3.0写一个srpg游戏-移动部分的实现
- JAVA – 虚函数、抽象函数、抽象类、接口
- [IOS] UIViewController 隐藏 Status Bar 的方法
- JQuery日记 2014-04.29
- "I ask you, have you ever known what it is to be an orphan?"
- OCP-1Z0-051 第57题 别名和null值判断
- mysql中优化sql语句查询的30种方法
- C语言位运算
- Ruby on Rails:控制器纵览