【cocos2d-x制作别踩白块儿】第九期:游戏计时功能(附源代码)
2014-07-02 17:07
441 查看
游戏没有计时,不是坑爹吗?
这一期,我们将来加入游戏计时功能。
stopTimer()函数先推断是否正在计时,假设有的话,就卸载update。
update函数用来计算时间差,而且显示出来。
当然是在点击黑色块后调用startTimer,点击绿色块后调用stopTimer。
这样子,就能让随机数真正的随机产生了。
记得要加入在例如以下代码的后面
这时候,我们再来执行一下项目,是不是舒服非常多了呢?
到这里为止,我们游戏的核心功能,就基本完毕了。赶紧拿起键盘,来敲写程序吧。
这一期,我们将来加入游戏计时功能。
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制作别踩白块儿】第九期:游戏计时功能(附源码)
- 【cocos2d-x制作别踩白块儿】第一期:游戏介绍
- 【cocos2d-x制作别踩白块儿】第一期:游戏介绍
- 【cocos2d-x制作别踩白块儿】第七期:实现游戏的逻辑
- 如何制作一个类似Tiny Wings的游戏 Cocos2d-x 2.1.4内含iOS版源代码
- 【cocos2d-x制作别踩白块儿】第八期:判断游戏结束
- 【cocos2d-x制作别踩白块儿】第六期:游戏交互实现
- 【cocos2d-x制作别踩白块儿】第一期:游戏介绍
- (译)使用cocos2d和box2d制作简单的platformer游戏
- (译)如何使用cocos2d和box2d来制作一个Breakout游戏:第一部分
- (译)如何使用cocos2d和box2d来制作一个Breakout游戏:第二部分(完)
- (译)加入敌人和战斗:如果使用cocos2d制作基于tiled地图的游戏:第三部分
- (译)如何使用cocos2d制作一个滑动图片游戏教程:第二部分(完)
- 【iOS-Cocos2d游戏开发之二十】精灵的基础知识点总汇(位图操作/贴图更换/重排z轴等)及制作简单遮盖层!
- 如何使用cocos2d制作基于tiled地图的游戏
- (译)如何使用cocos2d和box2d来制作一个Breakout游戏:第一部分
- (译)如何使用cocos2d制作基于tile地图的游戏教程:第一部分
- 【iOS-Cocos2d游戏开发之十七】灵活使用精灵可视区域(TextureRect)与锚点(anchorPoint),并结合可视区域与锚点制作进度条!
- 如何使用cocos2d-x制作一个山寨Angry Birds游戏:第一部分
- (译)如何使用cocos2d制作一个塔防游戏:引子