【源码+文档】大富翁(Monopoly)

2023-11-12

功能点与实现思路

  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配置文件的字符串映射解决中文问题。

  源码和文档都托管在了【WRITE-BUG数字空间】上面了,有需要的可自取~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【源码+文档】大富翁(Monopoly) 的相关文章

  • 将运算符 << 添加到 std::vector

    我想添加operator lt lt to std vector
  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 如何在 VC++ CString 中验证有效的整数和浮点数

    有人可以告诉我一种有效的方法来验证 CString 对象中存在的数字是有效整数还是浮点数吗 Use tcstol http msdn microsoft com en us library w4z2wdyc aspx and tcstod
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 在 CPP 类中将 C 函数声明为友元

    我需要在 C 函数中使用类的私有变量 我正在做这样的事情 class Helper private std string name public std getName return name friend extern C void in
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 处理右值时的 insert 与 emplace

    std string myString std unordered set
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 没有“对 *this”功能的右值引用的解决方法

    我有一个围绕可移动对象的代理容器类 并希望代理能够隐式生成对底层对象的右值引用 但仅当代理本身被移动时 我相信我将能够按照提案 n2439 实施此行为 将移动语义扩展到 this http www open std org jtc1 sc2

随机推荐

  • [深度学习实战]基于PyTorch的深度学习实战(上)

    目录 一 前言 二 深度学习框架 PyTorch 2 1 PyTorch介绍 2 2 Python安装详解 2 3 PyTorch安装详解 三 变量 四 求导 五 损失函数 5 1 nn L1Loss 5 2 nn SmoothL1Loss
  • 【C++】中国农业大学C++语言程序设计(上)——算法与控制结构【三】

    老师 阚道宏 算法与控制结构 算法 算法结构 布尔类型 选择语句 循环语句 算法设计与评价 评价 算法与控制结构 算法 算法结构 顺序结构 按顺序执行 选择结构 按条件结构 循环结构 按条件重复执行 布尔类型 布尔类型 true false
  • 为什么打不开_为什么有的微信小程序打不开呢?该怎么解决?

    微信小程序如今已渗透到我们日常生活方方面面 点餐 购物 出行都可能用到 不过有时候却会出现微信小程序打不开的情况 微信小程序打不开怎么解决 微信小程序打不开的原因比较复杂 可能有以下几种情况 1 手机内存不足 手机内存不足时 微信小程序可能
  • 2022年蓝桥杯省赛真题解析(C++B组)

    2022 04 09 我第一次参加蓝桥杯 我想说今年官方为了防止作弊 可谓煞费苦心 直接启用备用卷 难度直接到国赛难度 第一次参加 却让我输的那么彻底 2023 04 05更新了题解 祝各位在4 8能取得一个圆满的成绩 目录 A九进制转十进
  • less学习笔记--27/8/17

    less最新官网 http less bootcss com Less 是一种动态的样式语言 Less扩展了CSS的动态行为 比如说 设置变量 Variables 混合书写模式 mixins 操作 operations 和功能 functi
  • AES加密算法详解(图文解释)

    由于DES加密算法被破解了 3DES加密算法虽然没有被破解 但是3DES算法的加解密效率低 所有现在都使用AES算法 AES加密算法是密码学中的高级加密标准 AES为分组加密法 把明文分成一组一组的 每组长度相等 每次加密一组数据 直到加密
  • 使用Go语言和以太坊智能合约交互

    尽管最近遇到了些麻烦 但以太坊仍然是区块链领域内智能合约的最大参与者 这似乎不会很快改变 在我看来 技术本身具有很大的潜力 是从学术的角度看很有意思 但正如上面提到的问题和之前的许多问题是区块链技术方面的 智能合约 特别是具有Solidit
  • 使用 Spark DataFrame 进行大数据分析

    目录 1 什么是 spark dataframe 2 为什么要用 spark dataframe 3 创建 dataframe 4 操作 dataframe 4 1 在 dataframe 上执行 sql 语句 4 2 spark data
  • java command not found 问题出现和解决

    在启动定时任务的时候 有时会出现java command not found的错误提示 是找不到JAVA环境变量所导致的 在此记录 防止遗忘 在任意目录下执行 export JAVA HOME home uat ops java jdk d
  • cucu: a compiler you can understand (part 1)

    原文地址 http blog csdn net roger wong article details 8498591 译者序 最近在学习一些编译器的基本知识 就找到了这篇英文的博客 在csdn搜了一下貌似没有人翻译 所以我干脆翻译了算了 反
  • 学会Mybatis框架:一文掌握MyBatis与GitHub插件分页的完美结合【三.分页】

    Welcome Huihui s Code World 接下来看看由辉辉所写的关于Mybatis的相关操作吧 目录 Welcome Huihui s Code World 一 Mybatis分页 1 Mybatis自带分页 2 插件分页 二
  • ‘windows socket error:由于目标机器积极拒绝,无法连接。(10061),on API 'connect'的错误?

    1 gt 连接时出现 windows socket error 10061 on API connect 是SOCKET没有启动 SCKTSRVR EXE 或者无法连接到服务器 端口等 使用socketconnect很简单 只要在应用服务器
  • 【华为OD机试真题 JAVA】贪吃蛇

    JS版 华为OD机试真题 JS 贪吃蛇 标题 贪吃蛇 时间限制 1秒 内存限制 262144K 语言限制 不限 贪吃蛇是一个经典游戏 蛇的身体由若干方格连接而成 身体随蛇头移动 蛇头触碰到食物时 蛇的长度会增加一格 蛇头和身体的任一方格或者
  • python3**2的值_Python表达式3**2**3的值为_______________。

    填空题 Python表达式3 2 3的值为 单选题 探岳的产品定位是 填空题 Java 程序分为两类 即 和 Java 小应用程序 单选题 一汽 大众成立时间是 填空题 Java 中事件源发生事件时 就自动调用执行被类实现的某个接口方法 填
  • rust工程

    文章目录 Cargo macOS配置rust环境 vscode配置 目录结构 Cargo toml cargo命令 hello world 跟web交互 WebAssembly 跟Android交互 配置Android环境 JNI例子 ND
  • Python大作业(极简版3000字)

    Python大作业 作业要求 作业要分摘要和正文两部分 在书写时 请注意以下几点 1 摘要字数在300字左右 可分条描述 但不许有图 表和流程图 2 正文字数为1500 2000字 截图不算字数 3 在编程环境中写代码 并将程序代码及运行结
  • 软件测试终极难题:先学性能测试还是先学自动化测试?

    应该先学性能 还是应该先学自动化 这个问题是很多想要提升的人都会比较犹豫的 因为不知道怎么学更好 更合适 那今天我们就来给大家讲讲这个问题 在选择这两个方向的时候 我们应该先明确测试方法都是做什么的 性能测试首先我们是要解决这个软件功能已经
  • WIN7+VSCODE如何搭建C++开发环境

    1 参考文档 Ref 1 https zhuanlan zhihu com p 87864677 2 搭建环境 OS windows 7 vscode 1 70 2 C Extension version C C v1 2 2 3 编译 运
  • QT信号槽机制理解

    1 信号和槽概述 gt 信号槽是 Qt 框架引以为豪的机制之一 所谓信号槽 实际就是观察者模式 发布 订阅模式 当某个 事件 发生之后 比如 按钮检测到自己被点击了一下 它就会发出一个信号 signal 这种发出是没有目的的 类似广播 如果
  • 【源码+文档】大富翁(Monopoly)

    功能点与实现思路 游戏开始界面 选择界面 设置界面 背景音乐 退出功能 游戏回合制 通过回调函数的不断嵌套调用实现 人物行走动画 使用TexturePacker将人物动作打包生成图集与plist文件 将图集全部加载到SpriteFrameC