C++ 从';int';至';时间';还有一个错误
我得到了以下错误: 错误:从“int”到“time\t*”的转换无效 错误:初始化“time\u t time(time\u t*)”的参数1 我的代码是:C++ 从';int';至';时间';还有一个错误,c++,random,compiler-errors,C++,Random,Compiler Errors,我得到了以下错误: 错误:从“int”到“time\t*”的转换无效 错误:初始化“time\u t time(time\u t*)”的参数1 我的代码是: #include <iostream> #include <cstdlib> #include <ctime> #include <time.h> using namespace std; int main() { char Grid[5][5]; Grid[0][0] = 'P'; Gr
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <time.h>
using namespace std;
int main()
{
char Grid[5][5];
Grid[0][0] = 'P';
Grid[0][1] = '-';
Grid[0][2] = '-';
Grid[0][3] = '-';
Grid[0][4] = '-';
Grid[1][0] = '-';
Grid[1][1] = 'T';
Grid[1][2] = '-';
Grid[1][3] = '-';
Grid[1][4] = '-';
Grid[2][0] = '-';
Grid[2][1] = '-';
Grid[2][2] = '-';
Grid[2][3] = '-';
Grid[2][4] = '-';
Grid[3][0] = '-';
Grid[3][1] = '-';
Grid[3][2] = '-';
Grid[3][3] = 'T';
Grid[3][4] = '-';
Grid[4][0] = '-';
Grid[4][1] = '-';
Grid[4][2] = '-';
Grid[4][3] = '-';
Grid[4][4] = 'X';
cout<<"P = Player (you)"<<endl<<
"T = Trap (ouch!)"<<endl<<
"X = Treasure (X marks the spot)"<<endl<<
"Tell P where to go by using the commands 'right','left','up','down'."<<endl<<endl;
string command;
int x = 0;
int y = 0;
int a;
int b;
srand(time(a));
srand(time(b));
int enemy1 = rand()%4;
do
{
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
cout<<Grid[0][0]<<Grid[0][1]<<Grid[0][2]<<Grid[0][3]<<Grid[0][4]<<endl<<
Grid[1][0]<<Grid[1][1]<<Grid[1][2]<<Grid[1][3]<<Grid[1][4]<<endl<<
Grid[2][0]<<Grid[2][1]<<Grid[2][2]<<Grid[2][3]<<Grid[2][4]<<endl<<
Grid[3][0]<<Grid[3][1]<<Grid[3][2]<<Grid[3][3]<<Grid[3][4]<<endl<<
Grid[4][0]<<Grid[4][1]<<Grid[4][2]<<Grid[4][3]<<Grid[4][4]<<endl;
cout<<"Your command: ";
cin>>command;
cout<<endl;
if(command=="up")
{
Grid[(x-1)][y] = 'P';
x--;
Grid[(x+1)][y] = '-';
}
if(command=="down")
{
Grid[(x+1)][y] = 'P';
x++;
Grid[(x-1)][y] = '-';
}
if(command=="right")
{
Grid[x][(y+1)] = 'P';
y++;
Grid[x][(y-1)] = '-';
}
if(command=="left")
{
Grid[x][(y-1)] = 'P';
y--;
Grid[x][(y+1)] = '-';
}
if(x==4 && y==4)
{
if(command=="down")
{
Grid[4][4] = 'P';
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
cout<<Grid[0][0]<<Grid[0][1]<<Grid[0][2]<<Grid[0][3]<<Grid[0][4]<<endl<<
Grid[1][0]<<Grid[1][1]<<Grid[1][2]<<Grid[1][3]<<Grid[1][4]<<endl<<
Grid[2][0]<<Grid[2][1]<<Grid[2][2]<<Grid[2][3]<<Grid[2][4]<<endl<<
Grid[3][0]<<Grid[3][1]<<Grid[3][2]<<Grid[3][3]<<Grid[3][4]<<endl<<
Grid[4][0]<<Grid[4][1]<<Grid[4][2]<<Grid[4][3]<<Grid[4][4]<<endl;
cout<<"You win!"<<endl;
}
if(command=="right")
{
Grid[4][4] = 'P';
cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
cout<<Grid[0][0]<<Grid[0][1]<<Grid[0][2]<<Grid[0][3]<<Grid[0][4]<<endl<<
Grid[1][0]<<Grid[1][1]<<Grid[1][2]<<Grid[1][3]<<Grid[1][4]<<endl<<
Grid[2][0]<<Grid[2][1]<<Grid[2][2]<<Grid[2][3]<<Grid[2][4]<<endl<<
Grid[3][0]<<Grid[3][1]<<Grid[3][2]<<Grid[3][3]<<Grid[3][4]<<endl<<
Grid[4][0]<<Grid[4][1]<<Grid[4][2]<<Grid[4][3]<<Grid[4][4]<<endl;
cout<<"You win!"<<endl;
}
}
}
while(Grid[4][4] != 'P');
return 0;
}
你为什么要这样使用时间?函数声明如下:
time_t time ( time_t * timer )
传递一个int
而不是一个指向time\u t
的指针显然是一个错误,编译器会正确地进行投诉
假设您只需要
srand
的种子,只需使用time(NULL)
。如果确实需要在参数中设置该值,请将a
和b
变量设置为time\u t
,并使用time(&a)
。有关time
,.的更多信息,我几乎可以肯定您希望调用srand(time(NULL))
,并且只执行一次。它为伪随机数生成器设置了一个种子,使用实际时间是最常见的情况(每次运行应用程序时都不同,因此生成的数字的顺序不同)。获取您调用的实际时间time(NULL)
;如果希望将时间值存储在特定的time_t变量中,可以传递其指针,而不是NULL
此代码:
srand(time(NULL));
该代码:
time_t now;
time(&now);
srand(now);
甚至这个代码:
time_t now;
srand(time(&now));
是等效的(出于srand目的)。请以后将代码缩减到重现问题所需的必要部分,并省去所有不相关的内容。@Bob,“那”是指
srand(时间(空))代码>?您还可以使用srand(time(&a))
只要a
属于time\u t
类型,但是由于在srand
之后似乎没有使用a
,您可能只需要使用NULL
调用,就可以将a
和b
全部去掉。这一点很好。我把注意力集中在对srand
本身的调用上,而忽略了第二个调用的冗余+1.
time_t now;
srand(time(&now));