需要一个阵列分配

时间:2014-01-25 20:49:16

标签: c arrays double variable-assignment

我需要一份文件如下的作业的帮助:

  

你的任务是模拟两队九名队员之间的比赛。九个玩家的原因是为了促进从比赛场地到屏幕或输出文件的合理打印。   Smashball是在25乘25平方的场地上进行的。打印出游戏结果时,请务必打印出带有边框的字段。

     
      
  1. 游戏初始化
  2.         

    一个。使用随机数生成器将所有玩家随机放置在比赛场地中。如果随机过程产生两个开始于同一位置的玩家,则重新绘制新的随机位置,以便所有玩家从独特位置开始。

         

    湾使用随机数生成器为每个玩家生成初始运动方向。这项任务的四个动议选择是东,西,北和南。这些方向对应于每个运动员在比赛场地上的相应运动。

我的代码(到目前为止)如下:

#include <stdio.h>
#include <stdlib.h>

#define SIZE_AREA 25
#define SIZE_TEAM 25

int team [SIZE_TEAM];
int field [SIZE_AREA][SIZE_AREA];
int main (){

int i;
int j;

for (i = 0; i < SIZE_TEAM; i++){
team [i] = field [(rand() % 24)][(rand() % 24)];
}

enum move_direction {East, West, North, South};

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

这是不完整的,但我仍然在这里和那里遇到一些障碍:

  1. 如果随机过程产生两个在同一地点开始的玩家怎么办?我需要将一名球员的位置与其他球员的位置进行比较,看看它是否独一无二。如果没有,那么我必须重新绘制位置,但我如何在C中递归?如果重新绘制的位置仍然与其他玩家的位置重复,该怎么办?

  2. 游戏初始化部分要求我为玩家随机生成初始运动方向,但由于我将覆盖他们的位置,因此无法为玩家指定方向。如何在不覆盖初始位置的情况下为玩家编制方向,如何从转弯转向?

  3. 这就是我要说的。再次,在评论之前阅读链接并让我知道你是否可以帮助我(但请不要给我全面的答案。只需指出我关注的来源并告诉我应该做些什么)。

2 个答案:

答案 0 :(得分:1)

  1. 对于第二个及以后的玩家,从免费位置随机挑选。一种简单的方法是随机播放列表。将随机播放列表中的位置N分配给播放器N。
  2. 考虑保留两个数据结构来表示游戏状态,一个表示当前位置,另一个表示下一个位置。在计算下一个位置结束时,交换它们并清除新的下一个位置结构。

答案 1 :(得分:0)

  1. 一种方法是将所有玩家放在场地上的增量位置,然后使用array shuffling algorithms中的一个来改变他们的位置。

  2. 您可以为玩家设置struct,并将位置和方向保持为单独的变量。