C 中类似类的行为?

问题描述 投票:0回答:1

我正在编写一个类似太空入侵者的基本程序。 我将入侵者设置为结构数组,其中每个元素都有:入侵者的类型、状态(活着或死亡)以及 X 和 Y 坐标。

我目前正在努力将入侵者移动到屏幕上/下。 似乎没有必要循环遍历数组来更新每个 X 和 Y,因为同一列中的所有入侵者都具有相同的 X,同一行中的所有入侵者都具有相同的 Y。看来我应该能够更新一个单独的变量(或两个)并让每个入侵者继承(或其他)适当的偏移量。

在 C(而不是 C++)中是否有一个不错的方法来做到这一点?

c
1个回答
0
投票

所有入侵者必须有不同的X和Y来区分渲染时的位置。渲染时,无论如何你都需要访问每个入侵者,然后更新值。

如果您只是想节省内存,请跟踪相对位置,如在链接网格中(垂直的每列链接列表,水平的每行列表,并共享元素)并计算 X 和 Y(没有 X和需要 Y 存储)。您需要在空白处添加虚拟元素才能获得正确的偏移量。我认为链接列表可能比仅仅存储 X 和 Y 占用更多的内存,如果您不介意为删除的入侵者浪费数组条目,那么使用数组可能会有所帮助。

您仍然需要一个全局 X 和 Y 作为起始位置,并从那里开始计算。如果您不介意为每个入侵者存储 X 和 Y(可能是一维数组或链表),但您只是不想递增每个入侵者,请递增全局 X 和 Y,并通过添加全局 X + 来计算各个位置入侵者 X(Y 也一样)。

不管怎样,这些都不涉及类。无论如何,类都无法解决您最初的问题 - 您不会继承任何东西,并且继承只会将继承的字段添加到每个对象中,只需使用不同的语法声明相同的 X 和 Y 字段。

© www.soinside.com 2019 - 2024. All rights reserved.