.net visual basic哈希表图像键/值
我想通过这个问题实现的是,获取从字符串数组中为特定EnemyName生成的随机名称,该特定EnemyName选择与eneImage.key对应,然后将值返回到字符串中(如果可能),然后将其发送到请求信息的表单中 我将张贴感兴趣的人的整个代码 因此,我有一个如下所示的哈希表:.net visual basic哈希表图像键/值,.net,vb.net,hashtable,.net,Vb.net,Hashtable,我想通过这个问题实现的是,获取从字符串数组中为特定EnemyName生成的随机名称,该特定EnemyName选择与eneImage.key对应,然后将值返回到字符串中(如果可能),然后将其发送到请求信息的表单中 我将张贴感兴趣的人的整个代码 因此,我有一个如下所示的哈希表: Private eneImage As New Hashtable() Sub Main() eneImage.Add("orc", My.Resources.orc) eneImage.Add("trol
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
我想你想要的是一个敌人的枚举,它可以让你把随机数转换成一个敌人的名字。然后,使用字典将允许您将图像存储为图像,而不是对象:
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
哈希表如何存储键值对?你想检查一下你的拼写吗?为什么在循环中使用GetRandom?从我读到的HashTable存储键和值,不知道你的意思。我的英语很差,所以没有任何借口,GetRandom也只有在那里,给一个介于1和10之间的随机数。但我不想每次和一个随机的怪物战斗时都打印出一张随机的图像。我想这样做,以便从entrys的字符串数组中获得一个随机名称(这很好),然后将该名称与哈希表键进行比较,看看是否相同。如果是,请将图像打印到PictureBox。我的坏消息。我把哈希表和哈希集搞混了。