【cocos2d-x 3.7 飞机大战】 决战南海I (三) 敌机实现
如今来实现敌机类
敌机和我方飞机相似,具有生命值、能够发射子弹。而且有自己的运动轨迹。事实上能够为它们设计一个共同的基类,这样能够更方便扩展。
不同的敌机,应设置不同的标识、属性
// 敌机生命值
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包括Sprite
this->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 (三) 敌机实现的更多相关文章
- 微信小游戏 demo 飞机大战 代码分析 (三)(spirit.js, animation.js)
微信小游戏 demo 飞机大战 代码分析(三)(spirit.js, animation.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码 ...
- 【cocos2d-x 3.7 飞机大战】 决战南海I (四) 敌机管理
敌方飞机应该不定时的出现,有自己的生命周期.运动轨迹.这个类用来管理敌机的产生.移动.爆炸.销毁等. 敌机管理类主要函数例如以下 //绑定控制器(更新分数) void bindController(C ...
- 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)
微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...
- 微信小游戏 demo 飞机大战 代码分析 (二)(databus.js)
微信小游戏 demo 飞机大战 代码分析(二)(databus.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码分析(三)(spirit. ...
- 微信小游戏 demo 飞机大战 代码分析 (一)(game.js, main.js)
微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码分析(二)(databus.js) 微信小游戏 demo 飞机大战 代码分析(三)(spirit. ...
- cocos2dx实现经典飞机大战
游戏开始层 #ifndef __LayerGameStart_H__ #define __LayerGameStart_H__ #include "cocos2d.h" USING ...
- 【一】仿微信飞机大战cocos2d-x3.0rc1
參考 [偶尔e网事] 的 [cocos2d-x入门实战]微信飞机大战 cocos2dx 2.0版本号,偶尔e网事他写的很具体,面面俱到,大家很有必要看下.能够通过以下链接跳转: cocos2d-x入 ...
- 微信5.0 Android版飞机大战破解无敌模式手记
微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 ...
- 基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)
最近接触过几个版本的cocos2dx,决定每个大变动的版本都尝试一下.本实例模仿微信5.0版本中的飞机大战游戏,如图: 一.工具 1.素材:飞机大战的素材(图片.声音等)来自于网络 2.引擎:coco ...
随机推荐
- createdb - 创建一个新的 PostgreSQL 数据库
SYNOPSIS createdb [ option...] [ dbname] [ description] DESCRIPTION 描述 createdb 创建一个新的 PostgreSQL 数据 ...
- git Please tell me who you are解决方法
在git创建项目时出现,是因为在创建git文件夹的时候信息不完善导致的下图是正确在git创建项目时出现,是因为在创建git文件夹的时候信息不完善导致的下图是正确1.git init2.git conf ...
- PHP Web开发入门流程
在学习WEB开发前,至少有一个对C或者计算机编程任何一种语言的基本学习,这会对你以后的开发有一定的启蒙作用. 一.Web开发入门 推荐学习网址: http://www.w3school.com.cn/ ...
- ios中摄像头/相册获取图片压缩图片上传服务器方法总结
本文章介绍了关于ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结,有需要了解的同学可以参考一下下. 这几天在搞iphone上面一个应用的开发,里面有需要摄像头/相册编程和图片上传的问 ...
- JS授权
(function(){ var origin_url = location.href; var oauth_url = 'https://vx.mcilife.com/weixin/api/oaut ...
- POJ 1664 放苹果( 递推关系 )
链接:传送门 思路:苹果m个,盘子n个.假设 f ( m , n ) 代表 m 个苹果,n个盘子有 f ( m , n ) 种放法. 根据 n 和 m 的关系可以进一步分析: 特殊的 n = 1 || ...
- 向数据库添加中文数据乱码的解决办法(本文使用spring-jdbcTemplate)
由于编码字符集的不同通常容易导致数据库中文乱码问题,如显示问号. 往往由以下三个方面所造成的 (一):数据库端字符集设置 1.安装mysql时,会有一个数据库编码设置,将其设置为utf-8 2.先设置 ...
- python多线程和多进程(二)
---恢复内容开始--- 一.多进程 1.multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似. impor ...
- buf.fill()
buf.fill(value[, offset[, end]][, encoding]) value {String} | {Buffer} | {Number} offset {Number} 默认 ...
- ubuntu 安装 navicat
下载navicat解压到opt目录 创建桌面快捷方式sudo vim /usr/share/applications/navicat.desktop [Desktop Entry] Encoding= ...