【cocos2d-x制作别踩白块儿】第九期:游戏计时功能(附源代码)
游戏没有计时,不是坑爹吗?
这一期,我们将来加入游戏计时功能。
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. 源代码
【cocos2d-x制作别踩白块儿】第九期:游戏计时功能(附源代码)的更多相关文章
- 【cocos2d-x制作别踩白块儿】第一期:游戏介绍
这一系类文章.我们将来分析时下最火的一款游戏 -- 别踩白块儿. 无图无真相,先上图 这就是我们终于要完毕项目的效果图. 游戏刚開始的最以下有一栏为黄色,紧接着上面每一行都是有一个黑色块,其余为白色块 ...
- 手摸手带你实现 小游戏<别踩白块儿 -- 内有游戏链接>
别踩白块儿 使用(白鹭引擎)Egret编写的游戏 游戏地址 准备工作 了解白鹭引擎 并安装编写工具 安装游戏引擎 安装Egret Wing3 创建项目 创建项目可以选择不同版本的引擎,创建成功之后还可 ...
- 初学JS——利用JS制作的别踩白块儿(街机模式) 小游戏
这个是上个星期5写的了,当时是突然想写个游戏,就想到了别踩白块儿,当时的想法是 可能普通模式的别踩白块儿因为他的“块儿”是滚动的向上这种,以我目前会的技术想不出怎么写, 但是如果是街机模式,通过你每按 ...
- 别踩白块儿游戏源码Android版
这个项目有带说明文档,大家可以看看源码附件的说明文档吧,“别踩白块儿”是目前非常火的一款游戏,游戏非常简单刺激.关于具体怎么火法怎么玩我就不多说了,相信看到本文的朋友们都非常地清楚. 什么游戏火,我们 ...
- HTML--JS练习小游戏(别踩白块儿)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jQuery实践-别踩白块儿网页版
▓▓▓▓▓▓ 大致介绍 终于结束了考试,放假回家了.这次的别踩白块儿网页版要比之前做的 jQuery实践-网页版2048小游戏 要简单一点,基本的思路都差不多. 预览:别踩白块网页版 这篇博客并不是详 ...
- 用Canvas写一个简单的游戏--别踩白块儿
第一次写博客也不知怎么写,反正就按照我自己的想法来吧!怎么说呢?还是不要扯那些多余的话了,直接上正题吧! 第一次用canvas写游戏,所以挑个简单实现点的来干:别踩白块儿,其他那些怎么操作的那些就不用 ...
- Python自动玩"别再踩白块了"小游戏
开发工具 Python版本:3.6.4 相关模块: numpy模块: CV2模块: pyautogui模块: pyscreenshot模块: 以及一些Python自带的模块. 环境搭建 安装Pytho ...
- JS实现别踩白块小游戏
最近有朋友找我用JS帮忙仿做一个别踩白块的小游戏程序,但他给的源代码较麻烦,而且没有注释,理解起来很无力,我就以自己的想法自己做了这个小游戏,主要是应用JS对DOM和数组的操作. 程序思路:如图:将游 ...
随机推荐
- untiy3d学习笔记
Unity3d 记录 1.63讲 主要讲了menicam 从3D软件里面导出过后,注意如果是人物模型命名一定要非常清晰并且对称.选择到模型后等到到humanoid后可以使用menicam.然后使用me ...
- fail2ban安全设置
1.先安装fail2ban服务包(这里我采用的是fail2ban-0.8.14.tar.gz) 2.解压安装包 cd /data/software tar xzf fail2ban-0.8.14.ta ...
- DB2:FETCH FIRST 1 ROWS ONLY
DB2:FETCH FIRST ROWS ONLY,在Oracle中使用where rownum=1代替 DB2: SELECT INSTORAGENO FROM ( SELECT max(AUDIT ...
- csu 1552(米勒拉宾素数测试+二分图匹配)
1552: Friends Time Limit: 3 Sec Memory Limit: 256 MBSubmit: 723 Solved: 198[Submit][Status][Web Bo ...
- Go语言入门之切片的概念
切片是对数组的抽象,对切片的改变会改变原数组的值 package main import "fmt" func test6(){ arr:=[...],,,,,,,,,,} s1: ...
- django rest_framework比较完整的自定义实现样例
里面有自定义的更新策略, 序列化时,考虑nest及显示. 很有参考意义. 然后,前端,可以考虑用angular.js或vue.js实现. 每次以token进行认证. url.py router = D ...
- 【C#日期系列(二)】--C#获取一段时间有多少个星期几
#region 统计一段时间内有多少个星期几 ///<summary> ///统计一段时间内有多少个星期几 ///</summary> ///<param name=&q ...
- ASP.NET WebAPI 02-Action的选择(一)
在WebAPI对于Action的选择主要经过:Action方法名匹配,Http方法匹配,参数匹配三步. Http方法匹配 WebAPI提供了三种Http方法的选择方式,分别是:方法前缀,AcceptV ...
- bzoj 1856 卡特兰数
复习了一下卡特兰数.. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #d ...
- 牛客网 牛客练习赛43 F.Tachibana Kanade Loves Game-容斥(二进制枚举)+读入挂
链接:https://ac.nowcoder.com/acm/contest/548/F来源:牛客网 Tachibana Kanade Loves Game 时间限制:C/C++ 1秒,其他语言2秒 ...