"火焰纹章"核心功能的实现

第一关预览

用到的软件

1.PngSplit:

用于将整图分割为一个个的素材,对帧动画有特效

2.Cocos2d-x:

代码和UI分开操作,减少了程序和美术之间的交互冲突,提高了代码的保密性。功能强大且完善,编译测试方便简洁,但在游戏项目创建时要确定好横竖屏,否则如果后期产生变动会比较麻烦

3.tilemap:

2d游戏地图创建,可分层和地图属性id预设

4.TexturePacker:

sprite资源图集自动构建,帧动画和tilemap地图必备

5.Excel表格:

RPG游戏必备,配值表存储大量的核心数据

前期准备

配值表的创建与使用(RPG游戏配值表都比较多)

总共生成的配值表

表数据创建及注意事项

  • 表格第一行:给人看的

  • 表格第二行,第三行:给电脑看的

  • 表格第一列:不存具体数据(索引)

  • 注意:每写完一大类物品,空出一些行数方便以后扩展。写下一大类物品时,第一列id需计算空出的行数

生成对应的LUA文件

  • 第一个文件存所有的配值表

  • 第二个文件用来生成配值表对应的LUA文件

  • 第三个文件用来清空之前生成的LUA文件

  • 本游戏生成的LUA文件存放于huoyanwenzhang\src\app\config

LUA文件在代码中的使用

敌军通过等级和对应的职业获取对应的属性(小兵太多,属性直接定死)

友军通过人物的姓名(英文)获取对应的初始属性(之后的属性都是由升级后随机成长)

游戏玩法及代码概述

友军寻路:

选定人物后,做一次寻路遍历,获取所有人物能够走到的位置并添加高亮(注意地形和敌我双方对角色寻路的影响),并且预生成移动箭头,需计算角度。

再次按下确定后,执行寻路动画(寻路的起点和终点就是人物角色的位置和光标当前位置),并逐步删除方向箭头和改变人物坐标达到人物移动的效果。

寻路核心代码:

路径及箭头方向生成代码:

人物操作流程及界面:

相当于给人物设立了状态机,能够让人物执行一系列操作。例如:

1.道具的使用和武器的装备:


创建背包代码如下:

2.友军阵营物品交换

代码如下:

3.待机指令:

待机即为该角色本回合所有操作执行完毕,不能再被选中,该界面是选中按钮点击非角色单位所产生,即待机的人物被视作此回合透明(调整角色状态即可)

4.主动攻击:

移动到敌对角色四周则可进行主动攻击,点下攻击按钮后,可在四周选择自己要攻击的角色

几种攻击情况的判定代码:

tolua.isnull作用:一个自定义参数,在c佳佳中已经被删除,但是lua还存在其地址,则进行判断c佳佳中的值是否为空

table类型:当定义的一个参数被删除,但其他地方还有引用的时候参数不会被删除。地址也不会被删除,遵循lua规则

userdata类型:当定义一个参数被删除,但其它地方还有引用的时候,参数会被删除,参数底下的自定义参数也会被删除。但是地址不会被删除。同时遵循lua和c++规则,产生冲突

5.攻击预览:

确定要攻击的对象后,选择自己要使用的背包内的一把武器;选定武器后,获取攻击预览面板,即对伤害结算的预测,再次点下确定后,进行伤害结算和经验的增长

伤害结算代码:

6.角色升级:

若经验超过100,则提升角色等级,并按照成长率增长各项属性:然后减少100点经验,重新积累经验直到能够再次升级

经验计算及升级代码:

7.角色详细属性一览:

点击R键即可获取该角色的详细数据

代码如下:

8.角色简略属性及地图属性:

人物简略属性代码:

获取地图属性代码:

敌军寻路及攻击:

在所有友方角色执行完操作后,进入敌军回合,怪物会依次执行寻路操作,基于:

  • 寻路原理:通过tilemap的id,生成一格二维数组地图。0表示可移动,1表示不可移动。导入jumper文件,选用ASTAR寻路算法,同时设置不能走斜线,输入起点坐标和终点坐标就可进行寻路

