Cocos2d-x中獲取系統(tǒng)時間和隨機(jī)數(shù)實例
更新時間:2014年09月12日 09:31:51 作者:皂莢花
這篇文章主要介紹了Cocos2d-x中獲取系統(tǒng)時間和隨機(jī)數(shù)實例,本文代碼含有大量注釋來講解獲取系統(tǒng)時間和隨機(jī)數(shù)的方法,需要的朋友可以參考下
隨機(jī)數(shù)是我們在程序中經(jīng)常要用到的,cocos2d-x用CCRANDOM_0_1產(chǎn)生隨機(jī)數(shù),但我們最后給它傳入一個隨機(jī)數(shù)種子,這樣產(chǎn)生的隨機(jī)數(shù)才是真正的隨機(jī)數(shù),而這個種子就是我們一般使用的時間。下面通過代碼看看我們?nèi)绾螌崿F(xiàn)。

bool HelloWorld::init()
{
bool bRet = false;
do
{
CC_BREAK_IF(! CCLayer::init());
//獲取系統(tǒng)時間
//time_t是long類型,精確到秒,通過time()函數(shù)可以獲得當(dāng)前時間和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);
//產(chǎn)生隨機(jī)數(shù)
//CCRANDOM_0_1()獲取一個0-1之間的float類型數(shù),包括0和1
//通過CCRANDOM_0_1()獲得的隨機(jī)數(shù)其實并不是隨機(jī)的,要想獲取接近真實的隨機(jī)數(shù)需要設(shè)置一個種子
//比較常用的方法是以當(dāng)前時間為種子,在cocos2d-x中提供了獲取時間的方法,而且獲取的時間更精確
//cc_timeval是個結(jié)構(gòu)體,里邊有倆個變量,一個是以秒為單位的,一個是以微妙為單位的
cc_timeval tv;
CCTime::gettimeofdayCocos2d(&tv,NULL);
//都轉(zhuǎn)化為毫秒
unsigned long reed = tv.tv_sec*1000+tv.tv_usec/1000;
//srand()中傳入一個隨機(jī)數(shù)種子
srand(reed);
this->schedule(schedule_selector(HelloWorld::random),1.0);
bRet = true;
} while (0);
return bRet;
}
//如果要獲得a~b之間的一個隨機(jī)數(shù),則應(yīng)該是CCRANDOM_0_1*(b-a)+a,傳入的參數(shù)就是a和b
int HelloWorld::getRandomNumber(int start,int end)
{
return CCRANDOM_0_1()*(end-start)+start;
}
void HelloWorld::random(float tm)
{
int random = this->getRandomNumber(0,10);
CCLog("random = %d",random);
}
相關(guān)文章
c語言獲取用戶輸入字符串是scanf和gets的區(qū)別詳解
今天小編就為大家分享一篇c語言獲取用戶輸入字符串是scanf和gets的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
C++數(shù)據(jù)結(jié)構(gòu)鏈表基本操作示例過程
這篇文章主要為大家介紹了C++數(shù)據(jù)結(jié)構(gòu)鏈表基本操作的示例過程有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11

