对象/类的多个实例

时间:2018-04-06 20:32:25

标签: excel-vba vba excel

我在VBA中做了一个简单的游戏,比如Rogue或Nethack。它发生在gui窗口。我有一个数组来保持比赛场地等,还有一个球员的球员,他们的坐标存储起来,还有一些潜水员可以移动等等。

然后我创建了一个随机移动的NPC类。我通常的方式声明Dim NPC as NPCclass(在声明中),然后Set NPC = New NPCclass(在一个sub中,这似乎是必要的,但没有一个教程提到它?)到目前为止很好,{ {1}}由ASCII字符表示,并执行我想要的操作。

但是,现在我想在几圈之后创建更多NPC。但我无法弄清楚如何做到这一点。对于我的NPCs的每个其他实例,我似乎都要做另一个NPC

所以我尝试生成一个字符串,比如Dim NPCxyz as NPCclass,其中包含要生成的下一个"npc_name"的名称,如NPCNPC1中所示,依此类推。不出所料,如果我再尝试NPC2 VBA并不理解我想创建Dim npc_name As NPCclass的另一个实例,其中NPCclass内的字符串作为其名称。相反,它认为我想再次声明npc_name,就像之前我说npc_name一样。

如何创建更多使用相同类但在阵列/播放区周围独立移动的NPC?我觉得我误解了一些明显的东西,因为我看过的所有教程都没有进入。

2 个答案:

答案 0 :(得分:2)

只需创建一个对象数组......

Dim NPC(1 to 20) as NPCclass

For i = 1 to 20
    Set NPC(i) = New NPCclass

    '... your object init ...
    NPC(i).SetSometing = 0
    NPC(i).DoSomething()
Next i

如果您以后想要增加列表,则只需要执行类似

的操作
ReDim Preserve NPC(50)

答案 1 :(得分:1)

您还可以使用收藏集

Dim NPC as New NPCclass
Dim colNPC as New Collection

for i = 1 to 20
    colNPC.add New NPC
next