0

0

Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径

php中文网

php中文网

发布时间:2016-06-07 15:12:27

|

1577人浏览过

|

来源于php中文网

原创

下面的设计稍微繁琐一些,有必要把思路说清楚。 下一步的主要实现当我们点击Go按钮后,得到骰子随机数,就是行走的步数,根据步数获取行走的路径,然后角色根据路径移动位置。大体流程如图所示: 这其中getPath()获取路径的方法有必要说清楚,还是看流程图

下面的设计稍微繁琐一些,有必要把思路说清楚。

下一步的主要实现当我们点击Go按钮后,得到骰子随机数,就是行走的步数,根据步数获取行走的路径,然后角色根据路径移动位置。大体流程如图所示:


Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径

这其中getPath()获取路径的方法有必要说清楚,还是看流程图吧


Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径


思路大体是这样的,代码实现上可能存在一些差别,但是不影响我们的整体设计思想。


我们开始修改GameBaseScene代码


Haiper
Haiper

一个感知模型驱动的AI视频生成和重绘工具,提供文字转视频、图片动画化、视频重绘等功能

下载
GameBaseScene.h 
//新添加变量 表示地图块中每块的宽高
const int tiledWidth = 32; 
const int tiledHeight = 32;

class GameBaseScene: public Layer
{
public:
	int tiledColsCount; //关卡地图总的列数
	int tiledRowsCount;//关卡地图总的行数

	bool** canPassGrid;//根据地图总的行列数创建的二维数组

	virtual void initTiledGrid();//用来初始化canPassGrid数组
	void setWayPassToGrid();//根据地图图层way,设置canPassGrid相应的值为true
	void onExit();//退出时需要释放某些变量空间
	
	void addGoButton();//添加GO 按钮
};


修改GameBaseScene.cpp文件


在init方法中添加新增函数的调用
bool GameBaseScene::init()
{
 …………………..
	addGoButton();
	initTiledGrid();
	setWayPassToGrid();
…………….
}
void  GameBaseScene::setWayPassToGrid()
{
	TMXLayer* wayLayer = _map->layerNamed("way");//获取地图way图层

	Size _mapSize = wayLayer->getLayerSize(); //获取way图层大小
              //根据way图层,获取道路的坐标并转换成地图的行列值,设置canPassGrid相应的行列值为true,表示人物可以从这里通过
               for (int j = 0;  j < _mapSize.width; j++) {  
		for (int i = 0;  i < _mapSize.height; i++) {  
                                    Sprite* _sp = wayLayer->tileAt(Point(j, i));  
                                     if (_sp) 
			{  
                                                            float x = _sp->getPositionX();
				float y = _sp->getPositionY();
				int col = x/tiledWidth;
				int row = y/tiledHeight;
				canPassGrid[row][col] = true;
				log("canPassGrid row=  %d ,col =%d ,canpass = %d" ,row,col,canPassGrid[row][col]);
            }  
			
        }  
    }  
	log("setWayPassToGrid finished");
}


//这个就是简单 的添加Go按钮
void  GameBaseScene::addGoButton()
{
	Sprite* goButton = Sprite::create(GO_BUTTON);
	goButton->setPosition(ccp(tableStartPosition_x+2*tableWidth,tableStartPosition_y-tableHeight*5));
	addChild(goButton);
}
//当退出是调用该函数,释放canPassGrid占用的空间
void GameBaseScene::onExit()
{
	
	CC_SAFE_DELETE(canPassGrid);
	Layer::onExit();

}


下面看一下initTiledGrid()方法的实现,由于每个关卡地图大小不一样,所以这个方法的实现放到了子类中

 

SeaScene.cpp实现如下

SeaScene实现父类GameBaseScene的initTiledGrid方法

void GameBaseScene::initTiledGrid()
{
	tiledColsCount = 20;//地图总的列数
	tiledRowsCount = 15;//地图总的行数

	//根据行列数创建二维数组canPassGrid
	canPassGrid = new  bool*[tiledRowsCount];  
	 for(int i=0;i

Ok 至此我们已经可以调试一下代码,从log中可以看到已经打印出了canPassGrid数组中可以通过的行列值了

对比一下sea.tmx文件中的way图层 ,看看行列值是不是一致了

Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径


点击下载代码

http://download.csdn.net/detail/lideguo1979/8276135


获取路径稍微复杂一些,我们分多章介绍


未完待续

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.3万人学习

Webpack4.x---十天技能课堂
Webpack4.x---十天技能课堂

共20课时 | 1.4万人学习

Bootstrap4.x---十天精品课堂
Bootstrap4.x---十天精品课堂

共22课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号