代码如下:

pathMap具体数据为:

  • (若在行动范围内无可攻击的对象)获取友军单位的坐标,遍历寻路,找距离自己最近的单位进行寻路,同时根据动力限制每回合行动的距离

代码如下:

  • (若在行动范围内有两个及以上可攻击对象)获取友军单位的详细属性,进行优先级判定:血量最少>防御力最低>攻击力最低>闪避率最低

代码如下

  • 寻路完成后进行攻击选择(到达寻路终点后,可能周围有两个以上敌对单位)

代码如下:

最终效果:

tilemap的使用

精灵图组id设置:

对图组的所有图片都设置不同的id,方便代码中对于地图属性的编写

地图分层创建:

  • 底层:铺一层草地,作为背景,对角色无影响

  • 地形层:不同的地形对于角色有着不同的属性加成或者限制

  • 怪物层:由于怪物的初始位置是事先定好的,因此可通过地图上标记来生成怪物,注意点为:在程序中需将这些结点的图片隐藏,只需要获取这几个结点的坐标即可

TexturePacker的使用

导入帧动画美术资源:

导出plist,png格式精灵帧动画图组:

cocos2d-x精灵帧动画制作:

代码解析:

1.加载两个图组文件

2.将精灵帧图片确定播放顺序

3.确定这些图片循环一次需要的时间

4.生成动画

5.循环播放该动画

存在的缺陷:

###bug:

  • 1.按键保护未完成:在寻路等动作进行时,若按下其他按钮,会造成不可预知的错误

  • 2.游戏层级不够美观:由于许多图片创建时的父节点不相同,导致层次调整变得迷离

  • 3.人物切换武器,属性未即时更新

  • 4.怪物未创建背包,怪物和其武器是两个同级的变量

  • 5.怪物重合问题:寻路算法中做了寻路后,脚下是否有友军的判定(疑似判定失效)。可能原因:角色的坐标发生偏移无法进行重合检测判定,导致重合。

怪物AI不够完善:

  • 1.怪物寻路时,会根据行动力判定周围是否有能攻击的对象,但是由于地形的原因,导致理想行动力大于真实的行动力。表现为:怪物有时不会看自己周围的怪物,而是去寻找血量少的在自己理想行动力里的怪物,并且最终无法攻击到目标。原因:理想行动力下,怪物能够攻击到血少的怪物,但是由于地形,使得真实行动力缩小,怪物可能在路上就无法行动了。

  • 2.怪物具备多把武器时,应当会智能切换武器,血量少时,应当会逃跑和加血

  • 3.只实现了初级AI,怪物还是不够灵动,完整版本应当如同象棋(大师级)一样,使玩家痛并快乐。

职业系统未完善:

  • 1.不同职业在不同地形上的表现形式应当有所区别

  • 2.不同职业所能佩戴的武器应当有所限制

  • 3.职业在行动力及属性上的优劣

  • 4.转职系统未实现(不仅仅是二转,更应当能够改变基本职业(参照《三国志英杰传》))

资源不够充足:

  • 1.无 行走动画,攻击动画,被击动画,升级动画

  • 2.无音效(各类音效都缺)

  • 3.无剧情(游戏主线都么得emmm)在这里插入图片描述

