C++初学者游戏编程:跟踪对象,库存清单,不同对象/角色的数组等

Rus*_*sel 12 c++

我只是在玩一个旧的SNES RPG(Mana的秘密,如果有人关心的话),并且想知道一些关于游戏编程的一般事情.

对于一些脑死亡的问题,我很抱歉,我真的是初学者.:)

这些问题很普遍,但使用SNES风格的RPG作为"模板"来了解我的意思:

  1. 游戏如何在其"世界"中跟踪所有对象,触发事件等?例如,它如何跟踪哪些宝箱已被打开,哪些门被锁定,哪些故事事件已经触发?

    它是否基本上创建了一个元素数组,每个元素对应一个胸部/门/事件/等,并在打开/触发时将每个元素"标记"(将其值从0更改为1)?如果有多种方法,它们是什么?

  2. 如何处理"变量列表"?也就是说,如果你有一个游戏,当你可以拥有大量的物体(即:盔甲,剑)并拥有每个物体的X时,这是怎么做到的?

    我的猜测:有一个结构有一个大数组,每个可能的对象都有一个点(一个X int数组,其中X是可能拥有的对象的数量),其中每个元素的值代表你拥有的对象的数量,然后有一个每个对象的巨型枚举,以便一个对象与相应的索引匹配,并访问它,如:numberOfSwords = inventory [SWORDS]其中SWORDS是一个枚举的一部分,并有一个与之关联的整数.我有多近?

  3. 物体数量可以变化的情况怎么样?也就是说,如果我有一个游戏,我在屏幕上有一些敌人,他们可以在任何时候被杀死/生出新的敌人,在我看来我会需要一系列"敌人"物体来循环通过和处理,但元素的数量在任何时候都会有所不同.通常的做法是什么?链接列表?

任何帮助/提示/指针都非常感谢.

Jam*_*mes 8

以非常基本的方式,您的答案并不太遥远,事情可以按照您提及的方式完成.然而,空间和处理能力可以发挥作用,因此,而不是一系列的bool来跟踪哪些宝箱或你在事件链上走了多远,你可能想要将它缩小到打开和关闭的位并使用按位运算符掩盖你在故事情节中的位置,或者是否要显示你将要显示为打开或关闭的宝箱.

对于库存而言,不是跟踪玩家拥有的每件物品的数量,而是为玩家可以获取的所有物品提供基本物品可能更好; 武器,盔甲甚至钱.然后你可以制作一个只有玩家拥有的物品的链表.如上所述,使用Enum作为项目,然后使用该项目的数量.这将允许对事物进行排序,并且还将仅保留玩家角色实际具有/具有的项目.您可以扩展此数据结构以跟踪项目是否配备.您可能会更加通用该项目在项目表中的信息类型.

敌人可能会有点复杂,因为你需要用它们做更多的事情.这里的链接列表仍然是您最好的选择.这样,从列表中删除对象将更容易一点(当玩家杀死它们时可以简单地删除链接等,或者在列表中需要的地方添加新的敌人.)

老实说,没有一个答案,它可以取决于很多事情.最好的方法就是简单地尝试一下......对于一个简单的'如果我为此做这个',它真的不会花费很长时间来给它一个旋转,看看你得到多远.如果你开始遇到问题,你可以开始考虑其他选项:)

希望这可以帮助.

编辑:只想添加到www.codesampler.com的链接.通常更多的DirectX导向教程网站,但作为一个初学者,它可以开始你思考或给你一组起点.作为一个额外的奖励,很多DirectX SDK示例/示例开始被格式化,就像这个网站的教程是如何完成的.可以帮助您轻松完成整个过程.