1)游戏图层设计:

public class WellcomeLayer extends CCLayer {
public WellcomeLayer() {
this.setIsTouchEnabled(true);
CCSprite background1 = CCSprite.sprite("background.jpg");
CCSprite background2 = CCSprite.sprite("background.jpg");
background1.setAnchorPoint(0, 0);
background1.setPosition(0, 0);
this.addChild(background1);
background2.setAnchorPoint(0, 0);
background2.setPosition(0, background1.getContentSize().height);
this.addChild(background2);
CCSprite logo = CCSprite.sprite("LOGO.png");
logo.setAnchorPoint(0, 0);
logo.setPosition((CCDirector.sharedDirector().winSize().width - logo.getContentSize().width)
/ 2 , CCDirector.sharedDirector().winSize().height/2);
this.addChild(logo);

}
游戏界面层
public class GameOverLayer extends CCLayer {
public GameOverLayer(int score) {
...

2)滚动背景设计

同一时候在图层放三张图片,垂直排列,而且每帧2个像素点向下移动,当第二张图片到原点时,反复循环

background1 = CCSprite.sprite("background.jpg");
background2 = CCSprite.sprite("background.jpg");
background3 = CCSprite.sprite("background.jpg");
  background3.setAnchorPoint(0, 0);
background2.setAnchorPoint(0, 0);
background1.setAnchorPoint(0, 0); this.addChild(background1);
this.addChild(background2);
this.addChild(background3);
  //初始化三张背景图
  
  //使用cocos2d的定时调度
  this.schedule("backgroundMove", 0.01f);
  
  /**
   * 背景移动
   * @param dalat
   */
  public void backgroundMove(float dalat) {
   background1.setPosition(0, background1.getPosition().y - 2);
   background2.setPosition(0, background1.getPosition().y +
  background1.getContentSize().height);
  background3.setPosition(0, background2.getPosition().y + background2.getContentSize().height);
   if(background2.getPosition().y == 0) {
   background1.setPosition(0, 0);
   }
  }

2)背景音乐:

  context = CCDirector.sharedDirector().getActivity();
  SoundEngine.sharedEngine().preloadEffect(context, R.raw.game_music);
  SoundEngine.sharedEngine().playSound(context, R.raw.game_music, true);

4)精灵设计与产生:

  /**
   * 发射子弹
   * @param dalat
   */
  public void shoot(float dalat) {
   CCSprite bullet = CCSprite.sprite("bullet1.png");
   bullet.setPosition(player.getPosition().x, player.getPosition().y +
  player.getContentSize().height);
   addChild(bullet);
   CCMoveBy move = CCMoveBy.action(5, CGPoint.ccp(0, winSize.getHeight() + 10));
   bullet.runAction(move);
   this.bulletList.add(bullet);
   }
  /**
   * 随机生成敌机
   @param dalat
  */
  public void addEnemy(float dalat) {
   CCSprite enemy = CCSprite.sprite("enemy1.png");
   enemy.setPosition(random.nextInt((int)winSize.getWidth()), winSize.getHeight());
   CGPoint p = CGPoint.ccp(0, 0 - winSize.getHeight() - 20);
   addChild(enemy);
   CCMoveBy move = CCMoveBy.action(20, p);
   enemy.runAction(move);
   this.enemyList.add(enemy);
  }

5)碰撞检測

  /**
   * 推断主机是否与敌机发生碰撞
   * @param dalat
   * @return
   */
   public void boom(float dalat) {
   for(int i = 0; i < enemyList.size(); i++) {
   CCSprite enemy = enemyList.get(i);
   if(CGRect.intersects(player.getBoundingBox(), enemy.getBoundingBox())){
   CCBlink blink = CCBlink.action(1, 3);
   CCHide hide = CCHide.action();
   this.enemyList.remove(i);
   CCSequence seq = CCSequence.actions(blink, hide);
   enemy.runAction(enemyDownSeq);
   player.runAction(seq);
   new Thread(){
   public void run() {
   try {
   Thread.sleep(1000);
   } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   }
   exitGame();
   }
   }.start();
   }
   if(enemy.getPosition().y < 0) {
   this.enemyList.remove(i);
   this.removeChild(enemy, true);
   }
   }
   }
  

界面:

源代码:https://github.com/wujiagan/plane-war

cocos2d_android开发简单游戏的更多相关文章

  1. JS开发HTML5游戏《神奇的六边形》(一)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  2. JS开发HTML5游戏《神奇的六边形》(三)

    近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...

  3. [置顶] 使用红孩儿工具箱完成基于Cocos2d-x的简单游戏动画界面

    [Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier 红孩儿Cocos2d-X学习园地QQ3群:205100149,47 ...

  4. 王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍

    在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌 ...

  5. 用Cocos2dx开发棋牌游戏的观点解析

    众所周知,目前棋牌游戏特别的火.很多游戏公司都想在这一块赚钱,可是却不知用什么软件比较好的去开发棋牌游戏,对此,我列出了两款比较靠谱的软件去开发棋牌游戏,希望对大家有帮助! 第一款软件是cocos2d ...

  6. C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例

    C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...

  7. C#开发Unity游戏教程之判断语句

    C#开发Unity游戏教程之判断语句 游戏执行路径的选择——判断 玩家在游戏时,无时无刻不在通过判断做出选择.例如,正是因为玩家做出的选择不同,才导致游戏朝着不同的剧情发展,因此一个玩家可以对一个游戏 ...

  8. C#开发Unity游戏教程之Unity中方法的参数

    C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别 ...

  9. C#开发Unity游戏教程之游戏对象的行为逻辑方法

    C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑——方法 方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要 ...

随机推荐

  1. HDU 3359 Kind of a Blur(高斯消元)

    题意: H * W (W,H <= 10) 的矩阵A的某个元素A[i][j],从它出发到其他点的曼哈顿距离小于等于D的所有值的和S[i][j]除上可达点的数目,构成了矩阵B.给定矩阵B,求矩阵A ...

  2. shell之sort

    转http://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html) sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟 ...

  3. yzoi2226最小步数的详细解法

    Description - 问题描述 在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”.有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字. ...

  4. 使用Raphael 画图(三) 事件 (javascript)

    这章展示事件例子. 下图是官方API的事件: 例子: var butt1 = paper.set(); var a1 = paper.circle(24.833, 26.917, 26.667).at ...

  5. javascript深入理解js闭包[转]

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  6. TatukGIS - GisDefs - CheckDir 函数

    函数名称  CheckDir 所在单元  GisDefs 函数原型  function CheckDir(const _path: String): Boolean;   函数说明 如果 _path ...

  7. 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试

    通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文件: 接下来就可以利用模型进行测试了.关于测试方法按照上篇教程还是选择bat文件,当然python. ...

  8. Unity3D中的Coroutine详解

    Unity中的coroutine是通过yield expression;来实现的.官方脚本中到处会看到这样的代码. 疑问: yield是什么? Coroutine是什么? unity的coroutin ...

  9. oracle 对象权限 系统权限 角色权限

    系统权限: 允许用户执行特定的数据库动作,如创建表.创建索引.连接实例等 对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列.执行存储过程等 select * from user_sys ...

  10. AVR单片机RC触摸

    RC电容触摸感应按键1:RC感应原理 RC采样原理就是通过测量感应极电容的微小变化,来感知人体对电容式感应器(按键.轮键或者滑条)的感应.电极电容(C)通过一个固定的电阻(R)周期性地充放电.(原文件 ...