我想制作一个游戏来测试我的C++技能,并且在游戏中我使用方法函数定义attack()创建了一个名为Player的类。它打印出基于玩家方法变量一个随机字符串,然后它要求玩家输入尽可能少的时间字符串可能:不能输入时间:C++
//definitions for Player
int Player::attack()
{
std::cout << "You are now attacking. \n";
std::cout << "You must enter this string in as little time as possible:";
std::string r = randStr(wordc);
std::cout << r << "\n";
std::string attack;
double seconds_since_start;
time_t start = time(0);
while (true)
{
std::cin >> attack;
if (attack == r) {break;}
seconds_since_start = difftime(time(0), start);
}
std::cout << "You typed the word in " << seconds_since_start << "seconds\n";
}
它不工作,我已经到处找一个答案。它只是返回无意义的随机数字。当我看到有人使用difftime()函数时,他们总是将tm结构转换为time_t变量,然后将其作为第二个参数。你需要使用这个吗? difftime()函数返回什么类型的数据?我究竟做错了什么?它是编译器吗?我非常感谢你的帮助。
你可以找到'difftime一些文档()'[这里](http://en.cppreference.com/w/cpp/chrono/c/difftime)。但对于C++,您应该更喜欢['chrono'](http://en.cppreference.com/w/cpp/header/chrono)。 – wally
可能您应该尝试使用[参考文档](http://en.cppreference.com/w/c/chrono/difftime)中给出的示例。 –
如果用户在第一次尝试时输入了正确的字符串,则不用设置'seconds_since_start'即可跳出循环。即使用户不这样做,您仍然不会将最后的成功尝试纳入测量。将'seconds_since_start'赋值移至循环后面的点。 –