cocos2d 高仿doodle jump 无源代码
1. 游戏视频
主角眼熟吗?没错,上次跑酷游戏中的“30”来Jump了,有三种道具。主角光环,竹蜻蜓。翅膀; 有两种怪物,螃蟹和鸟; 有5种板子。点击屏幕,30会把它的嘴巴3给发射出去。能够攻击怪物。
上次的跑酷參考《cocos2d 简单高仿天天跑酷游戏》 。苹果已经审核通过...但做的很差,兴许有时间再更新。后面考虑会出很多其它的该主角游戏。
事实上蛮讨厌"高仿"这两个字的,争取下一款游戏有很多其它原创部分。
2.向上跳的位移实现
有一个Camera,它的位置跟着主角来移动就能够了。
就这么简单。
float minPositionY = 0;
void update(float dt){
//follow the hero
float nextPositionY = VISIBLE_HEIGHT / 2 - hero->getPositionY();
if(nextPositionY < minPositionY){
minPositionY = nextPositionY;
this->setPositionY(minPositionY);
}
}
看起来比較简单,假设是主角掉下屏幕最底下,有一个坠落感觉,逻辑上又比較麻烦了。还是用Camera的比較好。
3.板子生成的逻辑
首先是板子连续生成的逻辑,不可能一次生成几十个板子。反正屏幕之上和屏幕之下用户都是看不到的,也就是说10几个板子。整个游戏就够用了。到后面。10个都不用。
正常的update是一秒中运行60次。我们须要整一个慢一点的定时器,这样不会太影响性能。schedule(schedule_selector(GameObjectsLayer::createAndRemoveObjects), 0.064);。专门在里面创建板和移除不须要的板子。
deque<JumpBoard*> _boardObjects;
void generateSomeBoards(const int& lastPositionX,int startPosition,const int& count);
void createAndRemoveObjects(float dt){
if(_pause == true){
return;
}
if(_boardObjects.size() <= 12){//generate some boards if we only have few boards
JumpBoard *lastBoard = _boardObjects.back();
generateSomeBoards(lastBoard->getPositionX(), lastBoard->getPositionY() + getGeneratorHigh(),5);
}
//remove unused boards
JumpBoard* firstBoard = _boardObjects.front();
if(hero->getPositionY() - firstBoard->getPositionY() > 600){
firstBoard->removeFromParent();
_boardObjects.pop_front();
} }
再简单用语言来说下上面中没有给出具体代码的generateSomeBoards。
这里游戏的玩法就是怎样控制生成板子。我必须承认这块做的还不好。
typedef enum{
kNormalBoard, //0
kCloudBoard, //1
kMoveBoard, //2
kMoveLttleBoard, //3
kSpringBoard //4
}JumpBoardType;
int level1[] = {0,0,0,0,0,0,0,0,0,0,1,1,1};
int level2[] = {0,0,0,0,0,0,0,0,0,0,1,1,2,3,4};
这里简单有两个数组。后面会用它们初始化两个vector<int>,然后用random_shuffle,进行洗牌。
会依据当前的hero高度来选择不同的数组。当index移到最后一个时候,就归0。再次洗牌。
int getBoardTypeDueToFloorNum(){
int floorCount = getFloorCount();
int result = 0;
if(floorCount <= 2){
if(_levelIndex >= _level1.size()){
_levelIndex = 0;
random_shuffle(_level1.begin(), _level1.end());
}
result = _level1[_levelIndex];
++_levelIndex;
return result;
}else if(floorCount > 2 && floorCount <= 10){
if(_levelIndex >= _level2.size()){
_levelIndex = 0;
random_shuffle(_level2.begin(), _level2.end());
}
result = _level2[_levelIndex];
++_levelIndex;
return result;
}else{
//无限模式
}
}
当然后面的无限模式更加复杂点。我搞了5种不同类型的数组进行洗牌。这里不再赘述。
4.道具和怪物生成位置
//typedef enum{
// kHelicopterItem, //0
// kFlyItem, //1
// kShortItem, //2
// kLongItem, //3
// kDefenceBall //4
//}EatItemType;
int allEatItemType[] = {4,4,4,0,0,1};
为了让不同道具出现概率不一样,又用了跟上面板子相似的逻辑。怪物这里就2种。就50%概率会生成不同怪物。
Doodle jump这块做的变态的好,一般怪物出现之前会有杀死怪物或者躲避怪物的道具出现。
5.主角光环和抛物线掉落
仅仅用到了左边红色的部分。
6. 其它
这里就不再赘述。
有真正游戏的感觉。
cocos2d 高仿doodle jump 无源代码的更多相关文章
- Android高仿雅虎天气(两)---代码结构分析
版本已经升级到1.0.1 源码地址: GitHub:https://github.com/way1989/WayHoo OsChina:http://git.oschina.net/way/WayHo ...
- iOS高仿app源码:纯代码打造高仿优质《内涵段子》
iOS高仿app源码:纯代码打造高仿优质<内涵段子>收藏下来 字数1950 阅读4999 评论173 喜欢133 Github 地址 https://github.com/Charlesy ...
- [MFC] 高仿Flappy bird 桌面版
这是今年年初做的东西,一直没有时间整理,现在拿出来分享下~ 目录 开发背景 开发语言及运行环境 效果展示 游戏框架说明 游戏状态及逻辑说明 经典算法说明 重量级问题解决 开发感想 一.开发背景: fl ...
- Android -- 真正的 高仿微信 打开网页的进度条效果
(本博客为原创,http://www.cnblogs.com/linguanh/) 目录: 一,为什么说是真正的高仿? 二,为什么要搞缓慢效果? 三,我的实现思路 四,代码,内含注释 五,使用方法与截 ...
- 微信小程序开发日记——高仿知乎日报(下)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...
- 微信小程序开发日记——高仿知乎日报(中)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该教 ...
- 微信小程序开发日记——高仿知乎日报(上)
本人对知乎日报是情有独钟,看我的博客和github就知道了,写了几个不同技术类型的知乎日报APP 要做微信小程序首先要对html,css,js有一定的基础,还有对微信小程序的API也要非常熟悉 我将该 ...
- 高仿ios版美团框架项目源码
高仿美团框架基本已搭好.代码简单易懂,适合新人.适合新人.新人. <ignore_js_op> 源码你可以到ios教程网那里下载吧,这里我就不上传了,http://ios.662p ...
- 分享iOS开发常用(三方类库,工具,高仿APP,实用网站,技术干货)
一 . JSONModel (三方类库会有更新,建议大家在线下载) http://pan.baidu.com/s/1i5ybP1z 二.AFNetworkiong http://pan.baidu. ...
随机推荐
- Oracle11G安装
1.安装Oracle 记住要设置好密码 不要忘了 解锁scott(注意一定要解锁)账户, 去掉前面的绿色小勾,输入密码.同样可以输入平常用的短小的密码,不必非得按oracle建议的8位以上大小写加数字 ...
- OC - 21.CALayer核心要点及实例解析
CALayer基础 CALayer是每一个UI控件的核心,一个UI控件之所以能显示可以说是CALayer的功劳 每一个UI控件默认都为自己创建一个CALayer对象,通过drawRect方法将内容绘制 ...
- 安卓 报错 Check the Eclipse log for stack trace.
移除Android Dependencies就行了. 在properties的Libraries里
- 跟我学android-使用Eclipse开发第一个Android应用(三)
打开Eclipse,选择 File—New –Android Application Project Application Name 就是我们的 应用名称,也是我们在手机应用程序列表里看到的名称. ...
- Object Storage(Swift)安装过程——Havana
自从看了Havana安装文档有关Swift的安装一节,发现H版的安装过程与以前还是有些差别的.不过大致过程还是那些.下面简单介绍下我们安装的过程吧,具体请参考官方文档http://docs.opens ...
- TalkingData Cocos2dx在android平台使用总结
前言:最近发现很多朋友在使用TalkingData游戏版本Cocos2dx SDK使用过程中会出现的一些问题,今天来做一下总结,希望对您有所帮助: 首先非常感谢您使用TalkingData游戏统计平台 ...
- Java学习----你的选择是什么-条件结构
import java.util.Scanner; public class Student { public static void main(String[] args) { byte money ...
- jquery mobile selectmenu下拉菜单
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- grails-MappingException: Could not determine Type
在用grails的时候遇到这个问题,反复调试了很久,没有进展,同时敲了几个命令后好了,真纠结,这是框架的问题吗? 问题: Caused by MappingException: Could not d ...
- 如何把powerpoint幻灯片大小改为标准或宽屏教程【图文】
不知道大家还记得早期powerpoint版本,幻灯片的形状是较方(4:3),随着科技的发展,很多电视.视频都在用宽屏,powerpoint自然也是如此,现在默认的幻灯片大小是宽屏 (16:9),怎么把 ...