gpt4 book ai didi

c++ - 我的简单游戏的计时器非常不... C++

转载 作者:行者123 更新时间:2023-11-28 02:34:20 25 4
gpt4 key购买 nike

所以这是来自之前帖子的同一款游戏(链接是 Here )。那篇文章的标题是“C++ 时钟不工作”,我已经修好了时钟,“万岁!”。现在我用来计算持续时间的过程似乎被打破了。我总是得到 'x.y'e-05,时间应该以秒为单位,但计时器在 'x.y'e-05 之前停止。 05 是否也意味着它在基数 8 中?如果是为什么???

我确信我缺少一个非常简单的解决方案。任何答案将不胜感激...

代码:

          do {
//Procedere For Each Round

clock_t start;

//Clock
start = clock();

cout<<"The number is: "<< actualNumber<<endl;
getline(cin, numberGuessed);
intNumberGuessed = stoi(numberGuessed);

clock_t finish;
finish = clock();

double elapsed = (double)(finish-start);


duration = elapsed/CLOCKS_PER_SEC;

cout<<"The Duration Is: "<< duration<<endl; //FOR TESTING...

//Test User's input

//timeForInput is chosen earlier and is either 1,2,or 5.
if((intNumberGuessed == actualNumber) && (duration <= (timeForInput/100000))){
score += 1;
gameOver = 0;

} else if ((intNumberGuessed != actualNumber) || (duration >= (timeForInput/100000))) {
gameOver = 1;
}

//Reset Number
actualNumber = rand() % 4 + 1;

//Reset Clock


} while (gameOver != 1);
}

cout<<"You Failed!"<<endl;
sleep(1);
cout<<"Your Score Was: "<<score<<endl;

return 0;

最佳答案

问题是 clock() 并没有像您认为的那样工作。您的印象是 clock() 返回一个表示挂钟时间的值(并非不合理,给定函数名称),但 clock() 实际上返回的是总时间的统计 当您的程序有一直在 CPU 核心上积极执行。也就是说,任何时候您的程序“休眠”(例如,当它等待输入时)都不会导致 clock() 返回的值增加。作为man page说:

The clock() function returns an approximation of processor time used by the program.

这就解释了为什么您要测量一个非常小的数字(x.ye-05 是科学记数法,即 x.y * 10^-5 秒)——您的程序执行的时间非常少,因为在大部分时间间隔内您都在测量程序睡着了,阻塞在 getline() 中等待用户输入内容。

所以 clock() 不会为您的目的工作。你最好调用例如gettimeofday() 并将其结果转换为以微秒为单位的值,如下所示:

// Returns a "current wall clock time" value, in microseconds
unsigned long long GetWallClockTimeInMicroseconds()
{
struct timeval tv;
gettimeofday(&tv, NULL);
return ((unsigned long long)tv.sec)*1000000 + tv.tv_usec;
}

关于c++ - 我的简单游戏的计时器非常不... C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com