我想用这个问题实现的是获取从字符串数组生成的随机名称,用于选择与 eneImage.key 对应的特定EnemyName,然后将值返回到字符串(如果可能),然后将其发送要求提供信息的表格。
我会将整个代码发布给感兴趣的人整个代码,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 each 循环:
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