游戏没有计时,不是坑爹吗?

这一期,我们将来加入游戏计时功能。

1. 定义变量和函数

我们先在HelloWorldScene.h中定义几个变量和函数

	long startTime;
bool timeRunning;

startTime用来记录開始的时间,timeRunning用来推断游戏是否在进行中。

	//開始计时
void startTimer(); //结束计时
void stopTimer(); virtual void update(float dt);

startTimer()函数时開始计时,stopTimer()函数是结束计时,update()函数是每帧都调用。

2. 详细实现三个函数

然后,我们来看看这三个函数的详细实现

void HelloWorld::update(float dt)
{
long offset = clock()-startTime; timerLabel->setString(StringUtils::format("%g",((double)offset)/1000000));
} //開始计时
void HelloWorld::startTimer()
{
if(!timeRunning)
{
scheduleUpdate();
startTime = clock();
timeRunning = true;
}
} //结束计时
void HelloWorld::stopTimer()
{
if(timeRunning)
{
unscheduleUpdate();
timeRunning = false;
}
}

startTimer()函数先推断是否正在计时,假设没有的话,先调用update函数。

stopTimer()函数先推断是否正在计时,假设有的话,就卸载update。

update函数用来计算时间差,而且显示出来。

3. 调用函数

当然,实现函数后,就要调用。那么在哪里调用呢?

当然是在点击黑色块后调用startTimer,点击绿色块后调用stopTimer。

                                if(b->getColor()==Color3B::BLACK)
{
b->setColor(Color3B::GRAY);
this->moveDown();
this->startTimer(); }
else if(b->getColor()==Color3B::GREEN)
{
this->moveDown();
this->stopTimer();
}

4. 执行项目

执行项目后,效果例如以下

5. 产生真正的随机数

效果执行多了,你会发现,事实上黑色方块并非随机出现,而是常常出如今同一个位置。这时候,我们须要加入一行代码

srand(time(NULL));

这样子,就能让随机数真正的随机产生了。

6. 改动分辨率

看到执行项目后,窗体有点大,事实上是分辨率的问题。在3.0正式版中,改动分辨率不再是在main函数中直接改动了,能够加入例如以下两行代码在AppDelegate中

    glview->setFrameSize(320,480);
glview->setDesignResolutionSize(320,480,ResolutionPolicy::SHOW_ALL);

记得要加入在例如以下代码的后面

    if(!glview) {
glview = GLView::create("My Game");
director->setOpenGLView(glview);
}

这时候,我们再来执行一下项目,是不是舒服非常多了呢?

到这里为止,我们游戏的核心功能,就基本完毕了。赶紧拿起键盘,来敲写程序吧。

7. 源代码

源代码直达: http://download.csdn.net/detail/legendof1991/7348941

