1)游戏图层设计:

  1. public class WellcomeLayer extends CCLayer {
  2. public WellcomeLayer() {
  3. this.setIsTouchEnabled(true);
  4. CCSprite background1 = CCSprite.sprite("background.jpg");
  5. CCSprite background2 = CCSprite.sprite("background.jpg");
  6. background1.setAnchorPoint(0, 0);
  7. background1.setPosition(0, 0);
  8. this.addChild(background1);
  9. background2.setAnchorPoint(0, 0);
  10. background2.setPosition(0, background1.getContentSize().height);
  11. this.addChild(background2);
  12. CCSprite logo = CCSprite.sprite("LOGO.png");
  13. logo.setAnchorPoint(0, 0);
  14. logo.setPosition((CCDirector.sharedDirector().winSize().width - logo.getContentSize().width)
  15. / 2 , CCDirector.sharedDirector().winSize().height/2);
  16. this.addChild(logo);

  17. }
  18. 游戏界面层
  19. public class GameOverLayer extends CCLayer {
  20. public GameOverLayer(int score) {
  21. ...

2)滚动背景设计

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

  1. background1 = CCSprite.sprite("background.jpg");
  2. background2 = CCSprite.sprite("background.jpg");
  3. background3 = CCSprite.sprite("background.jpg");
  4.   background3.setAnchorPoint(0, 0);
  5. background2.setAnchorPoint(0, 0);
  6. background1.setAnchorPoint(0, 0);
  7.  
  8. this.addChild(background1);
  9. this.addChild(background2);
  10. this.addChild(background3);
  11.   //初始化三张背景图
  12.   
  13.   //使用cocos2d的定时调度
  14.   this.schedule("backgroundMove", 0.01f);
  15.   
  16.   /**
  17.    * 背景移动
  18.    * @param dalat
  19.    */
  20.   public void backgroundMove(float dalat) {
  21.    background1.setPosition(0, background1.getPosition().y - 2);
  22.    background2.setPosition(0, background1.getPosition().y +
  23.   background1.getContentSize().height);
  24.   background3.setPosition(0, background2.getPosition().y + background2.getContentSize().height);
  25.    if(background2.getPosition().y == 0) {
  26.    background1.setPosition(0, 0);
  27.    }
  28.   }

2)背景音乐:

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

4)精灵设计与产生:

  1.   /**
  2.    * 发射子弹
  3.    * @param dalat
  4.    */
  5.   public void shoot(float dalat) {
  6.    CCSprite bullet = CCSprite.sprite("bullet1.png");
  7.    bullet.setPosition(player.getPosition().x, player.getPosition().y +
  8.   player.getContentSize().height);
  9.    addChild(bullet);
  10.    CCMoveBy move = CCMoveBy.action(5, CGPoint.ccp(0, winSize.getHeight() + 10));
  11.    bullet.runAction(move);
  12.    this.bulletList.add(bullet);
  13.    }
  14.   /**
  15.    * 随机生成敌机
  16.    @param dalat
  17.   */
  18.   public void addEnemy(float dalat) {
  19.    CCSprite enemy = CCSprite.sprite("enemy1.png");
  20.    enemy.setPosition(random.nextInt((int)winSize.getWidth()), winSize.getHeight());
  21.    CGPoint p = CGPoint.ccp(0, 0 - winSize.getHeight() - 20);
  22.    addChild(enemy);
  23.    CCMoveBy move = CCMoveBy.action(20, p);
  24.    enemy.runAction(move);
  25.    this.enemyList.add(enemy);
  26.   }

5)碰撞检測

  1.   /**
  2.    * 推断主机是否与敌机发生碰撞
  3.    * @param dalat
  4.    * @return
  5.    */
  6.    public void boom(float dalat) {
  7.    for(int i = 0; i < enemyList.size(); i++) {
  8.    CCSprite enemy = enemyList.get(i);
  9.    if(CGRect.intersects(player.getBoundingBox(), enemy.getBoundingBox())){
  10.    CCBlink blink = CCBlink.action(1, 3);
  11.    CCHide hide = CCHide.action();
  12.    this.enemyList.remove(i);
  13.    CCSequence seq = CCSequence.actions(blink, hide);
  14.    enemy.runAction(enemyDownSeq);
  15.    player.runAction(seq);
  16.    new Thread(){
  17.    public void run() {
  18.    try {
  19.    Thread.sleep(1000);
  20.    } catch (InterruptedException e) {
  21.    // TODO Auto-generated catch block
  22.    e.printStackTrace();
  23.    }
  24.    exitGame();
  25.    }
  26.    }.start();
  27.    }
  28.    if(enemy.getPosition().y < 0) {
  29.    this.enemyList.remove(i);
  30.    this.removeChild(enemy, true);
  31.    }
  32.    }
  33.    }
  34.   

界面:

源代码: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. apache rewrite .htaccess 站点内容重定向实例

    <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{REQUEST_FILENA ...

  2. C++例题2:汉诺塔问题

    #include<iostream>#include<stdlib.h>using namespace std;void Hanoi(int n,char A,char B,c ...

  3. [转]Aggregate tasks i Sharepoint 2013

    from http://sharepoint247.com/mysite/aggregate-tasks-i-sharepoint-2013/ Aggregate tasks i Sharepoint ...

  4. Jenkins安装入门

    这是一次兴奋之旅哈..说不定用得着呢~~~:) 嘿嘿.. 安装很简单,JDK,MAVEN(如果),YUM或RPM包安装JENKINS(因为好像YUM安装好慢,不如RPM下载安装) 参考URL: htt ...

  5. tomcat服务器报Server at localhost was unable to start within 45 seconds的问题

    今天在同一个tomcat服务器下部署了2个不同的应用程序,然后启动时报错:Server at localhost was unable to start within 45 seconds.If th ...

  6. MySQL表损坏预防与修复

    1.       表损坏的原因分析 以下原因是导致mysql 表毁坏的常见原因: 1. 服务器突然断电导致数据文件损坏. 2. 强制关机,没有先关闭mysql 服务. 3. mysqld 进程在写表时 ...

  7. C参数计算

    C‘计算参数时,从右向左压栈的 int a[]={1,3,4}; int * ptr=a; pirntf("%d,%d\n",*ptr,*(++ptr)); 输出都是3:

  8. 【ZOJ】3430 Detect the Virus

    动态建树MLE.模仿别人的代码模板各种原因wa后,终于AC. #include <iostream> #include <cstdio> #include <cstrin ...

  9. VS2010中fatal error LNK1123错误的解决方案

    问题描述: 在VS2010项目编译时会出现如下错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 解决方案: 查找是否有两个cvtres.exe ...

  10. The Same Game(模拟)

    http://poj.org/problem?id=1027 题意:给一个10*15的地图,里面填充R,G,B三种颜色,每次找到当前地图的同色最大区域M,并将其删除,删除M后,上面的小球自然下落,当有 ...