火焰纹章核心功能的实现相关推荐

  1. Springboot总结,核心功能,优缺点

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:lizmit https://blog.csdn.net/q ...

  2. 一文带你看懂Springboot核心功能及优缺点

    点击上方[视学算法]→右上角[...]→[设为星标⭐] SpringBoot核心功能 1.独立运行Spring项目 Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项 ...

  3. SAP PLM 进阶 2 – 主要核心功能

    SAP PLM 进阶 2 – 主要核心功能 SAP PLM 核心业务逻辑 功能1:产品创意的组合管理 SAP产品组合管理概要 产品组合管理的主要对象 产品组合管理结构示例 新产品立项审批过程 功能2: ...

  4. Shiro 核心功能案例讲解 基于SpringBoot 有源码

    Shiro 核心功能案例讲解 基于SpringBoot 有源码 从实战中学习Shiro的用法.本章使用SpringBoot快速搭建项目.整合SiteMesh框架布局页面.整合Shiro框架实现用身份认 ...

  5. 产品设计认知:如何构建A/B测试系统,其核心功能有哪些?

    前言 不管在精益创业还是增长黑客理论中,A/B测试作为一种成熟的数据驱动产品优化的科学方法,其核心意义并不在于某一次试验的成功或者失败,而是这种通过试验和数据驱动的产品不断进化过程.A/B测试系统就是 ...

  6. 【阿里云课程】1小时快速掌握Tensorflow核心功能,完成完整的项目实践

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第7课中一节,介绍如下: Tensorflow快速入门与实践 本节课内容为:深度学习系列课程第7期,Tensorflow快速 ...

  7. 【阿里云课程】1小时快速掌握Caffe核心功能,完成完整的项目实践

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第7课中一节,介绍如下: Caffe快速入门与实践 本节课内容为:深度学习系列课程第7期,Caffe快速入门与实践,讲述Ca ...

  8. 【阿里云课程】从零开始1小时快速掌握Pytorch核心功能,完成完整的项目实践...

    大家好,继续更新有三AI与阿里天池联合推出的深度学习系列课程,本次更新内容为第7课中一节,介绍如下: Pytorch快速入门与实践 本节课内容为:深度学习系列课程第7期,Pytorch快速入门与实践, ...

  9. 自己实现spring核心功能 三

    前言 前两篇已经基本实现了spring的核心功能,下面讲到的参数绑定是属于springMvc的范畴了.本篇主要将请求到servlet后怎么去做映射和处理.首先来看一看dispatherServlet的 ...

最新文章

  1. 如何独立开发一个网络请求框架
  2. 1013 Battle Over Cities(图的DFS解法)
  3. asp.net UrlRewrite 技术的实现
  4. Linux Daemon Writing HOWTO
  5. 【Laravel】Fatal error: Declaration of Illuminate\Container\Container::get($id) must be compatible
  6. boost::log::sinks::text_ipc_message_queue_backend用法的测试程序
  7. multipathd: sdn: readsector0 checker reports path is down 多路径出错问题解决
  8. php 禁止浏览器直接访问网页_.php后缀的url地址在浏览器打开怎么不让他下载,而是访问...
  9. “霸榜CLUE” ,刚刚发布的业界最大中文NLP预训练模型有多强?
  10. 中国遥感卫星详细参数信息
  11. pxc部署和配置详解
  12. c语言中常用运算符号
  13. 树莓派开发板Android Things镜像烧录
  14. npm常用命令(持续更新)
  15. 如何检查DirectX的版本(用于Windows Phone Developer Tools的安装检查)
  16. oracle 导出数据库和导入数据库
  17. 2019网络攻击趋势
  18. 关于搜狗输入法如何导入本地词库(超详细版)
  19. Angular4 - 启动过程
  20. 教你如何在低成本、有限的时间里策划裂变100社群_怎么做微信防封群

热门文章

  1. 招标投标管理系统(毕业设计)
  2. C语言n层嵌套平方根的计算n
  3. 华为手机如何与台式计算机连接不上,华为手机连接不上电脑怎么处理
  4. 集成电路光刻机精密运动台控制方法
  5. 分手快乐---(哪个更好呢)
  6. Xposed 模块编写
  7. 人类一败涂地显示启动服务器失败,人类一败涂地进不去解决方法-人类跌落梦境手游进不去方法详解...
  8. handler原子锁_spring-boot-starter-current-limiting
  9. 过去的过去,未来的未来
  10. 心脏线绘制python_心脏线怎么画?