飞机大战之一:让背景先动起来
参考blog : http://blog.csdn.net/column/details/jackyairplane.html
环境 xp + cocos2d-x-2.2.0 + vs2010
源码下载地址:点击打开链接
关于svn的简单使用:点击打开链接
cocos2d应用的大致启动流程
main函数最后一句:CCApplication::sharedApplication()->run()------>>pDirector->runWithScene(pScene);(AppDelegate.cpp)
就启动了应用程序的场景。
接着就是各个精灵在场景中表演动作以及与用户的互动表演,为了方便管理控制对精灵的处理往往采用分层来分别管理。
例如在本游戏中就有背景层(GameLayer)主角飞机层(PlaneLayer)子弹层(BulletLayer)等。
1.新建项目
在cocos2d源码中有个目录\tools\project-creator\
我在这里加了个project-creator.bat文件
里面内容如下:
@echo off
set /p projectName=请输入项目名称:
if "%projectName%"=="" goto inputError
set /p packageName=请输入包标示名:
if "%packageName%"=="" goto inputError
create_project.py -project %projectName% -package %packageName% -language cpp
pause
exit
:inputError
@echo 项目名称或者包标示名不能为空!
pause
双击运行
回车--回车
在cocos2d源码目录projects中就建好了项目AirPlane12
用vs2010打开编译运行
右上角怎么是HelloCpp?我要改为AirPlane。
将main.cpp下的改为eglView->setViewName("AirPlane");
编译运行一下,怎样是不是变了。
顺便提示哈,如果要改分辨率就改其下一句
eglView->setFrameSize(480, 320);
将里面的值改为你所需要的。
2.增加此游戏场景(GameScene)
// GameScene.h#ifndef __GAMESCENE_H__
#define __GAMESCENE_H__#include "cocos2d.h"
#include "GameLayer.h"USING_NS_CC;class GameScene : public CCScene
{
public:GameScene(void);~GameScene(void);CREATE_FUNC(GameScene);virtual bool init();GameLayer *_gameLayer;
};#endif
// GameScene.cpp#include "GameScene.h"GameScene::GameScene(void)
{_gameLayer=NULL;
}GameScene::~GameScene(void)
{}bool GameScene::init()
{bool bRet=false;do{CC_BREAK_IF(!CCScene::init());_gameLayer=GameLayer::create();CC_BREAK_IF(!_gameLayer);this->addChild(_gameLayer);bRet=true;}while(0);return bRet;
}
3. 背景类(GameLayer)的实现
// GameLayer.h#ifndef __GAMELAYER_H__
#define __GAMELAYER_H__#include "cocos2d.h"USING_NS_CC;class GameLayer :public CCLayer
{
public:GameLayer(void);~GameLayer(void);CREATE_FUNC(GameLayer);virtual bool init();void backgroundMove(float dt);
private:CCSprite* background1;CCSprite* background2;
};
#endif
// GameLayer.cpp#include "GameLayer.h"GameLayer::GameLayer(void)
{background1=NULL;background2=NULL;
}
GameLayer::~GameLayer(void)
{
}
bool GameLayer::init()
{bool bRet = false;do{CC_BREAK_IF(!CCLayer::init());CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("ui/shoot_background.plist");background1=CCSprite::createWithSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("background.png"));background1->setAnchorPoint(ccp(0,0));background1->setPosition(ccp(0,0));this->addChild(background1);background2=CCSprite::createWithSpriteFrame(CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("background.png"));background2->setAnchorPoint(ccp(0,0)); background2->setPosition(ccp(0,background2->getContentSize().height-2));this->addChild(background2);this->schedule(schedule_selector(GameLayer::backgroundMove),0.01f);bRet=true;}while(0);return bRet;
} void GameLayer::backgroundMove(float dt)
{background1->setPositionY(background1->getPositionY()-2);background2->setPositionY(background1->getPositionY()+background1->getContentSize().height-2);if (background2->getPositionY()==0)background1->setPositionY(0);
}
4.修改AppDelegate.cpp文件
增加头文件 #include "GameScene.h"
将 CCScene *pScene = HelloWorld::scene(); 改为 CCScene *pScene = GameScene::create();
最后编译运行得到如下截图,背景动起来了。
飞机大战之一:让背景先动起来相关推荐
- 飞机大战之-添加背景
之前我们已经生成了一个空白的窗口,接下来我们要在这个窗口上添加背景. 我们新建一个MyPanel的类用来单独设置面板. MyPanel是继承于JPanel的一个子类.导入所需的包. package v ...
- pygame为游戏添加背景_用 Python 制作飞机大战小游戏
这这次用Python中的pygame模块来完成一个飞机大战的小游戏:基本思路是通过方向键来控制飞机的左右移动射击飞船.先来看下最后的效果为了新手也能完成,本文记录了编写的全部流程,也就是每次修改的代码 ...
- HTML5游戏开发(四):飞机大战之显示场景和元素
<HTML5游戏开发>系列文章的目的有:一.以最小的成本去入门egret小项目开发,官方的教程一直都是面向中重型:二.egret可以非常轻量:三.egret相比PIXI.js和sprite ...
- 飞机大战小游戏(超详细)
偷学Python之最后的项目二:飞机大战小游戏(超详细) 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志.--苏轼 甜甜先说 这次用Python中的pygame模块来完成一个飞机大战的小游戏:基本思 ...
- 手把手教你使用Pygame制作飞机大战小游戏,4万字超详细讲解!
点击上方"早起Python",关注并"星标" 每日接收原创Python干货! 大家好,偷学Python系列是由小甜同学从初学者的角度学习Python的笔记,其特 ...
- Python3+pygame实现有趣好玩的飞机大战游戏(附源码及素材)
版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 目录 一.开发环境 二.功能模块 三.游戏效果 四.完整项目下载 五.作者Info 一.开发环境 开发环境 :Windows10 Python3.6 ...
- c++课程设计:飞机大战(图形化界面)
飞机大战.cpp #include <iostream> #include <graphics.h> #include <time.h> #include < ...
- pygame 飞机大战飞机、BOSS信息的显示
目标,显示英雄飞机的得分,生命值,BOSS机的动态生命条 战斗界面中,信息数据是必不可少的,一般都包括得分值,当遇到BOSS时,还会显示BOSS的动态生命条,还有其他的飞机数量,炸弹数量等.不管生命信 ...
- android飞机大战功能,安卓飞机大战(二) SurfaceView实现自制背景
用SurfaceView写一个自制的背景图,并且可以移动,加上安卓飞机大战(一)中的BackgroundManager类,可以直接使用 GameView代码: public class GameVie ...
- Java Swing 经典小游戏《飞机大战》———— (一)获取素材,创建窗口,添加滚动背景,双缓冲
(一)最终效果 1.窗口 2.项目框架 (二)效果实现 1.获取素材 获取步骤省略,大家可自行到我的资源获取,放置在src目录下 2. 创建窗口 WinGame.java import java.aw ...
最新文章
- sql 执行顺序_10个简单步骤,完全理解SQL
- 网络操作系统P12页答案
- python init方法做了什么_Python类方法、__new__方法和__init__方法分别是什么
- mysql 参数配置优化
- 常用Linux网络/内存/磁盘分析工具
- oracle 插入n字母,Nhibernate在oracle批量插入失败,求解?
- 计算机打印机节支措施,“节支降耗,从我做起 ”倡导篇 ——节约纸张
- Java Session 会话技术
- Mac OS high Sierra 10.13.6 安装cuda
- GPU跑TensorFlow的各种显卡下的电脑配置(1080ti)
- IP地址、子网掩码、网关
- 【Pranet】论文及代码解读(ResNet部分)——jialiang nie
- 苹果Mac系统虚拟打印机CAD输出PDF文档软件—pdfwriter
- 文件加密都有哪些方法?
- 【java毕业设计】基于java+BS的QQ屏幕截图工具设计与实现(毕业论文+程序源码)——屏幕截图工具
- 桌面虚拟化VDesk 部署之一 导入VDesk服务器
- c语言函数申请内存,c中动态内存申请的函数
- 软件与中国古代史:政界往事(中)
- 【元胞自动机】保守策略元胞自动机三车道(开放辅路,软件园影响)交通流模型【含Matlab源码 1295期】
- 测试nfc功能软件,一般app测试的最佳方法
热门文章
- 服务器2003蓝屏A5修复,win2003文件服务器蓝屏修复全过程分享第2/2页
- 计算机打印机能不能取消正在,删除HP打印机驱动程序. 打印机驱动程序正在使用中,无法删除...
- 2018noip模拟 烷基
- 日本口音英语发音规则
- AngularJS中ngRouter和uiRouter的区别
- python中多行注释可以嵌套单行注释吗_Python单行注释与多行注释
- jQuery-源码阅读,JavaScript原生继承方式与jQuery中的继承
- 微信小程序学习3(wxss)
- 智慧班级管理系统 java
- 如何登入MySQL数据库