我想用这个问题实现的目的是获取从特定 EnemyName 的字符串数组生成的随机名称,以选择与 eneImage.key 对应的然后将值返回到一个字符串(如果可能的话),然后发送请求信息的表单。
我将为感兴趣的人发布整个代码Whole code, pastebin
所以我有一个如下所示的哈希表:
Private eneImage As New Hashtable()
Sub Main()
eneImage.Add("orc", My.Resources.orc)
eneImage.Add("troll", My.Resources.troll)
eneImage.Add("salamander", My.Resources.salamander)
eneImage.Add("cavetroll", My.Resources.cavetroll)
eneImage.Add("dragon", My.Resources.dragon)
eneImage.Add("vampire", My.Resources.vampire)
eneImage.Add("werewolf", My.Resources.werewolf)
End Sub
然后我有一个for
函数,其中包含for循环哈希表的每个循环:
Private eImage As Bitmap
Public Function getEnemyImage() As Bitmap
For Each de As DictionaryEntry In eneImage
MsgBox("Key = {0}, Value = {1}", de.Key, de.Value)
Next de
目前没有在下面使用这个,因为它随机选择图像,名称也是随机的。
'For i As Integer = n1 To n2
'If i = GetRandom(n1, n2) Then
'eImage = enemyImage(i)
'End If
'Next i
Return eImage
End Function
Public Function getEnemyName() As String
InitMonsters()
n1 = LBound(enemyName)
n2 = UBound(enemyName)
For i As Integer = n1 To n2
If i = GetRandom(n1, n2) And Not String.IsNullOrEmpty(enemyName(i)) Then
eName = enemyName(i)
End If
Next i
Return eName
End Function
我使用了下面给出的答案,它完美无缺。
Private eName As String
Private eImage As Image
Private eneImage As New Dictionary(Of String, Image)
Private Sub initImages()
If Not eneImage.ContainsKey("orc") Then
eneImage.Add("orc", My.Resources.orc)
eneImage.Add("troll", My.Resources.troll)
eneImage.Add("salamander", My.Resources.salamander)
eneImage.Add("cavetroll", My.Resources.cavetroll)
eneImage.Add("dragon", My.Resources.dragon)
eneImage.Add("vampire", My.Resources.vampire)
eneImage.Add("werewolf", My.Resources.werewolf)
End If
End Sub
Public Function getEnemyName() As String
eName = [Enum].GetName(GetType(Enemies), GetRandom(1, 7))
Return eName
End Function
Public Function getEnemyImage()
initImages()
For Each de As KeyValuePair(Of String, Image) In eneImage
Dim m As String = de.Key
Dim n As String = eName.ToLower
If m.StartsWith(n) Then
eImage = de.Value
End If
Next de
Return eImage
End Function
答案 0 :(得分:0)
我认为你想要的是一个Enum of Enemies,它允许你将随机数翻译成敌人的名字。然后使用字典将允许您将图像存储为图像而不是对象:
Enum Enemies
werewolf = 1
orc = 2
salamander = 3
troll = 4
cavetroll = 5
dragon = 6
vampire = 7
End Enum
Private eneImage As New Dictionary(Of String, Image)
Sub Main
eneImage.Add("orc", My.Resources.orc)
eneImage.Add("troll", My.Resources.troll)
eneImage.Add("salamander", My.Resources.salamander)
eneImage.Add("cavetroll", My.Resources.cavetroll)
eneImage.Add("dragon", My.Resources.dragon)
eneImage.Add("vampire", My.Resources.vampire)
eneImage.Add("werewolf", My.Resources.werewolf)
Dim rnd1 As New Random(DateTime.Now.Millisecond)
Dim enemyname As String = [Enum].GetName(GetType(Enemies), rnd1.Next(1, 7))
End Sub