资源下载地址:https://download.csdn.net/download/sheziqiong/85603162

资源下载地址:https://download.csdn.net/download/sheziqiong/85603162

项目信息介绍

1. 项目名称

大富翁(Monopoly)

2. 项目进度时间线

第一周 学习知识

建立仓库
完成基本界面和类框架
学习cocos2dx相关知识

第二周 收集素材

实现各种地图交互
完成素材收集和地图绘制
完成类框架设计
学习cocos2dx相关知识

第三周 肝肝肝!!!

实现回合制
实现部分触发事件
实现部分地产
学习cocos2dx相关知识

第四周 肝肝肝!!!+Debug

实现股票功能
实现信息栏功能
实现了大部分触发事件
实现了基本的游戏房产机制
完成地产和特殊地点触发功能

第五周 肝肝肝!!!+Debug

实现大量道具及卡片机制
实现神灵
完成了所有触发事件

第六周 收尾+Debug

实现AI功能
添加背景音乐及音效
撰写设计文档及游戏说明
撰写答辩幻灯片

项目开发文档

整体架构设计与小组分工

整体构架设计

小组分工

地图绘制 菜单 交互 地产内容 部分道具
角色动画 回合制实现 事件 神灵 AI
股市内容 道具部分内容 角色信息显示栏 音效与音乐

功能点与实现思路

  1. 游戏开始界面、选择界面、设置界面、背景音乐、退出功能
  2. 游戏回合制
    通过回调函数的不断嵌套调用实现
  3. 人物行走动画
    使用TexturePacker将人物动作打包生成图集与plist文件
    将图集全部加载到SpriteFrameCache
    创建动画时直接读取SpriteFrameCache
  4. 人物沿路行走
    在地图类中增加储存路径坐标的vector,人物沿着路径坐标的位置行走。
  5. 地图拖拽、地图选点、视角跟随、小地图选点定位
  6. AI玩家混合功能
    为角色类添加成员变量标记该角色是否为AI。
    在与玩家可能产生交互的部分判断该角色是否为AI并单独加上AI决策的代码。
  7. 旅店房产、街道机制
  8. 特殊房产:公园、度假村、购物中心、研发中心。
  9. 实体公司:航空公司、石油公司、保险公司、科技公司。
  10. 特定位置触发随机事件(命运与机会)
  11. 29种道具(包括卡片)
    每个道具为道具基类的派生类,通过调用各个类的虚函数完成相应效果
  12. 股市功能
    每只股票为一个类,通过调用成员函数改变信息,更新时刷新显示效果
  13. 角色信息显示栏
    与角色等类相关,当状态信息改变时,刷新显示内容
  14. 房屋建造、升级功能
  15. 特殊房产(银行,医院)
  16. 神灵
    在地图中储存神灵的位置,在人物类中增加成员变量判断人物是否以及被什么神灵附身。
    被附身的人着陆后会先判断地产再发动神灵功能。

技术难点与其解决方案

1. 回合制

技术难点

最初认为for循环轮流遍历所有人物即可实现回合制,后来发现不是这样。
for循环的执行是程序开始执行后瞬间完成的,无法与用户在任何时刻都有可能进行的操作产生交互。

解决方案

使用回调函数的不断嵌套调用。
调用层次为:
等待用户按下Go->按下Go->掷骰子->人物行走->判断神灵->判断地产-
->下一个人的回合开始,等待用户按下Go->按下Go->…
从而实现人物根据用户按下Go的时机轮流行走。

2. 坐标

技术难点

cocos2dx的坐标系统非常复杂,涉及到两套方向,不同参考系,不同量纲。
在程序设计的过程中,会涉及到大量的鼠标选点,地图定位,位置识别等等问题,就非常的让人头疼。

解决方案

通过对地图的封装,在地图类外的所有地方使用位置的数组索引作为位置编号,创建自然坐标系。在地图类里,经过绞尽脑汁的计算整出来一套坐标变换方法。

3. 内存管理

难点

