林炳文Evankaka原创作品。转载请注明出处http://www.voidcn.com/tag/http://blog.csdn.net/evankaka 本文将实现用单例模式实现一个英雄飞机类的设计,单例模式是游戏开发中最常用到的一种设计模式,原理也比较简单,仔细研究下就可以掌握好。 来看看效果:
飞机发射子弹: 弹幕,是雷电游戏的精华。这就需要对子弹的运动轨迹进行控制。 先做一个最简单的子弹发射,后面再添加各种弹幕(实际上主要是研究弹幕) 说是最简单,其实也是最普通的子弹发射,产生一个颗子弹移动就OK了。 方法:做一个子弹发射的计时器,产生子弹,子弹做MoveBy动作就OK了。 代码: GameLayer.cpp void GameLayer::fireSchedule(float dt)
都好几天没写博客了,主要是这几天真的没做什么,事儿多,也懒了,发现自己真的是逻辑思维能力需要锻炼,而且要认真锻炼 前几天做了个飞机大战,原版的哦,还有声音,各位可以拿走跑起来玩耍一把,个人把难度调的还是蛮高的,哈哈、 下载地址: 点我下载飞机大战源码, 这几天继续做象棋,发现真的是关系坐标,一关系多了,自己就脑袋大,所以说要锻炼逻辑思维能力啊,加油吧, 有些困难是要自己面对的
上周,我做了一个基于 cocos2d-x 的飞机大战的游戏,因为我刚学cocos2d-x没多久,所以这个飞机大战很多都是看着别人的教程,再加上自己的一些想法,来做的。 下面我想说一说我的思路。 飞机大战有三个场景: LayerGameStart(游戏开始) LayerGameMain(游戏进行中) LayerGameOver(游戏结束) 一、游戏开始场景(LayerGameStart) 其中,游戏
第一节:环境搭建 飞机大战游戏是一个只要懂c++都能开发的一个简单游戏,本次实习我们用的环境如下: 基于python2.7.8的cocos2d-x-3.0,新建的项目需要vs2012及以上版本才能运行,如果本机已经安装了python3.0以上的或者其他版本的也请重新装一次,会出问题,2.7最稳定。这里我只讲python与cocos2d-x的安装环境,vs自行解决。 环境压缩包链接:链接:http:
第二节:添加无限移动背景与英雄飞机 一、新建文件 删除HelloWorldScene.h与HelloWorldScene.cpp文件,新建FlaPlane类如下,cpp文件同样的创建方法,这里注意FlyPlane的位置一定要在classes文件夹下,名字随意,最好和项目名保持一致。 二、修改AppDelegate.cpp AppDelegate.cpp中会有两处红线错误,第一个地方是头文件,改
第三节:为英雄添加飞行帧动作并控制飞机移动 一、为飞机添加飞行动画 为飞机添加飞行动画十分简单,只需要在FlyPlane::init()函数中创建一个动画对象,在里面添加两张英雄图并相互切换就可以了。 添加代码如下: //为英雄添加飞行动作,动作由动画组成,所以得到动作对象前,需要先得到动画对象
//一、创建动画对象
//1.1通过create得到动画对象
auto animation
第四节:添加英雄子弹 实现这个功能需要如下考虑: 1、每隔一小段时间就创建一个子弹在英雄机顶,并将其加入一个sprite*的容器中,并添加在flyplane层中显示出来。 2、创建出来的子弹每帧刷新都增加Y坐标让其看起来向上移动。 3、子弹出界,回收清除。 (打中敌人也要从容器中和flyplane对象中清除,以后再考虑)。 综合这几点修改FlyPlane.h 和 FlyPlane.cpp文件 一
这节完成了许多的功能: 1、添加小飞机、中等飞机、大飞机。 2、每种飞机的移动速度和血量不同。 3、飞机被子弹打击效果。 4、飞机被摧毁效果。 cocos2d提供的Sprite类不足以提供以上功能,所以我们需要新建一个Enemy类重写Sprite。 Enemy.h代码段 #ifndef __ENEMY_H__
#define __ENEMY_H__
#include "cocos2d.h"
/
好久没写过博客了,现在把刚做的游戏发上来吧,以后要注意更新博客啦~! 游戏截图 游戏整体结构图 第一步 在 AppDelegate 中设定游戏界面大小以及缩放方式 cocos2d-x3.7新生成的项目中,AppDelegate有默认的界面大小以及缩放方式,这里,我对其作出一些更改,使其适应本项目 Size frameSize = glview->getFrameSize();
在上一篇中,我们实现了游戏的开始界面,接下来要实现游戏的主界面,主界面包含地图、我方飞机、敌机等 先来实现我方飞机 我方飞机具有哪些属性呢? 飞机要具有生命值、要有动画效果(尾部喷气),飞机不能够飞出边界,所以要进行边界检测,当飞机生命值为0时,飞机会爆炸,然后被移除。 .h文件 //飞机动画
Animate* planeFly();
//边界检测
void
现在来实现敌机类 敌机和我方飞机相似,具有生命值、能够发射子弹,并且有自己的运动轨迹。其实可以为它们设计一个共同的基类,这样可以更方便扩展。 不同的敌机,应设置不同的标识、属性 // 敌机生命值
const int ENEMY1_MAXLIFE = 1;
const int ENEMY2_MAXLIFE = 2;
const int ENEMY3_MAXLIFE =
敌方飞机应该不定时的出现,有自己的生命周期、运动轨迹。这个类用来管理敌机的产生、移动、爆炸、销毁等。 敌机管理类主要函数如下 //绑定控制器(更新分数)
void bindController(Controller* controller);
//根据分数决定添加敌机速度
void addSpeed(float dt);
// 添加敌机1
void addEnemy
我方飞机的子弹和敌机子弹都在这个类中产生。将子弹专门设计成一个类,主要是为了方便扩展。之后如果想更换我方飞机子弹或者是敌机子弹,都会很方便。 类的功能很直观,就是添加子弹、移除子弹 void bindEnemyManager(EnemyManager* enemyManager);
void BeginBulletShoot(float dt = 0.0f); // 开启子弹射
玩家要保存的数据可能很多,这里,我们只保存分数 这个类的成员变量和函数如下 //用户数据操作的成员变量
UserDefault * m_userDefault;
//要用到这种特殊的容器了。。
ValueVector m_vector;
//记录玩家的当前分数
CC_SYNTHESIZE(int, m_score, Score);
void save(); 我们使
控制器中的功能并不多,主要是下面这些 //对玩家分数的操作
CC_SYNTHESIZE_READONLY(SaveData *, m_saveData, SaveData);
void update(float tm);
//游戏暂停与恢复
void menuPauseCallback(cocos2d::Ref* pSender);
//声音控制
void menu
采用双层背景,这样效果更好 .h class BackgroundMove : public Layer
{
public:
BackgroundMove();
~BackgroundMove();
virtual bool init();
virtual void onEnterTransitionDidFinish(); //等进入场景之后在进行背景的移动
CREAT
之前在一个闯关游戏中第一次接触飘字效果,因为那个游戏没有发教程,所以在这里介绍下飘字效果 class FlowWord :public Node
{
public:
FlowWord();
~FlowWord();
//创建和初始化 飘字
static FlowWord* create();
bool init();
//显示飘字
void showFlowWor
主场景要包含其他类的头文件 #include "cocos2d.h"
#include "MyPlane.h"
#include "Bullet.h"
#include "EnemyManager.h"
#include "Controller.h"
#include "BackgroundMove.h"
#include "FlowWord.h" 在这个游戏中,我将各种碰撞检测也
这个场景作为弹出场景,主要介绍下游戏。。。还有自己的联系方式(*^__^*) …… 主要使用文本,就一个返回按键的响应函数 //返回按钮
void back(EventKeyboard::KeyCode keyCode, Event* pEvent); 同样要记得在析构函数中移除监听 AboutGame::~AboutGame()
{
_eventDispatcher->remo