【发布时间】:2018-04-06 20:32:25
【问题描述】:
我正在用 VBA excel 制作一个简单的游戏,比如 Rogue 或 Nethack。它发生在一个 gui 窗口中。我有一个数组来保存比赛场地等,还有一个玩家类,其中存储了他们的坐标和一些可以移动的潜艇等。
然后我创建了一个随机移动的NPC 类。我以通常的方式声明它,Dim NPC as NPCclass(在声明中)然后Set NPC = New NPCclass(在子中,这似乎是必要的,但没有教程提到这一点?)到目前为止,NPC 代表了通过一个 ASCII 字符并做我想做的事。
但是,现在我想在间隔几圈后创建更多NPCs。但我不知道该怎么做。似乎对于我的NPC 的每一个额外实例,我都必须再做一个Dim NPCxyz as NPCclass。
所以我尝试生成一个字符串,比如"npc_name",其中包含要生成的下一个NPC 的名称,如NPC1 或NPC2 等等。不出所料,如果我然后尝试Dim npc_name As NPCclass VBA 不明白我想创建另一个NPCclass 实例,其中npc_name 中的字符串作为其名称。相反,它认为我想再次声明 npc_name,就像我之前说的 Dim npc_name As String 一样。
如何创建更多使用同一类但在阵列/游戏区域中独立移动的 NPC?我觉得我误解了一些明显的东西,因为我看过的教程都没有涉及到这一点。
【问题讨论】:
-
你在正确的轨道上。这里的诀窍是,一旦你开始思考“动态命名的变量”,就会想到“数组”或“集合”。您可以拥有一组 NPC 对象或一组 NPC 对象。 See here for a similar question 我个人更喜欢这里的集合,因为它比数组更通用,尽管数组就足够了。