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开发简单游戏的更多相关文章
- JS开发HTML5游戏《神奇的六边形》(一)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
- JS开发HTML5游戏《神奇的六边形》(三)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
- [置顶] 使用红孩儿工具箱完成基于Cocos2d-x的简单游戏动画界面
[Cocos2d-x相关教程来源于红孩儿的游戏编程之路CSDN博客地址:http://blog.csdn.net/honghaier 红孩儿Cocos2d-X学习园地QQ3群:205100149,47 ...
- 王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍
在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌 ...
- 用Cocos2dx开发棋牌游戏的观点解析
众所周知,目前棋牌游戏特别的火.很多游戏公司都想在这一块赚钱,可是却不知用什么软件比较好的去开发棋牌游戏,对此,我列出了两款比较靠谱的软件去开发棋牌游戏,希望对大家有帮助! 第一款软件是cocos2d ...
- C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例
C#开发Unity游戏教程循环遍历做出判断及Unity游戏示例 Unity中循环遍历每个数据,并做出判断 很多时候,游戏在玩家做出判断以后,游戏程序会遍历玩家身上大量的所需数据,然后做出判断,即首先判 ...
- C#开发Unity游戏教程之判断语句
C#开发Unity游戏教程之判断语句 游戏执行路径的选择——判断 玩家在游戏时,无时无刻不在通过判断做出选择.例如,正是因为玩家做出的选择不同,才导致游戏朝着不同的剧情发展,因此一个玩家可以对一个游戏 ...
- C#开发Unity游戏教程之Unity中方法的参数
C#开发Unity游戏教程之Unity中方法的参数 Unity的方法的参数 出现在脚本中的方法,无论是在定义的时候,还是使用的时候,后面都跟着一对括号“( )”,有意义吗?看起来最多也就是起个快速识别 ...
- C#开发Unity游戏教程之游戏对象的行为逻辑方法
C#开发Unity游戏教程之游戏对象的行为逻辑方法 游戏对象的行为逻辑——方法 方法(method),读者在第1章新建脚本时就见过了,而且在第2章对脚本做整体上的介绍时也介绍过,那么上一章呢,尽管主要 ...
随机推荐
- 【BZOJ1050】【枚举+并查集】旅行comf
Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大 ...
- MVC 文本转换成html显示
最近在学习ASP.NET MVC,项目中需要将后台传输的HTML文本在前台页面显示:@Html.Raw(HttpUtility.HtmlDecode(ViewBag.DisplayText)).记下来 ...
- linux下搭建svn服务器
安装步骤如下: 1.yum install subversion 2.输入rpm -ql subversion查看安装位置,如下图: 我们知道svn在bin目录下生成了几个二进制文件. 输入 ...
- 使用iOS8 WKWebView的浏览器模块,脉冲动画层-b
KINWebBrowser是一个可嵌入app的浏览器模块. 它使用iOS 8的 WKWebView API编写,同时在iOS 7上使用UIWebView来兼容. 测试环境: Xcode 6.0 iOS ...
- linux学习笔记---一些有趣的命令
一 在说链接之前我们哈需要说明一个东西,就是inode,一个文件的名字可以有多个,但是inode里的i-number却只有一个,(inode是一个数据结构,里面存放文件的各种属性,属主,属组,权限,大 ...
- 转:.NET中使用Redis (二)
原文来自于:http://blog.jobbole.com/83824/ 原文出处: 寒江独钓 欢迎分享原创到伯乐头条 很久以前写了一篇文章 .NET中使用Redis 介绍了如何安装Redis服务 ...
- 解决maven仓库有jar包但是maven程序无法下载仓库jar包
话说,这个问题困扰了我两个多月了已经~~~ 后来发现不知道被谁动了,把我的仓库没有放到仓库组里面~~~ 用admin登录进去,默认密码是admin123,然后看截图操作吧. (记得删除你本地报错说** ...
- c#分支语句;循环语句(随堂练习)
1. 输入月份,日期号,输出是今年的第几天 平年,2月28天 switch (变量名) {case "": break} 2. 循环语句: for(int i ...
- AlgorithmsI PA2: Randomized Queues and Deques Deque
本次作业考察利用array 或者linked list 实现规定时间复杂度的queue 和stack, 不能使用java 自带的stack 和queue. 目的是让我们掌握自己设计的函数的复杂度. D ...
- Curling 2.0(dfs)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8795 Accepted: 3692 Description On Pl ...