cocos2d_android开发简单游戏

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开发简单游戏

时间: 2024-10-13 09:54:43

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

JAVASCRIPT开发HTML5游戏--斗地主(网络对战PART4)

继之前用游戏引擎(青瓷引擎)做了斗地主单机版游戏之后,这里分享下使用socket.io来实现网络对战,代码可已放到github上,在此谈谈自己整个的开发思路吧. 客户端代码 服务端代码 (点击图片进入游戏体验) 前文链接: javascript开发HTML5游戏--斗地主(单机模式part1) javascript开发HTML5游戏--斗地主(单机模式part2) javascirpt开发HTML5游戏--斗地主(单机模式part3) 本文章为网络对战第一部分内容.主要内容如下: 简介 服务端项

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

在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌生了了解一下这类游戏的开发历程,本专栏的目标是做一个类MOBA的Demo. 俗话说,不去瞎琢磨的程序员,不是好司机. 好的,直接进入正题. 一.农药用什么语言和软件开发 小伙伴看到农药运行在Android和IOS平台上,估计第一个想到的就是 java / kotlin 和 Object-C / swift 了

如何在cocos2d-x中使用ECS(实体-组件-系统)架构方法开发一个游戏?

引言 在我的博客中,我曾经翻译了几篇关于ECS的文章.这些文章都是来自于Game Development网站.如果你对这个架构方式还不是很了解的话,欢迎阅读理解 组件-实体-系统和实现 组件-实体-系统. 我发现这个架构方式,是在浏览GameDev上的文章的时候了解到的.很久以前,就知道了有这么个架构方法,只是一直没有机会自己实践下.这一次,我就抽空,根据网上对ECS系统的讨论,采用了一种实现方法,来实现一个. 我很喜欢做游戏,所以同样的,还是用游戏实例来实践这个架构方法.我将会采用cocos2

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

C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别方法的作用吧.既然C#的语法规定方法就应该这么写,肯定是有一定道理的.如果是上升到战略意义的道理,连作者也不是很明白,但是作者知道这对括号里可以添加“参数”. Unity中参数的作用 要说明参数的作用,就必须从方法说起.方法可以处理变量中的数据,进而影响游戏对象的行为逻辑,这是本章前面一直在强调的.

java swing开发俄罗斯方块游戏

原文:java swing开发俄罗斯方块游戏 源代码下载地址:http://www.zuidaima.com/share/1550463573740544.htm 简单的俄罗斯方块游戏,可以读取记录

C#开发Unity游戏教程之游戏对象的属性变量

C#开发Unity游戏教程之游戏对象的属性变量 Unity游戏对象的属性--变量 通过对上一章的学习,读者应该了解到了,游戏对象上的属性与脚本中的变量,建立联系的方式就是将脚本赋予游戏对象.上一章仅仅是简单的介绍了脚本中的变量,读者一定只是瘾,如今好了.作者将使用一整章的篇幅介绍变量与属性. Unity游戏对象的属性 在Unity中.游戏场景中游戏对象的属性,能够在Inspector视图里查看,想看哪个游戏对象的属性.就使用鼠标选中哪个游戏对象就可以. 比如,要查看游戏场景中Main Camer

C#开发Unity游戏教程之使用脚本变量

C#开发Unity游戏教程之使用脚本变量 使用脚本变量 本章前面说了那么多关于变量的知识,那么在脚本中要如何编写关于变量的代码,有规章可循吗?答案是有的.本节会依次讲解变量的声明.初始化.赋值和运算. Unity脚本中声明变量 要想在脚本中使用变量,就必须先声明(declare).这就意味着,需要先告诉Unity,有这样一个变量存在,然后才可以在Unity中使用这个变量.那么,该如何将这个变量存在的事实告知Unity呢?答案就是声明.实际上,读者已经在本章见过多次变量的声明了,没错就是图3-11

责任链模式之开发新游戏的审批过程

要开发新的游戏了,必须要经过各个级别的老大进行对项目的风险性研究等,这里写了个责任链,好像很牵强 主要涉及三个角色:项目制作人,项目经理,老板 // // // Generated by StarUML(tm) Java Add-In // // @ Project : Untitled // @ File Name : Handler.java // @ Date : 2014/8/7 // @ Author : // // public abstract class Handler { pu

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

C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判定玩家是否有权限做出这种选择,然后才决定是否为玩家执行此选择.例如,<仙剑奇侠传>这款游戏,进入剧情"荷叶迷宫时",会要求玩家击碎迷宫里的5尊雕塑,如图5-12所示.但是击碎的前提是,玩家身上必须携带有"锤子".也就是说系统会遍历玩家身上所有的资源,如果有锤