为什么别踩白块儿5中,我点了黑块游戏却没显示我点了,导致卡屏,要再点一下或者两下才能继续,怎么回事?游

2个人1天半开发《别踩白块儿》红遍全球,发生了啥--百度百家
2个人1天半开发《别踩白块儿》红遍全球,发生了啥
分享到微信朋友圈
相比于《别踩白块儿》全球开花的盛景,其背后的开发故事也颇有趣味。为此,茶馆专访了《别踩白块儿》开发者之一陈鸿镇,也是Umoni工作室的创始人之一。
《别踩白块儿》在休闲手游界算是一匹名副其实的黑马,如果再加上“国产”的定义,就更有一番考究了,毕竟在这之前,国人耳熟能详的还是《植物大战僵尸》《愤怒的小鸟》等这些“洋”游戏,《别踩白块儿》出来后,感觉终于有一款可以和这些休闲神作媲美的自己人开发的游戏了;而如果把视野放到全球,《别踩白块儿》也着实在全球的休闲手游业写下了浓墨重彩的一笔。
相比于《别踩白块儿》全球开花的盛景,其背后的开发故事也颇有趣味。为此,茶馆专访了《别踩白块儿》开发者之一陈鸿镇,也是Umoni工作室的创始人之一。
《别踩白块儿》的成绩
《别踩白块儿》是由Umoni开发的一款休闲游戏,于2014年4月上线App Store,游戏的规则只有一个:只能踩黑块儿,不能踩白块儿!游戏界面极简,只采用了黑白两色,连所谓的新手引导和玩法介绍等文字都一概省略了;随着按下黑块儿的节奏,一些简单的音乐流出,恍惚一瞬间有弹钢琴的优雅,其实不然,随着黑块儿落下的节奏加快,它将演变成一款极其考验玩家眼和手反应能力的虐心虐手神作。
《别踩白块儿》和Flappy Bird、《2048》被称为2014年全球三大休闲游戏;登顶全球40+个国家和地区免费榜榜首;上线一个月后,摘冠全球游戏下载总榜(iOS+Android);在2014年6月的谷歌安卓开发者大会上,官方拿《别踩白块儿》做了大会演示;据开发者陈鸿镇透露,游戏一年累积了两亿多用户。
创业:一个大众创业者的缩影
移动互联网大环境下的“万众创新,大众创业”浪潮的确催生了一大批创业者,他们形形色色,其中有早已实现了财务自由的二次创业者、有从大公司离职积累了足够创业资源的大公司高管、也有颇受投资人喜爱的满腹才华之人……但这支创业大军的奠基者——士兵——是数以万计的普通创业者,他们没有头上的光环,只有心中的事业梦和背上沉甸甸的生活压力。
谈到为什么选择创业,陈鸿镇坦承的创业初衷可能说出了这些普通创业者的心声:
“最直接原因就是当时从前公司离职后,一直没找到满意的工作。一直觉得自己怀才不遇,面试的都是傻x!现在回想起来,其实是当时太心高气傲了,要价太高了,哈哈。
找了一段时间后,我开始考虑要不要尝试一下创业,当时自己也不知道到底该走哪条路,但想到打工以后当房奴的样子,触碰到内心深处某个敏感的地方,我马上明白那不是我想要的。我开始想这次创业的代价是什么,大概要持续多久,自己是否能承担失败带来的后果?我想无非就是把之前的那么点积蓄花光,于是就开始准备了。
比较根本的原因还是自己骨子里渴望创业,创业的想法从很小就有,只是之前想着是做生意。相信潮汕老乡有类似想法的不在少数,我出来创业是迟早的事。
还有一个小催化剂:我大学时一名学渣、逃课大王,以至于挂科了,补考没过,到现在还没拿到毕业证书。当时觉得我这样很难有机会进大公司,还是进创业团队的话倒还不如自己试一把。”
学计算机出身的陈鸿镇毕业后不久就进入了手游公司工作,两年后,他从公司离职,选择单干!
选择手游行业,是因为本身是程序出身,又有手游工作经历,而当时App Store/Google Play的开通上线也为开发者提供了低门槛通往全球玩家的环境基础。
选择做休闲游戏则源于自己的游戏喜好:
“我算是一个休闲游戏玩家;喜欢玩能快速入门、玩法独特有趣、用户体验好的游戏,对重点在玩数据变化的游戏完全无感。”
刚开始,他只有1个人,窝在家里写程序;窝了半年,也没什么成果,他决定放弃创业重新找工作,正当这时,大学时候的同学找到他,提议两人合伙做游戏,最初的Umoni团队就这么建立了。
团队成立初期,两人都在各自家里办公,开发方向是一人做一款游戏,还是休闲向的;但是,很快,这种分散精力的做法就显得不合适。于是,两人合力做另一款游戏,一款带有社交属性的休闲游戏,从团队成立到《别踩白块儿》产生之前的整一年时间都花在了这款游戏上,一直到2014年春节也没有完成。
一个2人的小团队,没有任何背景,也没有任何成功的作品,这样的CP很多,没有人愿意投资他们,他们当中的大多数都只能靠自己的积蓄或者家人朋友的帮助支撑。陈的团队也是如此,在合伙做第一款游戏期间,两人靠之前打工时候的积蓄以及偶尔接一两个外包维持开支。
第一款产品耗费了他们大量的时间和精力,只出不进的状态拖垮了团队,2014年春节前后,团队已经山穷水尽了。
而这个春节却蕴藏了一个惊喜!
2014年的春节正是Flappy Bird火爆全球的时候,Flappy Bird的“小”和“简”刺激了他们,他们一致认为2个人这样小的团队更适合的就是开发像Flappy Bird这样的极简游戏。春节过后的2月份,Flappy Bird的开发者阮哈东以压力太大下架了这款游戏,随后另一款神作《2048》迅速取代小鸟刷爆了全球,《2048》的火热更坚定了两人的想法。
于是,中途勒马,他们尝试做一款极简小游戏。
Flappy Bird
《别踩白块儿》:2个人用1天半完成了第一个版本
虽然知道这类小游戏要容易开发得多,不过听到《别踩白块儿》的制作过程的时候,茶茶还是吃了一惊,
“从决定做《别踩白块儿》到第一版本完成总共花了一天半到时间,首先我用一天时间把游戏核心部分(三个模式)做好,然后交给搭档接统计广告,然后就提审上线”
这故事实在太简单。对于他们团队来说,上线后的迅速蹿红也大有“幸福来得太突然”的感觉:
“其实我们自己也没想到会这么好!当时我们跟别人说游戏的下载量、DAU什么的,听到的人都会很惊讶,但我们自己对这些数据还没有概念,感觉不知不觉就火了!”
在游戏上线后,团队对游戏也做了很多改良。
第一个版本里,按下黑块儿的时候只有“嘟嘟嘟”的音效,不少玩家反映说这声音太洗脑了;根据玩家的反馈,他们为游戏加入了音乐,但涉及到音乐版权的问题,也只有一些全球共用的音乐简谱。
这一改动使《别踩白块儿》看上去很像一款偏钢琴弹奏类的音乐游戏,在采访之前,茶茶想象这个开发者多半是一个弹得一手好钢琴的儒雅帅哥,采访后发现,现实和现象还是有差距的。
陈鸿镇坦言:
“我和我搭档都是标准的理工男,不会谈钢琴,当初做《别踩白块儿》是在《2048》继《Flappy Bird》下架后开始火爆起来的时候,我们两个人的小团队算熬到了山穷水尽,尝试转做极简游戏挣点生活费。做《别踩白块儿》是因为它简单。”
本来只指着《别踩白块儿》挣点生活费的两人不经意挖到了满满的一桶金。作为一款免费休闲游戏,《别踩白块儿》依靠广告获取收入,具体数额不便透露。不过对照之前Flappy Bird的数据可以窥其一二:Flappy Bird从上线到下架时间很短,但也收获了5000万次的下载量,程序员阮哈东凭借游戏每次结束后弹出的广告,每日收入5万美金。
游戏的火爆使团队一下子从士兵升级到了将军级别,也引来了一众金主,猎豹是第一个找到他们的大公司!
和猎豹的合作:是一种妥协也是一种解脱
《别踩白块儿》被猎豹巨资收购的新闻是2015年初的一大重磅消息,从产业向来说,这意味着以工具App起家的猎豹正式进驻手游发行了,而凭借旗下猎豹清理大师、金山系以及浏览器等众多流量入口,它将成为集发行和渠道性质于一体的手游大头公司。
直到《别踩白块儿》被收购的消息出来之前,很少人知道它是哪家开发的,而从那以后,Umoni工作室一跃成为休闲游戏研发商的排头兵。
谈起当初为什么同意收购合作,陈鸿镇话不多。
“从他们提出收购意向到我们一致同意有半年左右,期间主要是我一直抗拒,最后同意最核心的是基于以下两个原因:
1)我的搭档一而再再而三找我谈,希望我能同意。最后一次找我谈的时候,他的身体确实挺糟糕的,心率不正常,手拿手机都会一直抖,看着很心疼。他跟我说卖掉后他想退出,身体撑不住了。我觉得身体只是直接原因,根本原因可能还是人性,面对高额的现金诱惑能扛得住的人并不多。另外,到了合作后期,我们俩对团队的发展观念也有冲突,感觉一直僵持下去也不好,所以同意了;
2)另一方面,我们团队自身也有一些困局。有《别踩白块儿》在,我们不得不投入绝大部分精力去维护它,我们很难放开手去做其它游戏,因为它是我们全部的支柱。导致我们花在其他也很重要的事情上的精力就很少,比如团队人才扩充和培养。所以,卖掉《别踩白块儿》也算是一种解脱。”
从《别踩白块儿》的转手也能看出一个小CP的艰难。
实际上,这种情况不是个例,茶茶在之前和某投资大佬聊天的时候,他提到现实中能始终坚持梦想的创业者是不多的,面对现实的压力和诱惑,没有几个人能抵抗得住;能坚持梦想又能有一番想要成就大事业的野心的创业者更是凤毛麟角。于是,很多小CP要么中途放弃了创业要么就是在小有成就后偏安一隅,满足于自给自足的理想状态。
当然,这无可厚非,实际上,他们当初能选择走出来去追逐梦想,在没有先天优势没有投资没有支持的情况下做选择创业,这种勇气就足以令人佩服了。
谈《别踩白块儿2》:和《别踩白块儿》性质不同
《别踩白块儿2》于今年8月20日推出,但其开发者却不是Umoni。
其中缘由,一方面是因为Umoni在《别踩白块儿》成功后,团队想做一些新东西;另一方面,猎豹团队的实力也不容小觑。
最终的续作不负众望。
从游戏模式来说,《别踩白块儿2》完全改变了前作的模式,它摒弃了前作的模式自由选择的游戏架构,采用了推卡+全球挑战的结构;界面由之前的黑白变成了彩色+气泡形式;曲库非常丰富。整体来看,《别踩白块儿2》美术清新柔和,结构清晰,加强了社交属性和音乐属性。
《别踩白块儿2》是一款名副其实的音乐游戏,其中,游戏元素和音乐元素紧密的结合程度超过了之前的《节奏大师》和Deemo;游戏在被Google Play13个地区评为年度优秀游戏后不久,就正式改了一个相当音乐范儿的名字——《钢琴块》。
对这款移花接木之作,陈鸿镇点了赞:
“其实,我一直有在关注《别踩白块儿2》,这版续作是由猎豹团队做的,做的很棒!走的是我很认可但之前一直不敢走的音乐方向,因为这需要很大投入,团队不够厚实很难做出来。现在他们不仅做出来了,而且游戏的表现也很好,不枉费他们那么大团队努力那么长时间。我为他们点个赞!”
由于Umoni仍然保留《别踩白块儿》续作的开发权利,陈表示不排除后期开发续作的可能性,但目前没有计划。
同时,在卖掉《别踩白块儿》之后,Umoni团队也有了扩充,相比于开始的纯研发性质,现在已经更像一家标准的游戏公司了。团队迄今为止推出过《别踩白块儿》和《幻径》两款休闲游戏;目前团队12个人,除了1个行政人员,其他都是研发人员;在团队配置上,也着重补足了之前势弱的美术力量。现在,除了小游戏开发这条线,团队也组建了另一条开发线,做一些产品内容相对丰富和有深度一些的游戏。小游戏方面,另一款即将上线,还有一款正在制作中;另一条稍偏重度线上,一款正在收尾测试,另一款也在制作中。
结语本来,茶茶以为《别踩白块儿》的故事会很具有传奇性,能提供一些经验为很多CP所用,而实际情况却是:他们是普通得不能再普通的手游创业者了。不想打工,所以选择创业;没有资金没有人力,靠积蓄过日子,靠外包挣生活费;如果没有《别踩白块儿》的成功,他们一定还是奔波在街头的苦逼创业者之一,今天为明天的饭发愁。所以,他们是幸运的,但这幸运也不是全靠运气,毕竟,他们自始至终对一件事情很笃定:只做休闲游戏!如果非要找出一个点来借鉴,恐怕只有这个点了,对于初创的小CP来说,在一个细分领域坚持做自己喜欢的、擅长的,比朝三暮四跟风随流的成功机会要大得多。■
(关注游戏茶馆微信号:youxichaguan,了解全球手游新动态)
分享到微信朋友圈
在手机阅读、分享本文
还可以输入250个字
推荐文章RECOMMEND
阅读:8342
阅读:15万
阅读:14万
阅读:13万
热门文章HOT NEWS
王健林:“我们自己辛辛苦苦赚的钱,爱往哪儿投就往哪儿投。”
新华社《财经国家周刊》
华谊兄弟研究院
百度新闻客户端
百度新闻客户端
百度新闻客户端
扫描二维码下载
订阅 "百家" 频道
观看更多百家精彩新闻我同学下载了一个别踩白块儿,里面有好多游戏,双人的别踩白块儿,跨栏的,等等……但是我却找不到那个_百度知道
我同学下载了一个别踩白块儿,里面有好多游戏,双人的别踩白块儿,跨栏的,等等……但是我却找不到那个
件,为什么呢?
提问者采纳
别踩白块儿4
有网页吗?请问?
其他类似问题
不过都很早了。忘了都。你直接问你同学在哪儿下的不就行了这个游戏我玩过
她说那个游戏名字就叫别踩白块儿,但是我查了应用宝百度都没有,你以前是在哪里下载的呢?
我下游戏的地方很多,谁记得呢。不过你可以直接在百度上搜手机游戏,一般游戏都有说明的,这样很容易就能找到,你试试看。
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁别踩白块游戏一不小心点了20块钱购买什么东西是不是就不能退了?以后还会接着扣钱吗_百度知道
别踩白块游戏一不小心点了20块钱购买什么东西是不是就不能退了?以后还会接着扣钱吗
你可以到315网站上去投诉他们的扣钱行为,然后就会退钱给你了。
其他类似问题
为您推荐:
其他1条回答
我也跟你一样的问题,请问你的钱退回来了吗?
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁点击2048!别踩白块!技能怎么合理加点
点击2048!别踩白块!
更新时间:
下载:17,848次
平台:Android
黑莓 Z10 点击2048!别踩白块! 技能怎么合理加点
许多玩家对英雄技能加点十分关注,小编发现不少玩家都在问英雄技能怎么加点才更合理?在里,我们需通过点击英雄的头像来进入英雄属性界面。而我们假设通过绿卡和蓝卡进化而来的紫卡的技能点是个残废,并且这个假设是合理的,那么我们就可以完全摒弃绿卡和蓝卡的进化紫卡行动了。在游戏中,技能点也永远不会够各位小伙伴们加满所有技能的,毕竟技能点在少数,而技能选择却众多。所以小伙伴们想要使自己的技能加点更加合理,就需要配合组成的队伍成员定好位,选择更合适的技能进行加点。小编提示各位玩家们技能加点时要权衡利益懂得取舍,发挥团队整体配合的优势。更多相关攻略,尽在九游专区!下载安装包,还能有更多的操作指引,轻轻松松合理加点!
请选择品牌
请选择机型Z10
小贴士:建议您想先设置机型,设置后您就直接浏览全部适合您手机的游戏,下载使用更放心。
九游()是手机游戏下载第一门户,提供最新黑莓黑莓Z10下载、礼包、激活码,最好玩的点击2048!别踩白块!攻略,欢迎访问与玩家交流。
《》是一款非常能令人上瘾的游戏。玩过2048吗?玩过别踩白块儿吗?是不是对2048里的数字感到暴跳如雷又无可奈何呢?是不是对别踩白块儿里遍地的白块儿而抓狂呢?在这里,你不必在为烦人的数字合成发愁,只需要使用你灵活的手指点击就行了~ 非常具有挑战性!
点击查看更多
您可能还想关注:
看了点击2048!别踩白块!技能怎么合理加点的用户还看了:
关于黑莓Z10
BLACKBERRY是加拿大RIM公司推出的一种移动电子邮件系统终端,其特色是支持推动式电子邮件、手提电话、文字短信、互联网传真、网页浏览及其他无线资讯服务。 专区提供最新手机游戏免费下载。
Z10的分辨率为768*1280,是黑莓生产的一款触屏手机。黑莓Z10手机用户可通过九游下载。今天看啥 热点:
Cocos2dx学习之-----别踩白块V1.0,cocos2dx-----v1.0
学了点COCOS2DX,一直感觉也没什么大意思,所以就找个教程做个小游戏出来,反正国庆在校也没啥事,自娱自乐。
PS;我用的版本是cocos2dx3.2
一、创建项目
cocos new -p com.donttouchwhiteblock.xuran -l cpp -d .
二、创建block类
因为别猜白块里面最重要的一个元素就是“块”,所以我们要为这个元素创建一个类,然后实例化一些方法,以便完成游戏中的诸多行为
首先是gameblock.h文件
#pragma once
#include &iostream&
#include &cocos2d.h&
USING_NS_CC;
class Block:public Sprite
static GameBlock* CreateWithArgs(Color3B color, Size size, std::string label, float fontsize, Color3B textcolor);
virtual bool initWithArgs(Color3B color, Size size, std::string label, float fontsize, Color3B textcolor);
void removeblock();
static Vector&GameBlock*& *
头文件里面定义了三个成员函数:
第一个是创建一个block,根据所获取到的参数
第二个是初始化一个新的块根据参数。
第三个是移除一个块
还有创建了一个block指针类型的数组,用于存储我们创建的block的对象。
其次是GameBlock.cpp文件
#include &GameBlock.h&
Vector&GameBlock*& *GameBlock::blocks = new Vector&GameBlock*&();
GameBlock* GameBlock::CreateWithArgs(Color3B color, Size size, std::string label, float fontsize, Color3B textcolor)
auto b = new GameBlock();
b-&initWithArgs(color, size, label, fontsize, textcolor);
b-&autorelease();
blocks-&pushBack(b);
void GameBlock::removeblock()
removeFromParent();
blocks-&eraseObject(this);
//删除向量中特定的对象
bool GameBlock::initWithArgs(Color3B color, Size size, std::string label, float fontsize, Color3B textcolor)
Sprite::init();
setContentSize(size);
setAnchorPoint(Point::ZERO);
setTextureRect(Rect(0,0,size.width, size.height));
setColor(color);
auto l = Label::create();
l-&setString(label);
l-&setSystemFontSize(fontsize);
l-&setColor(textcolor);
addChild(l);
l-&setPosition(size.width/2, size.height/2);
有对block数组的初始化,一个块的初始化函数,包括各种参数的设置以及一个创建函数,一个释放删除函数。
三、添加开始条
创建了块对应的类和相应的方法之后,我们就要开始真正的一步一步来做了。首先,别踩白块的游戏在开始的时候是有一条黄色的部分,代表着起点。那么首先就来为我们的游戏添加这个黄色的起点块。
很简单,从HelloWorldScene文件里面添加一个新的函数叫做AddStartLine,函数的实现很简单,就是通过CreateWithArgs函数创建一个块,然后添加进来即可。
bool HelloWorld::init()
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
visibleSize = Director::getInstance()-&getVisibleSize();
AddStartLine();
void HelloWorld::AddStartLine()
auto b = GameBlock::CreateWithArgs(Color3B::YELLOW, Size(visibleSize.width, visibleSize.height/8), &Start&, 20, Color3B::BLACK);
addChild(b);
既然开始条是这么添加的,那么结束条应该也是同理,再次就不再多做介绍了。
添加完开始和结束之后,我们要添加的就是普通的黑白块。
四、添加黑白块
首先我们要在类里面加入一个添加黑白块的方法叫做AddNormal
我们一般玩的别踩白块的版本的游戏通常一排有四个块,黑快是随机的出现在这四块中的其中一块,其余的都是白块。
既然是随机的,那么我们很自然的就要用到随机数。
利用rand函数产生一个0-4之间的随机数用来确定黑块的位置。
我们要有这样的一个概念,程序现在面对着一块白色的画布,我们要按着行的顺序,在按照列的顺序依次把每一行的白块和黑块都画好。
那么首先,我们需要创建一个块,究竟创建的是黑快还是白块,由上面的随机数来确定
void HelloWorld::AddNormal(int lineindex)
int blackindex = rand()%4;
GameBlock *b;
for(int i = 0; i & 4; i++)
auto b = GameBlock::CreateWithArgs(blackindex == i?Color3B::BLACK:Color3B::WHITE, Size(visibleSize.width/4-1, visibleSize.height/4-1), &&, 20, Color3B::BLACK);
addChild(b);
b-&setPosition(i*visibleSize.width/4, lineindex*visibleSize.height/4);
b-&setlineindex(lineindex);
每排有四个块,我们是一排一排的进行设置。传进来的参数代表的是排数。
设置一个for循环,用来设定一行中的四个快。
首先创建一个块,因为上面生成一个blackindex的随机数,所以黑块的位置也就相应的指定了。添加到场景中之后,就要设置这个黑块的准确位置。
首先我们要把我们的屏幕宽度分为四部分,设置哪一部分是靠i来决定的,随意每一块的x坐标是用i来乘上一个块的宽度大小,纵坐标呢,当然是要设置第几行的黑白块,所以是靠我们传进来的要设置第几行来决定的。
void HelloWorld::StartGame()
AddStartLine();
AddNormal(1);
AddNormal(2);
AddNormal(3);
最后我们直接再添加一个开始游戏的函数,里面调用添加这些块的方法,在init函数里面运行这个即可看到效果。
五、事件交互
事件交互实际上就是你对这个游戏,或者对屏幕上的事务做出了点击,那么这个事务理应给一些一些反馈。
别再白块中的时间交互其实只有一个,就是你点黑快,游戏继续,你点白块游戏结束。就是这样。
我们以第一行为例,首先如果是要对一些操作做出反应的话,那么我们就需要一个监听器,来监听动作的发生,你可以选择监控一个控件是否被操作了,或者是监控整个场景是否被操作了。
首先我们要创建一个触摸事件的监听器
auto listener = EventListenerTouchOneByOne::create();
如果这个监听器接受到了触摸信号,那么他肯定要对这个触摸的动作做出反应,调用一个函数进行反应操作。
listener-&onTouchBegan = [this](Touch *t, Event *e){
log(&xuran is winner&);
GameBlock *b;
auto bs = GameBlock::getBlocks();
for(auto it = bs-&begin(); it != bs-&end(); it++)
if(b-&getlineindex() == 1 && b-&getBoundingBox().containsPoint(t-&getLocation()))
if(b-&getColor() == Color3B::BLACK)
b-&setColor(Color3B::GRAY);
this-&movedown();
MessageBox(&游戏失败&, &GameOver&);
所以在这里用了一个闭包函数。
这个闭包函数里面出现了一些新的函数,比如getblocks。这个函数是在GameBlock类里面进行定义的,他的作用就是返回存储块的vector,因为假如我创建了第一层,那么第一层肯定会创建四个块,其中一个黑块,三个白块,这些块里面都会有一个lineindex的属性,可以表明他们是第几行的块,这些块也都会加入到这个数组里面,所以在交互的时候,肯定要判断是触摸了白块还是触摸了黑块,所以要利用迭代器的遍历来进行确认。
listener-&onTouchBegan也表明了这是对触碰事件的一个回调函数。
在遍历数组中的块时,因为是游戏开始,为了能够正常的让游戏开始,我们首先要确定,vector中的第一个块是第一行的,并且这个块的范围是包含我们的触点的,由于这个if已经能够确定我们的手指触碰到了游戏中的块时,接下来要判断的就是触摸的是白块还是黑块。
如果是黑快,那么按下的黑块会变为黑色,并且把这一行下移,如果是白块的话,那么提示游戏失败。
bool HelloWorld::init()
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
visibleSize = Director::getInstance()-&getVisibleSize();
StartGame();
auto listener = EventListenerTouchOneByOne::create();
listener-&onTouchBegan = [this](Touch *t, Event *e){
log(&xuran is winner&);
GameBlock *b;
auto bs = GameBlock::getBlocks();
for(auto it = bs-&begin(); it != bs-&end(); it++)
if(b-&getlineindex() == 1 && b-&getBoundingBox().containsPoint(t-&getLocation()))
if(b-&getColor() == Color3B::BLACK)
b-&setColor(Color3B::GRAY);
this-&movedown();
MessageBox(&游戏失败&, &GameOver&);
Director::getInstance()-&getEventDispatcher()-&addEventListenerWithSceneGraphPriority(listener, this); //对当前场景进行监听
六、设计游戏逻辑
这个游戏的逻辑很简单,不比2048.无非就是点击黑快所有的块向下移动,一直到结束,点击白块游戏失败。
所以说,主要实现的一个函数就是movedown。movedown的功能其实也很简单,就是把所有的块都要向下移动。首先在helloworldscene里面的movedown函数里面要遍历整个块的数组,依次让这些块执行下移的动作,至于这个具体的下移方法,要在块类的内部实现,因为这毕竟是一个块的行为。
首先,每个移动的块的所在行数,也就是lineindex都会随着移动的发生而减掉1.
其次便是要为每一个块执行一个下移动作
void GameBlock::moveon()
Size visable = Director::getInstance()-&getVisibleSize();
this-&lineindex--; //可以向下移动的行,移动之后所在的行会减去1
runAction(Sequence::create(MoveTo::create(0.1f,Point(getPositionX(), lineindex*visable.height/4)),CallFunc::create([this]()
if(lineindex & 0)
this-&removeblock();
//执行一个移动的动作,把一个块移动到对应的位置上,间隔0.1
这里面的runaction函数将执行一个系列动作,执行完块的移动之后还要调用一个函数,如果这个块被移出了屏幕,那么他就应该被销毁,调用removeblock函数实现。
其次,我们要设置一个游戏的终点,也就是说游戏过程中如果一直没有踩到白块,那么究竟什么时候停止呢。
一般来说踩50个黑快之后应该游戏就停止了。
所以说要在helloworldscene类里面设置一个linecount,每次添加一行的普通块时都要加1,在所有的块向下移动的时候也是要判断,如果已经踩了50块了,那么再添加到屏幕顶部的就不应该是正常的 黑白块而是最终结束的绿色的游戏界面。
并且,在下移块的函数中,如果已经添加了一个游戏结束的绿色块,那么下次就不用添加了,直接下移就可以,因为一个游戏结束块的尺寸是整个屏幕,不用再多添加几个。
bool HelloWorld::init()
//////////////////////////////
// 1. super init first
if ( !Layer::init() )
visibleSize = Director::getInstance()-&getVisibleSize();
StartGame();
auto listener = EventListenerTouchOneByOne::create();
listener-&onTouchBegan = [this](Touch *t, Event *e){
//log(&xuran is winner&);
GameBlock *b;
auto bs = GameBlock::getBlocks();
for(auto it = bs-&begin(); it != bs-&end(); it++)
if(b-&getlineindex() == 1 && b-&getBoundingBox().containsPoint(t-&getLocation()))
if(b-&getColor() == Color3B::BLACK)
b-&setColor(Color3B::GRAY);
this-&movedown();
else if (b-&getColor() == Color3B::GREEN)
this-&movedown();
MessageBox(&游戏失败&, &GameOver&);
Director::getInstance()-&getEventDispatcher()-&addEventListenerWithSceneGraphPriority(listener, this); //对当前场景进行监听
void HelloWorld::movedown()
if(linecount & 50)
AddNormal(4); //在屏幕最上面添加一行,因为设置了屏幕内一次最多存在四行的块
else if(!showend)
AddEndLine();
auto bs = GameBlock::getBlocks();
for(auto it = bs-&begin(); it != bs-&end(); it++)
(*it)-&moveon();
七、添加计时器
http://blog.csdn.net/xr_acmer/article/details/关于计时器的使用我这里应该写了一些。
我是用的是scheduleupdate这个计时器,所以自己先定义一个update函数 。
之后我们要定义两个函数,一个是启动计时器的函数,一个是终止计时器的函数,无论是开始计时器还是终止计时器都只需要做一次,所以用一个bool变量来控制他的运行。
void HelloWorld::update(float dt)
long offet = clock()-
timelabel-&setString(StringUtils::format(&%g&, ((double)offet)/1000));
void HelloWorld::starttime()
if(!timerrunning)
gametime = clock();
//获取当前系统运行这个程序的时间。
scheduleUpdate();
//开始执行计时器
timerrunning =
void HelloWorld::endtime()
if(timerrunning)
unscheduleUpdate();
//停止执行计时器
timerrunning =
}scheduleupdate这个计时器会根据每一帧的变化调用update函数。
因为我们要在游戏界面中添加一个计时器,这个计时器是不断变化的,但是随着块的移动很可能会覆盖掉计时器,所以我们就想能够把游戏和计时器分开,把他们分别存在两个层中,这样一来两这就都不影响了。
gamelayer = Node::create();
addChild(gamelayer);
timelabel = Label::create();
timelabel-&setColor(Color3B::RED);
timelabel-&setSystemFontSize(38);
timelabel-&setPosition(visibleSize.width/2, visibleSize.height-50);
timelabel-&setString(&0.000\&&);
addChild(timelabel);
创建一个新的层叫做gamelayer,之后再创建一个label标签,用于时刻显示时间,并添加到我当前的层里,把之前所有的游戏里面添加开始快结束快的函数里面的addchild都变成gamelayer-&addchild(b),也就是说把游戏当中的元素都添加到游戏层里面,计时器添加到当前的层里面。
if(b-&getlineindex() == 1 && b-&getBoundingBox().containsPoint(t-&getLocation()))
if(b-&getColor() == Color3B::BLACK)
if(!timerrunning)
this-&starttime();
b-&setColor(Color3B::GRAY);
this-&movedown();
else if (b-&getColor() == Color3B::GREEN)
this-&movedown();
this-&endtime();
MessageBox(&游戏失败&, &GameOver&);
最后根据踩的是黑快还是绿快要确定计时器的停止和开始。
PS:第一版基本就是这样了,算是可以玩了,但是还是有很多需要改进完善的地方,以后有心情再搞
/Harkphoenix/DontTouchWhiteBlock& &源码在这里,我是用vs写的
1这个游戏对手机的配置没有什么要求,不过建议用大屏手机,屏大按的地方就大嘛!这样更方便,进入游戏以后可以选择游戏的模式【经典】【街机】,进入【经典模式】试玩一下注:经典模式就是过多少个白块就完成了
街机模式就是一直在游戏的状态,直到你趴下。步骤阅读2进入游戏后会显示黑块和白块,不要点到白块的地方就算是过了。点击【开始】步骤阅读3开始游戏就会不断显白块黑块,只需要用手点击黑块就可以了。建议使用双手这样更好的练习你的左右大脑。步骤阅读4经典模式还是比较容易过了,刚刚玩了两把就过了。步骤阅读5街机模式玩法差不多,玩得越多分数越高。 街机模式就是一直在游戏的状态,直到你趴下。
经典模式:把手机放在桌上固定好,然后食指疯点,有炫舞或劲舞游戏经验的,突破七秒很容易。如果是小米手机,请打开手套模式,这要按的时候手机反应会快一点,但是这是双刃剑,也很容易挂掉。街机模式:前面一百一般都能过,速度稳定下来后,大家出错都是因为按到了白块儿而gameover,所以我们可以默数,一竖有两个就默数“一二”,有三个默数“一二三”,只要就能尽量降低失误率。PS“可以两个手指一起按,比如第四排有连续的音符,那么右手两个手指同时点那一排,就可以同时消掉两个
相关搜索:
相关阅读:
相关频道:
Android教程最近更新

我要回帖

更多关于 别踩白块 的文章

 

随机推荐