【问题标题】:Need a hand on an array assignment需要处理数组分配
【发布时间】:2014-01-25 20:49:15
【问题描述】:

我需要一些帮助来完成一个文档如下的作业:

你的任务是模拟两支九人队伍之间的比赛。九名球员的原因是为了便于将比赛场地合理地打印到屏幕上或输出文件中。 Smashball 在 25 x 25 的正方形场地上进行。打印比赛结果时,请务必打印出带有边框的场地。

  1. 游戏初始化

一个。使用随机数生成器将所有玩家随机放置在比赛场地中。如果随机过程产生两名球员从同一个位置开始,重新绘制新的随机位置,使所有球员都从不同的位置开始。

b.使用随机数生成器为每个玩家生成初始运动方向。此分配的四个运动选择是东、西、北和南。这些方向对应于赛场上每个球员的各自移动。

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

#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. 游戏初始化部分要求我为玩家随机生成初始运动方向,但我无法为玩家指定方向,因为我会覆盖他们的位置。如何在不覆盖玩家初始位置的情况下为玩家编码方向以及如何在转弯之间改变他们的方向?

这就是我要说的。再一次,在评论之前阅读链接,如果你能帮助我,请告诉我(但请不要给我完整的答案。只要指出我的担忧来源并告诉我我应该做什么)。

【问题讨论】:

  • 请不要指望人们会随机下载 PDF 来帮助您解决问题。在您的问题中直接引用相关信息。
  • 您希望我们在查看您的问题之前阅读 4 页 PDF?
  • SO 问题应该是独立的,任何外部链接都应该仅供参考,而不是使问题有意义。
  • 好的,好的,我会发布实际问题。
  • 那里,我修好了。现在你能帮我吗?

标签: c arrays double variable-assignment


【解决方案1】:
  1. 对于第二个和后续玩家,从免费位置中随机选择。一种简单的方法是打乱位置列表。将洗牌列表中的位置 N 分配给玩家 N。
  2. 考虑保留两个数据结构来表示游戏状态,一个表示当前位置,另一个表示下一个位置。在计算下一个位置结束时,交换它们并清除新的下一个位置结构。

【讨论】:

    【解决方案2】:
    1. 一种方法是让所有球员在场上的增量位置,然后使用array shuffling algorithms之一改变他们的位置。

    2. 您可以为玩家创建struct,并将位置和方向作为单独的变量。

    【讨论】:

    • “增量职位”是什么意思?另外,我应该把洗牌算法放在哪里?
    • 另外,随机播放算法不适用于二维数组。
    • 你把它们放在开始的顺序并不重要,只要它们最初位于唯一的位置,所以你可以像这样递增地填充二维数组:for (i = 0; i &lt; SIZE_TEAM; i++){ team [i] = field [i][i];}。既然你要求我们不要给你“完整的答案”,我就给你一个提示。将外部数组和内部数组视为单独的数组并将它们都打乱。
    • 另外,请注意您甚至还没有初始化field 2D 数组。事情不会像你期望的那样发展。我建议你回到绘图板上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2010-10-23
    • 2018-11-11
    相关资源
    最近更新 更多