如今来实现敌机类

敌机和我方飞机相似,具有生命值、能够发射子弹。而且有自己的运动轨迹。事实上能够为它们设计一个共同的基类,这样能够更方便扩展。

不同的敌机,应设置不同的标识、属性

// 敌机生命值
const int ENEMY1_MAXLIFE = 1;
const int ENEMY2_MAXLIFE = 2;
const int ENEMY3_MAXLIFE = 5;
const int ENEMY4_MAXLIFE = 10;// 敌机分数
const int ENEMY1_SCORE = 1;
const int ENEMY2_SCORE = 6;
const int ENEMY3_SCORE = 20;
const int ENEMY4_SCORE = 50;
// 敌机类型
enum EnemyType
{Enemy1 = 1,Enemy2,Enemy3,Enemy4,
};

头文件里的主要函数

void setEnemyByType(EnemyType enType);
Sprite* getSprite();int getLife();
void loseLife();
Rect getBoundingBox();

函数的实现

void Enemy::setEnemyByType(EnemyType enType)
{switch (enType){case Enemy1:pEnemySprite = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy1.png"));nLife = ENEMY1_MAXLIFE;break;case Enemy2:pEnemySprite = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy2.png"));nLife = ENEMY2_MAXLIFE;break;case Enemy3:pEnemySprite = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy3.png"));nLife = ENEMY3_MAXLIFE;break;case Enemy4:pEnemySprite = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy4.png"));nLife = ENEMY4_MAXLIFE;break;default:return;break;}this->addChild(pEnemySprite);Size winSize = Director::getInstance()->getWinSize();Size enemySize = pEnemySprite->getContentSize();int minX = enemySize.width / 2;int maxX = winSize.width - enemySize.width / 2;int rangeX = maxX - minX;int actualX = (rand() % rangeX) + minX;// 设置敌机Node方位 Node包括Spritethis->setPosition(Point(actualX, winSize.height - enemySize.height / 2));
}bool Enemy::init()
{bool pRet = true;if (!Node::init()){pRet = false;}return pRet;
}Sprite* Enemy::getSprite()
{return pEnemySprite;
}int Enemy::getLife()
{return nLife;
}void Enemy::loseLife()
{--nLife;
}Rect Enemy::getBoundingBox()
{Rect rect = pEnemySprite->boundingBox();Point pos = this->convertToWorldSpace(rect.origin);Rect enemyRect(pos.x, pos.y, rect.size.width, rect.size.height);return enemyRect;
}

依据敌机类型,绑定对应的图片和生命值,对于我方飞机。假设想依据生命值来设定不同的飞机样式,也能够通过此类方法。

【cocos2d-x 3.7 飞机大战】 决战南海I (三) 敌机实现相关推荐

  1. Cocos2d-x 3.2 lua飞机大战开发实例(三)道具的掉落,碰撞检测,声音,分数,爆炸效果,完善游戏的功能细节

           Cocos2d-X 3.2  lua语言飞机大战开发实例(三) 7.添加声音,更新分数,添加爆炸效果,道具的掉落.道具的碰撞检测等完善游戏功能 爆炸的效果添加 首先需要在GameData ...

  2. 白鹭引擎开发飞机大战详尽教程(三创建飞机)

    简介    本教程是以飞机大战小游戏作为白鹭的入门,详细的按笔者的开发思路,一步步讲解游戏的开发步骤,内容基本涵盖了白鹭引擎提供的能力,包括界面可视化开发.事件派发.粒子播放(爆炸效果).龙骨帧动画. ...

  3. java 中飞机大战碰撞检测,飞机大战开发04子弹与敌机的碰撞检测

    先是敌机与玩家子弹的碰撞检测: 代码: GameLayer.h void GameLayer::update(float dt) { for (int i = 0 ;i < m_pEnermyV ...

  4. cocos2d-x 3.2 |飞机大战:技能

    cocos2d-x 3.2|飞机大战:技能 前情提要:飞机大战第四篇 实现敌机掉落技能 如下: 新建类----->Tool 第一步:技能类 Tool.h #include <stdio.h ...

  5. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)

    微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...

  6. 白鹭引擎开发飞机大战详尽教程(四控制飞机移动)

    简介    本教程是以飞机大战小游戏作为白鹭的入门,详细的按笔者的开发思路,一步步讲解游戏的开发步骤,内容基本涵盖了白鹭引擎提供的能力,包括界面可视化开发.事件派发.粒子播放(爆炸效果).龙骨帧动画. ...

  7. 使用小程序制作一个飞机大战小游戏

    此文主要基于微信小程序制作一个飞机大战小游戏,上手即用,操作简单. 一.创建小程序 二.页面实现 三.代码块 一.创建小程序 访问微信公众平台,点击账号注册. 选择小程序,并在表单填写所需的各项信息进 ...

  8. 用pycharm写飞机大战

    用pycharm写飞机大战 以下是源代码 设置敌机图片库常量元组 创建所有显示的图形父类Model 背景类 玩家类 敌机类 子弹类 爆炸效果类 设置测试类入口操作 设置敌机图片库常量元组 创建所有显示 ...

  9. 第094讲: Pygame:飞机大战5 | 学习记录(小甲鱼零基础入门学习Python)

    我们接下来在游戏界面的左上角设置一个得分显示区域,实时显示玩家得分,我们的规则如下: 击落小中大敌机分别可以获得1000,6000,10000分. 我们现在main 函数中添加一个 score 变量统 ...

  10. cocos2dx实现经典飞机大战

    游戏开始层 #ifndef __LayerGameStart_H__ #define __LayerGameStart_H__ #include "cocos2d.h" USING ...

最新文章

  1. 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路
  2. Error: Aesthetics must be either length 1 or the same as the data (5): fill
  3. rdd数据存内存 数据量_spark系列:spark core 数据交互技术点(数据模型)
  4. SDK Build Tools revision (19.0.3) is too low for project Minimum required is 19.1.0
  5. HTML表单提交规则
  6. [react] 可以使用TypeScript写React应用吗?怎么操作?
  7. html风车相册代码,Css Html 大风车(示例代码)
  8. erlang的gb_trees源码解析
  9. linux挂载VMFS硬盘,linux – ESX Guest中的硬件磁盘错误,在vmfs支持的驱动器上……这怎么可能?...
  10. 深度学习-吴恩达-笔记-7-超参数调试、Batch正则化和程序框架
  11. 推荐21个顶级的Vue UI库!
  12. Pycharm 转化ui文件为py文件:报错Error in input file: not well-formed (invalid token): line 1, column 1
  13. TwinCAT3安装教程-EtherCAT学习
  14. python常见函数抽样_Python中从列表中随机抽样函数的语法
  15. [latex]参考文献格式
  16. 【React】React全家桶(八)React Router 6
  17. mysql 只读_MySQL设置只读模式
  18. 【机器学习】五种超参数优化技巧
  19. 漏洞工具包2015年态势回顾:规模与分布
  20. Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题。

热门文章

  1. 数组:正整数数组分成2组使其和的差的绝对值最小
  2. 二十三、常用的标签:见源码
  3. Adaboost算法结合Haar-like特征
  4. cell的各种使用和赋值 总结
  5. oracle 自增加列的实现
  6. 动画演示 Delphi 2007 IDE 功能[6] - 快速查看 Delphi 所有的核心数据类型
  7. iOS :APP 提交描述注意事项
  8. kafka consumer 的配置(五)
  9. Centos 解压软件
  10. 对第三组博客的检查情况