c - 我试图将随机整数分配给结构成员,但它无法正常工作

标签 c arrays random position assign

我正在做一项任务,我必须将玩家随机放置在具有随机坐标的 field 上,但这些坐标必须是唯一的,否则必须重新生成。我正在尝试随机化整数并将它们分配给结构成员。然而,根据我的教授的说法,我现在所做的似乎并不能正常工作。这是结构:

struct player {

   int x;
   int y;
   int direction;
   int id;
   int presence;
};

这是我的两个数组,一个用于场上,另一个用于场上球队的规模:

 int field [25][25];
 struct player team [25];

这是函数中我可能犯错误的部分:

int main (){

   int i;
   int j;
   int randx, randy;
   int SIZE_TEAM = 25;


   srand (time(NULL));

    for (i = 0; i < SIZE_TEAM; i++){

       randx = (rand () % 25); <-- Randomizing row position
       randy = (rand () % 25); <-- Randomizing column position

       while (field[randx][randy] != 0){ <-- While loop occurs if position in field is taken.
            randx = (rand () % 25);      <-- In this case, the coordinates are regenerated.
            randy = (rand () % 25);
       }
     team [i].x = randx; <--Where the mistake might lie
     team [i].y = randy; <--Where the mistake might lie
     team [i].id = i + 1;
     team [i].presence = 1;
     field [team [i].x][team [i].y] = team [i].id; <--Where the mistake might lie
  }

我不确定在将随机生成的值分配给相关玩家后应该如何“锁定”它们。您认为我为球员分配位置的算法不正确吗?

另外,这是我发布的另一个问题的删节版本,但那个问题太长,没有人愿意帮助我。

最佳答案

嗯 --- 我不确定这是否是问题的真正原因 --- 但我注意到一个问题:

没有地方可以初始化字段上的位置值。所有变量都需要在第一次使用其值之前进行初始化。您有一个名为“field”的二维数组,其中您假设的每个元素一开始都是零——但您不知道这一点,因为您从未将这些元素设置为零。您需要一段代码,在开始将球员放到场上之前,将此二维数组的所有元素设置为其初始值。

我可能会补充(作为旁白)关于此声明:

int SIZE_TEAM = 25;

与其在主函数中将其设置为整数,不如将其声明为全局宏——就像这样......

int field [25][25];
#define SIZE_TEAM 25
struct player team [SIZE_TEAM];

这样,如果您需要更改团队规模,则只需更改一处而不是两处。

关于c - 我试图将随机整数分配给结构成员,但它无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21442786/

相关文章:

c - SSE:使用_mm_add_epi32看不到加速

c - 矩阵中第三小的数及其加法

arrays - LeetCode 查找数组中所有消失的数字问题

algorithm - 我怎样才能增加这个PRNG的周期?

c - 提取公共(public) IP 地址

在 C 中将字符数组转换为整数数组以进行 ISBN 验证

javascript - 这些东西中的一个与另一个不一样......在一个数组中?

matlab - 如何在octave/matlab中从均值和st.dev向量生成多重随机分布?

Java:如何随机遍历数组?

c - 使用 GDB 在 Eclipse 中调试 C 程序时的奇怪行为