cocos2dx的类都使用单独实现的引用计数,为了风格统一,游戏设计中的类多继承自cocos2dx使用其自动内存管理,导致类内部无法定义静态变量。早期调试过程中也因为对cocos2dx内存管理理解不够透彻,导致了很多很严重的bug,变量经常会被释放掉。

4. 字符编码

技术难点

不知道为什么VS使用的MSVC编译器对UTF8编码格式的源代码支持不够完善,整个项目的源代码文件编码格式最后使用了GB2312,而cocos2dx默认解码导致输出中文会乱码。

解决方案

无奈之下只能使用windows头文件中的相关函数硬性转码,但是这就带来了跨平台移植的困难。Android平台使用的Clang编译器没有windows头文件,而且对GB2312的支持不够完善。考虑以后可以使用plist配置文件的字符串映射解决中文问题。

项目亮点

图集的使用

使用TexturePacker将人物的4向行走图片打包生成图集与.plist文件
并将图集全部加载到精灵帧缓存中
创建动画时读取精灵帧缓存即可,提高了性能

character_frame_cache_ = SpriteFrameCache::getInstance();
character_frame_cache_->addSpriteFramesWithFile
(StringUtils::format("%s.plist", name_.c_str()), StringUtils::format("%s.png", name_.c_str()));

常量与全局常用方法

将项目中的常量定义于CommonConstant.h中,方便增删调整。

constexpr int hotel_land_value = 300;
constexpr int hotel_sell_value[5] = { 500,1000,2000,4000,0 };
constexpr int hotel_rent_value[5] = { 100,400,1200,3000,7000 };

将项目中的一些常见代码段包装成函数声明于CommonMethod.h中。

void SendMsg(int msg)
{auto dispatcher = Director::getInstance()->getEventDispatcher();char* buf = new char[10];sprintf(buf, "%d", msg);log("message sending : %s", buf);EventCustom event = EventCustom("monopoly_msg");event.setUserData(buf);dispatcher->dispatchEvent(&event);CC_SAFE_DELETE_ARRAY(buf);
}

丰富的地图交互

实现了小地图定位、视角跟随、位置信息显示、地图拖拽、地图选点等交互,提高了游戏可玩性。

大量道具、地产、事件的实现

本项目共实现近30款道具,10余种地产,大量相关的事件,游戏内容非常丰富,机制复杂,可玩性极高。

使用的c++特性

包括单不限于:
Lambda表达式
STL容器
类和多态
函数重载
类型判断
范围for语句
类内初始值
常量表达式constexpr

代码规范

遵循C++风格类型转换
贯彻落实Google风格的命名
尽量使用Cocos2dx风格的类设计与内存管理
www.biyezuopin.vip

版本控制与团队协作

全程使用GitHub和Git进行版本控制
尽量做到了符合GoogleAngularJS规范的commit记录

项目运行效果(超过4张)

资源下载地址:https://download.csdn.net/download/sheziqiong/85603162

资源下载地址:https://download.csdn.net/download/sheziqiong/85603162

