【问题标题】:Battleships game - Random co-ordinates c++战舰游戏 - 随机坐标 c++
【发布时间】:2014-03-23 10:55:16
【问题描述】:

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

【问题讨论】:

  • 您可能希望格式化您的代码,以便其他人可以阅读并提供“不会运行”之外的问题描述
  • 谢谢,我又看了一遍。我已经意识到为什么这不起作用..我应该使用指针来检查随机数吗?我对此很陌生,所以任何提示都会有很大帮助。
  • 请准确解释您要做什么。我已经设法让您的代码达到可以运行的程度,但我不知道我得到的输出应该是什么意思。

标签: c++ random


【解决方案1】:

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

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

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

因此,x 和 y 的有效范围实际上是在 0 和 4 之间,您是否写过,但是 rand() % 5 + 1 给您一个介于 1 和 5 之间的随机整数。所以您可能不会初始化所有项目二维数组,或损坏的内存。

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

希望这会有所帮助。

【讨论】:

  • 谢谢,如果我生成了一个随机坐标,H 应该是我运行程序时显示给我的一个字符
  • 因此应该是'H'。
  • 谢谢,我已经更改了代码,但不太确定如何停止坐标重复。看看上面的编辑
  • 你应该做一个while循环,而不是做一个长度为5的for循环。您应该检查arr[x][y] 中的值 分配它。如果它已经是'S',则不要增加a。不然就是新位置了,你可以放心去。
【解决方案2】:
#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.

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

【讨论】:

  • 我正在尝试生成 5 个随机坐标。 H 只是为了向我展示我是否生成了它们。我现在可以看到我必须将代码 int randNum = (rand() % 5) + 1; int randNum2 = (rand() % 5) + 1;在循环之外并使用指针检查 if 语句
猜你喜欢
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
相关资源
最近更新 更多