0

我将使用 Glut 和 Opengl游戏信息(wiki)在 c 中构建我自己的宝石。

简短的游戏信息 游戏由一个网格组成,比如说 8x8,带有不同的宝石。当您通过交换两个相邻的宝石来创建至少 3 个相同类型的宝石的行/列时,宝石将消失。比赛场地将从顶部填充。

两个设计概念 链表与数组

有几种方法可以实现这一点,但我想要最容易维护和最有效的方法。我的想法是:

(二维数组代表比赛场地/网格)。

1) 包含所有指向 gem 对象(实例)的指针的链表。还有一个 2D 数组,其中包含指向链表元素的所有指针,用于快速访问链表。链表可用于轻松打印游戏对象。每个链表对象都带有一个位置(宝石、记分板、时间 ets)

2)和上面的想法一样,但是每行每列都有一个链表,其他游戏元素也有一个链表

3)只有一个带有指向对象/实例(宝石)的指针的二维数组。

所需操作

-交换元素(宝石),通过交换指针?

-“创建”新元素(在网格顶部)

-检查行/列中至少有 3 个彼此相邻的相同类型的宝石

我希望我把这一切都说清楚了。你认为最好的解决方案是什么?

4

3 回答 3

1

我认为使用链表是矫枉过正的。我能想到的唯一有用的就是从顶部掉落宝石,但即使是 2D 数组也是相当微不足道的。

二维数组int应该没问题。它简单快捷。

于 2012-04-19T21:45:35.157 回答
0

我会使用二维数组。它更易于使用,因为您可以直接访问元素,而不是遍历列表,直到找到所需的元素。

但是,我也可以看到链表的优点,您可以在交换后删除一个成员并连续获得 3 个;您可以在遍历每个元素并像使用数组一样移动它之后向头部/尾部添加一个新元素。

于 2012-04-19T21:49:00.120 回答
0

我的建议是两者都实施。你听起来有点没有经验。您必须编写更多代码才能在下次偶然发现这些问题时自己回答这些问题。一个好的设计将允许您轻松替换这部分实现,因此请尝试这样做并从中学习。

于 2012-04-20T17:22:37.810 回答