C++ 战舰游戏-随机坐标c++;

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;

好的,我修正了我的密码。。我可以生成5个随机坐标并将它们保存在数组中,但我需要确保坐标不会重复。我试图将每个坐标保存在一个单独的数组中,并使用if语句,但我不知道如何做到这一点。有人能给我一些提示吗?这是我到目前为止的代码

#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
�����