战舰游戏 - 随机协调c ++

时间:2014-03-23 10:55:17

标签: c++ random

好的我已经修复了我的代码..我可以生成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;
}

2 个答案:

答案 0 :(得分:0)

您的代码无法运行的原因有很多!

char arr[5][5] = {{255}};

很可能会做一些你没想到的事情:它只将arr[0][0]初始化为255,然后将所有其他值初始化为0

因此,xy的有效范围实际上在0到4之间,你写过,但是rand() % 5 + 1给你一个1到5之间的随机整数。所以你可以要么不初始化2-D阵列的所有项目,要么破坏内存。

对于剩余的代码,它不是自给自足的。 H应该是什么?

希望这有帮助。

答案 1 :(得分:0)

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

......等等,有时没有H.

现在你告诉我这应该是什么。