基于cocos2dx引擎开发的大富翁游戏相关推荐

  1. 基于cocos2d-x引擎的游戏框架设计【转载】

    http://www.cnblogs.com/lancidie/archive/2013/03/18/2965564.html 基于cocos2d-x引擎的游戏框架设计 移动互联网浪潮正在彻底改变人们 ...

  2. 使用《红孩儿工具箱》开发基于Cocos2d-x的《打地鼠》游戏

    使用<红孩儿工具箱>开发基于Cocos2d-x的<打地鼠>游戏 大家好,我是红孩儿.经过一年左右业余时间的持续开发,<红孩儿工具箱>已经初步完成了一些不错的功能,大 ...

  3. 分享个手机棋牌游戏源码  欢乐麻将2.0 使用cocos2d-x引擎开发

    分享个手机棋牌游戏源码  欢乐麻将2.0 使用cocos2d-x引擎开发 https://bbs.wxrym.com/thread-90094-1-1.html (出处: 外星人源码论坛) 不知不觉已 ...

  4. 【HIMI转载推荐之三】基于Cocos2dx引擎UI扩展引擎包[cocos2d-x-3c]

    [前言点评] 此篇主要作者:jason-lee-lijunlin  基于Cocos2d-x引擎进行封装的UI框架的扩展包. 此文章Himi已经仔细看过,总体来说是篇很好的文章,是给使用-x引擎的童鞋们 ...

  5. Kinect结合Unity3D引擎开发体感游戏(二)

    这篇接着<Kinect结合Unity3D引擎开发体感游戏(一)>,时隔3个月才出这篇,在此期间还有不少机油们,要求出续集,期间在公司那边事情太多,一直帮公司前人做的项目擦屁股,到目前为止, ...

  6. [Kinect]Kinect结合Unity3D引擎开发体感游戏

    最近公司项目需要做科技馆的体感游戏,以前也没接触过游戏,虽然以前自己也是想做游戏,我想大部分都是学编程出来来做游戏,哈哈(请允许我淫笑一下,终于可以做这方面).虽然以前没接触过体感游戏,看到的体验也是 ...

  7. 基于cocos2dx的横版动作游戏制作(二)

    基于cocos2dx的横版动作游戏制作(二) 如果你看过第一部分介绍,你应该大体知道一个横版游戏该怎么样去做,需要什么东西了....本部分介绍一些细节设计... 第一个:单例对象我们应该怎么设计才比较 ...

  8. 基于cocos2dx的横版动作游戏制作(一)

    基于cocos2dx的横版动作游戏制作(一) 本人最近几个月在工作之余,都有断断续续地去学习cocos2dx的一些东西,在一些论坛上参考有关资料,源码,比如www.9miao.com,泰然网等等,毕竟 ...

  9. Layabox引擎开发H5打地鼠游戏(一)

    第一节 构造打地鼠界面 创建项目并导入资源: 制作打地鼠界面: 加载资源并显示界面: 代码及相关资源下载 创建项目并导入资源 创建项目 本项目没有用到下图文件夹原有的组件,将图片全部删除 导入图片 制 ...

最新文章

  1. percona-5.7二进制多实例安装
  2. 设置Exchange 2010附件大小限制原则
  3. 百度高德位置定位服务器,调用百度、高德地图App,百度地图网页版,App定位
  4. virt-v2v 使用指南
  5. ASP.Net缓存 1
  6. 多个线程访问统一对象的不同方法_C#多线程读写同一文件处理
  7. roll() java_Java Calendar roll()用法及代码示例
  8. LeCun:放弃深度学习吧,AI的未来是能量学习
  9. Android WindowManager实现悬浮窗效果 (一)——与当前Activity绑定
  10. struts2+json(3)
  11. eclipse上安装并配置tomcat
  12. 左耳朵耗子:云原生的正确打开方式
  13. 【MyBatis笔记-09】MyBatis-Plus的使用
  14. gps串口通信程序c语言,stm32单片机串口接收GPS数据并解析NMEA之GPRMC
  15. 【Python】Jupyter Notebook介绍、安装及使用教程
  16. 揭秘 typedef四用途与两陷阱
  17. 飞凌嵌入式FETMX6Q-C
  18. 用Java写一个五子棋小游戏
  19. 【javascript】class的继承之super的使用
  20. 百度传课html,百度传课电脑版

热门文章

  1. 迅雷服务器响应超时无法加速,迅雷无法加速敏感资源怎么办?迅雷解除无法加速敏感资源限制教程...
  2. 如何使用 Zend Expressive 建立 NASA 图片库? 1
  3. php条件查询,PHP-----多条件查询(示例代码)
  4. Linux学习(三):管道相关命令
  5. 【Lintcode】444. Graph Valid Tree II
  6. 计算机三级网络技术过几条件,2017计算机三级网络技术十大必记语句
  7. 【C++·峰顶计划】引用操作及底层原理深析
  8. 知乎引流、知乎带货工具、知乎选品、数据分析、带货软件(1)
  9. python资讯_python学习-WEB资讯专栏-DMOZ中文网站分类目录-免费收录各类优秀网站的中文网站目录....
  10. 淘宝(SpringBoot自动装配原理)