Cocos2d-x游戏开发_战斗过程

1.Q:通过战斗算法得到的战斗过程怎么保存?

A:之前说过的protocol buf
是客户端和后台交互的媒介,所以也是使用protocolbuf的message来包装保存整个战斗过程的信息。

?





1

2

3

4

5

6

import "FlightMessage.proto";

import "TeamMessage.proto";

message BattleMsg{

    required TeamMsg team = 1;   //队伍的信息,用于初始化两边的队伍

    repeated FlightMsg flights = 2; //这个是一个FlightMsg集合,每个FlightMsg都保存了一次战斗的信息

}

?





1

2

3

4

5

import "HeroMessage.proto";

message TeamMsg{

    required int64 id = 1;

    repeated HeroMsg heroes = 2//一个TeamMsg也是由若干个HeroMsg组成,heroMsg主要是用来初始化Hero类,记录了一些如HP,MP,pos等基本属性。

}

?





1

2

3

4

5

6

7

8

9

10

11

12

13

import "HeroMessage.proto";

message FlightMsg{

    required int64 attacker = 1;    //攻击者的位置

    required int64 defender = 2;  //被打者的位置(也是攻击者需要移动到的位置)

    required bool isBaoji = 3;    //是否暴击

    required bool isBig = 4;     //是否大招 

    required bool isDidang = 5;   //是否抵挡

    required bool isShanbi = 6;    //是否闪避

    required int64 damage = 7;    //受到的伤害

    required HeroMsg attackerMsg = 8;  //攻击者攻击后的信息

    repeated HeroMsg defenderMsgs = 9;  //被打者被打后的信息

    

}

  

2.Q:怎么把战斗信息传输到客户端

 A:后台利用战斗算法把一个BattleMessage构建出来以后,就可以用protocolbuf传输,客户端也是直接构建成一个BattleMsg对象就可以了。

3.Q:客户端的到信息后,怎么显示战斗信息。

 A:客户端已经得到整个战斗信息了,要怎么展现因人而异,但是需要注意以下问题:

  1)应该先利用TeamMsg在栈内存中创建相应数目的Hero对象

  2)注意BattleMsg是在栈内存中分配空间的还是在堆中分配空间的(变量的生命周期问题),如果是在栈中分配的,得到的只是数据而已。

  3)得到一堆FlightMsg之后,如何让一个Hero打完再到另一个Hero打。

  我实现3)的思路是这样子的:

  ①利用filghtMsg的attacker得到攻击者对象(Hero*),并把攻击者的地址保存起来

  ②利用flightMsg的defender得到要移动到的位置(int)

  ③攻击者移动到指定位置作出攻击动作,攻击完之后把自身的攻完成设置成true

  ④利用update线程检测当前的attacker是否打完,如果打完的话,执行下一条flightMsg的信息(用队列会比较好)

时间: 2024-08-03 17:30:09

Cocos2d-x游戏开发_战斗过程的相关文章

Cocos2d-x游戏开发_战斗算法

我的战斗算法的核心代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 private void aHitb(HeroBean a,HeroBean b){         ///*自身状态(已经移到aHitBTeam那里)         //判断A能否出招或者受到伤害什么的

结对-开发贪吃蛇游戏-开发环境搭建过程

项目:贪吃蛇游戏开发 环境搭建: Mac下: 1)官网下载jkd1.8版本. 2)下载IDE--eclipse或Myeclipse win下: 1)官网下载JDK,找到符合自己电脑的版本,下载的本地 2)下载IDE--eclipse或Myeclipse 3)配置环境变量: i.计算机->属性->高级系统设置 ii.单击高级系统设置->环境变量在系统变量里面分别设置JAVA_HOME.CLASSPATH和Path iii.在系统变量里找变量名JAVA_HOME,如果没有就点击新建.输入变量

《结对-贪吃蛇游戏-开发环境搭建过程》

贪吃蛇开发环境搭建 Python和pygame的安装过程 成员0:2015035107074-孔令辉 成员1:2015035107067-张旭 1.去官网下载python和pygame.(需注意自己电脑是32位的还是64位的,我的是64位的,就下了个64位的) 2.安装pythone 和 pygame. 3.安装完成后,查看环境变量配置情况:计算机->属性->高级系统设置->环境变量->系统变量->Path. 4.在命令提示符中输入:python,验证是否安装成功,若提示是无

HTML5游戏开发_是男人就下100层

项目流程 市场调研(可行性分析)--> 可行性报告书  需求分析师.客户经理 需求分析--> 需求说明书  项目经理.需求分析师 概要设计--> 概要设计说明书(ER图, UML)  项目经理.项目组长 详细设计--> 详细设计说明书(流程图) 数据库建好.项目周期表(甘特图) office project visio 项目组长.开发人员 编码 --> 测试(单元测试) 提交svn 测试用例  开发人员 测试 --> 集成测试.黑白盒测试.冒烟测试  测试人员 --&g

团队-象棋游戏-开发环境搭建过程

开发工具: HBuilder,Google浏览器 搭建过程: HBuilder由之前实训时夏老师提供在酷课网上的压缩包(或在http://www.dcloud.io/中下载).下载后解压注册即可使用 Google浏览器,可以在百度中搜索Google浏览器

Cocos2d-x游戏开发_客户端与服务器的交互

客户端Cocos2dx(C++) 服务器Mina(Java) 客户端主要使用了Linux的BSD Socket接口进行socket的数据传输连接 服务器直接用了Mina框架来接受socket 具体参考的博客: 1.[C/S通信交互之Socket篇]Cocos2dx(Client)使用BSD Socket与Mina(Server)手机网游通信框架! ----李华明Himi http://blog.csdn.net/xiaominghimi/article/details/7603123 本站文章均

结对-五子棋游戏-开发环境搭建过程

项目名称:五子棋游戏 参加项目人员:李一轩.程吉 环境搭建:下载HBuilder软件,下载Google浏览器:依次安装即可使用

安卓游戏开发_基础环境获取代码

public class PinBall extends Activity{ private int tableHeight; private int tableWidth; Random random = new Random(); //挡板大小和坐标 private final int racket_width = 70; private final int racket_height = 20; private int racketY; private int racketX; //球体大

lua 游戏开发_技能定义字段

-- 技能分组 eSG_Attack = 0; -- 普攻 eSG_Skill = 1; -- 技能 eSG_TriSkill = 2; -- 触发技能 -- 技能效果类型 eSE_Damage = 1; -- 伤害 eSE_Buff = 2; -- 祝福 eSE_DBuff = 3; -- 诅咒 -- 技能类型 eST_Attack = 1; -- 主动 eST_Tri = 2; -- 触发 eST_Passive = 3; -- 被动 -- 伤害类型 eSD_ATN = 1; -- 物理伤害