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

【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. 执行项目 

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

<span>【cocos2d-x制作别踩白块儿】第九期:游戏计时功能(附源代码)</span>

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);
    }

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

<span>【cocos2d-x制作别踩白块儿】第九期:游戏计时功能(附源代码)</span>

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

7. 源代码

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119169.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 6200 uboot测试版分析(四)

    6200 uboot测试版分析(四)

    2021年8月18日
    55
  • SurfaceView详解和使用

    SurfaceView详解和使用双缓冲机制不管是什么操作系统,都有个“图像数据缓冲区”,存放颜色数据,每隔一段时间,把这些颜色数据投射到显示器上,我们就看到了各种各样的画面。对于应用程序来说,只需要把想要展示的内容存放到“图像数据缓

    2022年7月3日
    23
  • UML工具:EA(Enterprise Architect)

    UML工具:EA(Enterprise Architect)EA跟RationalRose一样都仅仅是一个UML建模软件,随着对EA的熟悉发现EA的功能太强大了。EA跟RationalRose大不一样,RationalRose只是实现对软件的建模即构建系统的UML模型,而EA却不仅仅是实现这些功能。对于一个软件设计者来说,从需求分析到概要设计、详细设计、数据库设计到测试、发布、部署等一系列软件设计必须的操作都可以在EA中完成。可以说只需要一个EA就可…

    2022年7月12日
    19
  • kubeadm 常用命令

    kubeadm 常用命令kubeadm 概述 Kubeadm 是一个工具 它提供了 kubeadminit 以及 kubeadmjoin 这两个命令作为快速创建 kubernetes 集群的最佳实践 安装官方参考 kuadmin 安装任务 kubeadminit 启动引导一个 Kubernetes 主节点 kubeadmjoin 启动引导一个 Kubernetes 工作节点并且将其加入到集群 kubeadmupgra 更新 Kubernetes 集群到新版本 kubeadmconfi 如果你使用 kube

    2025年9月17日
    2
  • shell脚本编程100例pdf_linux基础命令表

    shell脚本编程100例pdf_linux基础命令表https://blog.csdn.net/yugemengjing/article/details/82469785https://blog.csdn.net/yugemengjing/article/details/824697851、编写helloworld脚本#!/bin/bash#编写helloworld脚本echo”HelloWorld!”2、通过位置变…

    2022年10月4日
    4
  • 用 Javascript 生成二维码

    用 Javascript 生成二维码用Javascript生成二维码#javascript#Webdev的#节点#设计大家好????,这将是一篇很短的文章,我将展示如何为JavaScript中的任何内容生成二维码。显然,我不会从头开始实现所有内容,当我们在JavaScript中有大量有用的库时,为什么要这样做。我遇到了这个很棒的轻量级库,或者你可以说一个简单的脚本qrcodejs。它非常易于使用并且也很可靠。执行 下载此zip文件:qrcodejs 提取它。 现在您可以…

    2022年10月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号