前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【cocos2d-x制作别踩白块儿】第九期:游戏计时功能(附源代码)

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

作者头像
全栈程序员站长
发布2022-07-09 10:46:23
3220
发布2022-07-09 10:46:23
举报
文章被收录于专栏:全栈程序员必看

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

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

1. 定义变量和函数

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

代码语言:javascript
复制
	long startTime;
	bool timeRunning;

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

代码语言:javascript
复制
	//開始计时
	void startTimer();

	//结束计时
	void stopTimer();

	virtual void update(float dt);

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

2. 详细实现三个函数

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

代码语言:javascript
复制
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。

代码语言:javascript
复制
                                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. 产生真正的随机数

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

代码语言:javascript
复制
srand(time(NULL));

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

6. 改动分辨率

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

代码语言:javascript
复制
    glview->setFrameSize(320,480);
    glview->setDesignResolutionSize(320,480,ResolutionPolicy::SHOW_ALL);

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

代码语言:javascript
复制
    if(!glview) {
        glview = GLView::create("My Game");
        director->setOpenGLView(glview);
    }

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

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

7. 源代码

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年11月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 定义变量和函数
  • 2. 详细实现三个函数
  • 3. 调用函数
  • 4. 执行项目
  • 5. 产生真正的随机数
  • 6. 改动分辨率
  • 7. 源代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档