Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net visual basic哈希表图像键/值_.net_Vb.net_Hashtable - Fatal编程技术网

.net visual basic哈希表图像键/值

.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

我想通过这个问题实现的是,获取从字符串数组中为特定EnemyName生成的随机名称,该特定EnemyName选择与eneImage.key对应,然后将值返回到字符串中(如果可能),然后将其发送到请求信息的表单中

我将张贴感兴趣的人的整个代码

因此,我有一个如下所示的哈希表:

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。我的坏消息。我把哈希表和哈希集搞混了。