【cocos2d-x制作别踩白块儿】第九期:游戏计时功能(附源代码)的更多相关文章

  1. 【cocos2d-x制作别踩白块儿】第一期:游戏介绍

    这一系类文章.我们将来分析时下最火的一款游戏 -- 别踩白块儿. 无图无真相,先上图 这就是我们终于要完毕项目的效果图. 游戏刚開始的最以下有一栏为黄色,紧接着上面每一行都是有一个黑色块,其余为白色块 ...

  2. 手摸手带你实现 小游戏<别踩白块儿 -- 内有游戏链接>

    别踩白块儿 使用(白鹭引擎)Egret编写的游戏 游戏地址 准备工作 了解白鹭引擎 并安装编写工具 安装游戏引擎 安装Egret Wing3 创建项目 创建项目可以选择不同版本的引擎,创建成功之后还可 ...

  3. 初学JS——利用JS制作的别踩白块儿(街机模式) 小游戏

    这个是上个星期5写的了,当时是突然想写个游戏,就想到了别踩白块儿,当时的想法是 可能普通模式的别踩白块儿因为他的“块儿”是滚动的向上这种,以我目前会的技术想不出怎么写, 但是如果是街机模式,通过你每按 ...

  4. 别踩白块儿游戏源码Android版

    这个项目有带说明文档,大家可以看看源码附件的说明文档吧,“别踩白块儿”是目前非常火的一款游戏,游戏非常简单刺激.关于具体怎么火法怎么玩我就不多说了,相信看到本文的朋友们都非常地清楚. 什么游戏火,我们 ...

  5. HTML--JS练习小游戏(别踩白块儿)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. jQuery实践-别踩白块儿网页版

    ▓▓▓▓▓▓ 大致介绍 终于结束了考试,放假回家了.这次的别踩白块儿网页版要比之前做的 jQuery实践-网页版2048小游戏 要简单一点,基本的思路都差不多. 预览:别踩白块网页版 这篇博客并不是详 ...

  7. 用Canvas写一个简单的游戏--别踩白块儿

    第一次写博客也不知怎么写,反正就按照我自己的想法来吧!怎么说呢?还是不要扯那些多余的话了,直接上正题吧! 第一次用canvas写游戏,所以挑个简单实现点的来干:别踩白块儿,其他那些怎么操作的那些就不用 ...

  8. Python自动玩"别再踩白块了"小游戏

    开发工具 Python版本:3.6.4 相关模块: numpy模块: CV2模块: pyautogui模块: pyscreenshot模块: 以及一些Python自带的模块. 环境搭建 安装Pytho ...

  9. JS实现别踩白块小游戏

    最近有朋友找我用JS帮忙仿做一个别踩白块的小游戏程序,但他给的源代码较麻烦,而且没有注释,理解起来很无力,我就以自己的想法自己做了这个小游戏,主要是应用JS对DOM和数组的操作. 程序思路:如图:将游 ...

随机推荐

  1. 自动ftp 上传

    #!/bin/sh ftp -n<<END_FTP open 192.168.1.4 user codfei duibuqi //用户名codfei 密码duibuqi binary pr ...

  2. PHP利用rand(1,100)函数产生10个1~100之间的随机数

    //echo rand(1,100); $max=0; $min=100; for($i=0;$i<=9;$i++){ $rand[$i]=rand(1,100); if($rand[$i]&g ...

  3. java版云笔记(三)

    登录与注册写好了下来就是主页,今天写的是主页加载时笔记本列表的显示,ajax是固定的就不重点说了.主要说一下jQuery.data() 函数和jQuery.on() 函数. 注:这个项目的sql文件, ...

  4. C# 使用UDP组播实现局域网桌面共享

    最近需要在产品中加入桌面共享的功能,暂时不用实现远程控制:参考了园子里的一些文章,加入了一些自己的修改. 需求:将一台机器的桌面通过网络显示到多个客户端的屏幕上,显示内容可能为PPT,Word文档之类 ...

  5. dubbo 搭建开发环境

    本文是基于maven的,预先使用,先装maven. dubbo是一个分布式服务框架,提供一个SOA的解决方案.简单的说,dubbo就像在生产者和消费者中间架起了一座桥梁,使之能透明交互. 本文旨在搭建 ...

  6. 【BZOJ 4148】 4148: [AMPPZ2014]Pillars (乱搞)

    4148: [AMPPZ2014]Pillars Time Limit: 5 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 100  Solve ...

  7. java 软引用,弱引用,强引用

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 强引用 ,有用的对象. 强引用 不会被回收. 软引用,有用 但不是必须的对象. 系统在发 ...

  8. 51nod1380 夹克老爷的逢三抽一

    问题等价于选出$n / 3$个不相邻元素是权值和最大 这是一个经典贪心问题,同种树,拿堆维护即可,复杂度$O(n \log n)$ #include <queue> #include &l ...

  9. [CODE FESTIVAL 2016]Problem on Tree

    题意:给一棵树,对于一个满足以下要求的序列$v_{1\cdots m}$,求最大的$m$ 对$\forall1\leq i\lt m$,路径$(v_i,v_{i+1})$不包含$v$中除了$v_i,v ...

  10. HDU 4619 Warm up 2 最大独立集

    Warm up 2 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4619 Description Some 1×2 dominoes are pla ...