我在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"
的名称,如NPC
或NPC1
中所示,依此类推。不出所料,如果我再尝试NPC2
VBA并不理解我想创建Dim npc_name As NPCclass
的另一个实例,其中NPCclass
内的字符串作为其名称。相反,它认为我想再次声明npc_name
,就像之前我说npc_name
一样。
如何创建更多使用相同类但在阵列/播放区周围独立移动的NPC?我觉得我误解了一些明显的东西,因为我看过的所有教程都没有进入。
答案 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