C++ 战舰游戏-随机坐标c++;
好的,我修正了我的密码。。我可以生成5个随机坐标并将它们保存在数组中,但我需要确保坐标不会重复。我试图将每个坐标保存在一个单独的数组中,并使用if语句,但我不知道如何做到这一点。有人能给我一些提示吗?这是我到目前为止的代码C++ 战舰游戏-随机坐标c++;,c++,random,C++,Random,好的,我修正了我的密码。。我可以生成5个随机坐标并将它们保存在数组中,但我需要确保坐标不会重复。我试图将每个坐标保存在一个单独的数组中,并使用if语句,但我不知道如何做到这一点。有人能给我一些提示吗?这是我到目前为止的代码 #include <iostream> #include <ctime> #include <stdlib.h> using namespace std; int main() { int *x, *y; int a, b;
#include <iostream>
#include <ctime>
#include <stdlib.h>
using namespace std;
int main()
{
int *x, *y;
int a, b;
int randNum2, randNum;
char arr[5][5]={{0}};
srand(time(0));
x = &randNum;
y = &randNum2;
for( a = 0 ; a < 5 ; a++ ){
randNum = (rand() % 5);
randNum2 = (rand() % 5);
arr[*x][*y] = 'S';
}
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int*x,*y;
INTA,b;
int randNum2,randNum;
char arr[5][5]={{0};
srand(时间(0));
x=&randNum;
y=&randNum2;
对于(a=0;a<5;a++){
randNum=(rand()%5);
randNum2=(rand()%5);
arr[*x][*y]='S';
}
返回0;
}
您的代码无法工作的原因有很多
char arr[5][5] = {{255}};
很可能会执行您没有预料到的操作:它仅将arr[0][0]
初始化为255
,然后将所有其他值初始化为0
因此,x
和y
的有效范围实际上在0和4之间,您写道,但是rand()%5+1
给出了一个介于1和5之间的随机整数。因此,您可能没有初始化二维数组的所有项,或者内存损坏
对于其余代码,它不是自给自足的。什么是H
希望这有帮助
#include <iostream>
#include <ctime>
#include <stdlib.h>
using namespace std;
int main()
{
int x, y;
char arr[5][5]={{255}};
srand(time(0));
for(x = 0; x < 5; x++)
{
for(y = 0; y < 5; y++)
{
int randNum = (rand() % 5) + 1;
int randNum2 = (rand() % 5) + 1;
if(x==randNum && y==randNum2)
cout<< (arr[x][y] = 'H');
else
cout<< (arr[x][y] = 255);
}
cout<<endl;
}
return 0;
}
…等等,有时没有H
现在,请告诉我这应该是什么。您可能希望格式化您的代码,以便其他人可以阅读它,并提供“将不运行”之外的问题描述。谢谢,我又看了一遍。我意识到为什么这行不通。。我应该使用指针检查随机数吗?我对这方面还不太熟悉,所以任何提示都会很有帮助。请确切地解释一下你想做什么。我已经设法让你的代码运行到某个点,但我不知道我得到的输出应该是什么意思。谢谢,如果我生成了一个随机坐标,那么H是我运行程序时要显示的字符,因此它应该是
'H'
。谢谢,我更改了代码,但不太确定如何阻止坐标重复。看看上面的edit,不要对长度为5的循环执行,而应该执行while循环。在赋值之前,应检查arr[x][y]
中的值。如果它已经是一个's'
,不要增加a
。否则,这是一个新的位置,你可以安全地去。我试图生成5个随机坐标。H只是为了显示我是否生成了它们。现在我可以看到,我必须将代码int randNum=(rand()%5)+1;int randNum2=(rand()%5)+1;并使用指针检查if语句
�����
�����
��H��
�����
�����
�����
��H��
���H�
����H
�����