【发布时间】:2015-04-01 23:50:43
【问题描述】:
以前也有人问过类似的问题,但我在具体情况下无法理解指针和多维数组。我不是最好的 C 程序员,但我正在努力变得更好。我想知道是否有人可以从概念上告诉我我缺少什么,并希望能帮助我理清一些概念。我正在用 c 语言构建一个太空侵略者类型的游戏,它将在嵌入式平台上运行(即低内存)。我的嵌入式设备通过串行将输出发送到计算机,计算机将游戏信息输出到我用 python 编写的一些 gui;游戏本身虽然是在微控制器上玩的。 gui 解释这些信息并在我想要的地方绘制图片,但它只是获取数据和绘图,仅此而已。
我遇到的问题是试图弄清楚如何构建游戏以及如何玩游戏。这是我的想法:
从计算平台获取窗口分辨率(这将是缩放的窗口大小,虽然我还不太确定是什么)。
使用缩放后的分辨率创建一个代表游戏网格的二维数组,其中数组中的每个元素代表玩家、敌人、子弹等可能的位置。
每个 2D 位置 (x, y) 坐标都可以包含有关该位置的大量信息,包括但不限于:某个对象的存在、该对象的当前状态(健康状况、有关它的其他数据)等...
在每个计算周期,更新游戏地图上每个对象的当前位置和状态。
为了帮助澄清我在说什么,我在下面添加了一个粗略的插图。我创建了一个代表“游戏地图”的 2D 网格。想象一下这是我的游戏将在其上进行的网格。每个有 x 的地方都是当前没有任何对象的地方。任何带有 o 的地方都存在一些独特的对象,每个对象都有不同的独特特征。
我的问题是如何创建这个东西?我对创建二维数组的概念很满意,但数组只是对我存储某些数据类型的某个位置的引用。我可以将指向我的唯一对象的指针存储在 myArray[2][4] 中吗?如果是这样,我该怎么做?另外,假设我在那里存储了一些指向我的对象的指针,我如何给它多个属性?我已经创建了一些 typdef 结构来定义我想要的属性(包括它的当前位置),但是我的地图中的每个 o 是否都引用了整个结构?
我只是有点困惑,正在寻找清理我的想法。谢谢大家的时间!
[x] [x] [x] [x] [x] [x] [x] [x] [x] [x]
[x] [x] [x] [o] [o] [o] [o] [o] [x] [x]
[x] [x] [x] [o] [o] [o] [o] [o] [x] [x]
[x] [x] [x] [x] [x] [o] [x] [x] [x] [x]
[x] [x] [x] [x] [x] [x] [x] [x] [x] [x]
[x] [x] [x] [x] [x] [x] [x] [x] [x] [x]
[x] [x] [x] [x] [x] [x] [x] [x] [x] [x]
[x] [x] [x] [x] [x] [x] [x] [x] [x] [x]
[x] [x] [o] [o] [o] [o] [o] [x] [x] [x]
[x] [x] [x] [x] [x] [o] [x] [x] [x] [x]
【问题讨论】:
-
您可能想要的是
void*的数组。然后每个单元包含一个指向结构的指针,这些结构应该通过它们的第一个成员作为类型 ID 来标识自己。这就是你在 C 中进行“鸭式打字”的方式。如果你真的想对它进行 OOPy,类型 ID 本身可能是指向类结构的指针。
标签: c arrays pointers multidimensional-array