【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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MapReduce编程案例系列篇(01-15)

    MapReduce编程案例系列篇(01-15)由于本人最开始接触大数据工作,主要以写MapReduce程序为主,虽然现在有流行的言论称MapReduce这种运行很慢的分布式计算编程框架将要被各种内存计算框架取代。但是MapRedcue也会吸收很多流行的内存计算的各种优点,我相信,将来,MapReduce绝对不会沦落到要淘汰的地步。甚至会后来居上。在此,本人总结一篇关于MapReduce编程的各种典型应用场景编程案例,便于大家查阅学习…

  • 程序员为什么不喜欢去做外包_外包程序员的出路

    程序员为什么不喜欢去做外包_外包程序员的出路做IT的一定对于外包公司很熟悉,就算没做过,想必也是经常听说,说实话在行业内是存在鄙视链的,而外包公司往往在最低端。很多人都在四处问:“软件外包公司到底能不能去”?到底能不能学到真正的技术?我来为大家详细梳理一下这个问题。想要知道外包公司到底值不值得去,我们就应该了解外包公司的概念是什么?不仅仅是IT行业有软件外包公司,在很多行业中,外包公司的数量也都是最多的。外包的工作形式分为两种:‍外包公司承接甲方的项目,了解需求后拿回自己的公司做项目,程序员按照客户的需求把代码写好,最终完成项目,外包

  • 学计算机我后悔了(计算机专业初级书籍)

    大家好,我是小林哥。平日里,大家都喊程序员加班多很辛苦,动不动就掉头发,但干的还是很香的,毕竟大多数公司钱还是给的很到位的,今年毕业应届生的我见到好多动不动就月薪20K~30K的,真让人两眼泪酸酸,当然这离不开他们大学期间的努力。讲真,没什么家庭背景的人,选择当程序员确实是比较好的选择了,原因有二:首先,当今互联网、AI人工智能、大数据等都是高速发展的行业,自然人才需求很多,薪资也相对其他传统行业高;第二,纯粹看你技术能力,只要自己愿意付出努力,技术能力肯定会慢慢提高上来,而且现在比起几十年

  • mybatis返回map结果集 key value_java map.entry

    mybatis返回map结果集 key value_java map.entry原文:http://blog.csdn.net/sou_liu/article/details/47755635最近需要用到Mybatis中查询结果集为Map的功能,查了好多资料,最终搞定。其实只需要重写ResultHandler接口,,然后用SqlSession的select方法,将xml里面的映射文件的返回值配置成HashMap就可以了。具体过程如下1、先看看

  • Html 设置整个页面的背景颜色

    Html 设置整个页面的背景颜色在index.css中添加body{background:#ffffff}设置颜色为白色也就是给index.html设置了body的颜色,然后就可以看到整个html页面的颜色就成了白色。

  • C# Dictionary通过Value找Key[通俗易懂]

    C# Dictionary通过Value找Key[通俗易懂]Dictionary<string,string>ActiveName=newDictionary<string,string>();for(inti=0;i<10;i++){ActiveName.Add(“”,””);}stringa=””;intindexSARFKSCIActive=ActiveName.Values.ToList().IndexOf(strValue);if(indexSARFKSCIActive>=0

发表回复

您的电子邮箱地址不会被公开。

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