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

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

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. 2、gitlab 新建项目

    一.创建项目 1.访问gitlab并登录 http://git.xh.com/ 2.点击 Projects -> Starred projects 每个版本的gitlab不太一样但位置都差不多 ...

  2. Codeforces 776C - Molly's Chemicals(思维+前缀和)

    题目大意:给出n个数(a1.....an),和一个数k,问有多少个区间的和等于k的幂 (1 ≤ n ≤ 10^5, 1 ≤ |k| ≤ 10, - 10^9 ≤ ai ≤ 10^9) 解题思路:首先, ...

  3. [loj6039]「雅礼集训 2017 Day5」珠宝 dp+决策单调性+分治

    https://loj.ac/problem/6039 我们设dp[i][j]表示考虑所有价值小于等于i的物品,带了j块钱的最大吸引力. 对于ci相同的物品,我们一定是从大到小选k个物品,又发现最大的 ...

  4. Download failed : Oracle JDK 7 is NOT installed,解决oracle jdk7的问题

    先了解下概念: jdk(java development kit),就是java的开发工具集,顾名思义就是做开发用的,其中包括javac,也就是java compiler等.jre(java runt ...

  5. python开发学习-day06(模块拾忆、面向对象)

    s12-20160130-day06 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  6. [实战]MVC5+EF6+MySql企业网盘实战(19)——BJUI和ztree

    写在前面 上周在博客园看到一篇通用权限系统的文章,看到他那个UI不错,这里就研究了一下,将网盘的UI修改为他的那个,感兴趣的可以参考:http://b-jui.com/ 系列文章 [EF]vs15+e ...

  7. loadrunner脚本编写http协议

  8. Ubuntu编译安装nginx,php,mysql

    摘要: 整理的Ubuntu编译安装nginx,php,mysql的步骤,主要来自对驻云的sh-1.4.1中脚本的整理,随时代进步,内容中的软件或者命令请自行更新 目录准备 创建用户 userdel w ...

  9. 洛谷P3168 [CQOI2015]任务查询系统 [主席树,差分]

    题目传送门 任务查询系统 题目描述 最近实验室正在为其管理的超级计算机编制一套任务管理系统,而你被安排完成其中的查询部分.超级计算机中的任务用三元组(Si,Ei,Pi)描述,(Si,Ei,Pi)表示任 ...

  10. java getenv getProperties区别

    网上很多使用的是getProperties.说获得系统变量,但是其实不正确.getProperties中所谓的"system properties"其实是指"java s ...