前端之家收集整理的这篇文章主要介绍了
Cocos2d-2.x_使用系统时间来获取随机数,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
#ifndef __HELLO_WORLD_H__
#define __HELLO_WORLD_H__
#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT;
class HelloWorld : public cocos2d::CCLayer
{
public:
HelloWorld();
virtual ~HelloWorld();
static cocos2d::CCScene* scene();
virtual bool init();
CREATE_FUNC(HelloWorld);
};
#endif
#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"
HelloWorld::HelloWorld()
{
}
HelloWorld::~HelloWorld()
{
}
CCScene* HelloWorld::scene()
{
CCScene *scene = CCScene::create();
HelloWorld *layer = HelloWorld::create();
scene->addChild(layer);
return scene;
}
bool HelloWorld::init()
{
if (!CCLayer::init())
{
return false;
}
//获取系统时间
//time_t是long类型,精确到秒,通过time()函数可以获得当前时间和1970年1月1日零点时间的差
time_t tt;
time(&tt);
struct tm * now;
//获得本地时间
now = localtime(&tt);
CCLog("%d/%d/%d %d:%d:%d",now->tm_year + 1900,now->tm_mon + 1,now->tm_mday,now->tm_hour,now->tm_min,now->tm_sec);
//产生随机数
//CCRANDOM_0_1()获取一个0-1之间的float类型数,包括0和1
//通过CCRANDOM_0_1()获得的随机数其实并不是随机的,要想获取接近真实的随机数需要设置一个种子
//比较常用的方法是以当前时间为种子,在cocos2d-x中提供了获取时间的方法,而且获取的时间更精确
//cc_timeval是个结构体,里边有俩个变量,一个是以秒为单位的,一个是以微妙为单位的
cc_timeval tv;
CCTime::gettimeofdayCocos2d(&tv,NULL);
//都转化为毫秒
unsigned long reed = tv.tv_sec * 1000 + tv.tv_usec / 1000;
//srand()中传入一个随机数种子
srand(reed);
//如果要获得a~b之间的一个随机数,则应该是CCRANDOM_0_1*(b-a)+a,传入的参数就是a和b
int randomValue = CCRANDOM_0_1()*(10-0)+0;
CCLog("random = %d",randomValue);
return true;
}
原文链接:https://www.f2er.com/cocos2dx/343176.html