zoukankan      html  css  js  c++  java
  • 【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. 源代码


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







  • 相关阅读:
    Linux五种IO模型
    怎样理解阻塞非阻塞与同步异步的区别?
    .NET 框架 (转载)
    数组 反转
    排序 归并排序&逆序对
    快速寻找满足条件的2个数
    数组 寻找最大的第k个数
    字符串 删除字符串开始以及末尾的空白符,并把数组中间的多个空格(如果有)符转换为1个
    排序 快速排序
    java8常用api
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3820677.html
Copyright © 2011-2022 走看看