从3个阵列中获取最高价值

时间:2013-11-18 16:37:07

标签: arrays vb.net visual-studio

首先感谢您的时间。

我有一个程序,我将2个骰子滚动3次,它们的值存储在2个数组中。

    Dim Attacker(3) As Integer
    Dim Defender(3) As Integer
    Dim i As Integer = 0

    For Each pb As PictureBox In New PictureBox() {Steen1, Steen2, Steen3}

        i += 1

        Select Case RandomNumber.Next(1, 7)
            Case 1 : pb.Image = Game.My.Resources.Een
                Attacker([i]) = 1
            Case 2 : pb.Image = Game.My.Resources.Twee
                Attacker([i]) = 2
            Case 3 : pb.Image = Game.My.Resources.Drie
                Attacker([i]) = 3
            Case 4 : pb.Image = Game.My.Resources.Vier
                Attacker([i]) = 4
            Case 5 : pb.Image = Game.My.Resources.Vijf
                Attacker([i]) = 5
            Case 6 : pb.Image = Game.My.Resources.Zes
                Attacker([i]) = 6
        End Select

    Next

    i = 0

    For Each pb As PictureBox In New PictureBox() {Steen4, Steen5, Steen6}

        i += 1

        Select Case RandomNumber.Next(1, 7)
            Case 1 : pb.Image = Game.My.Resources.Een
                Defender([i]) = 1
            Case 2 : pb.Image = Game.My.Resources.Twee
                Defender([i]) = 2
            Case 3 : pb.Image = Game.My.Resources.Drie
                Defender([i]) = 3
            Case 4 : pb.Image = Game.My.Resources.Vier
                Defender([i]) = 4
            Case 5 : pb.Image = Game.My.Resources.Vijf
                Defender([i]) = 5
            Case 6 : pb.Image = Game.My.Resources.Zes
                Defender([i]) = 6
        End Select

    Next

现在我想让最高的第二高和最低价值'互相争斗':

最高价值攻击者对抗最高价值的后卫, 第二高价值攻击者对抗第二高价值后卫, 最低...

是否有标准方法可以执行此操作,还是必须使用'一百个'if语句?

再次感谢! P.S:我是一名17岁的休闲程序员,所以我可能还没有完成所有的基础知识。

2 个答案:

答案 0 :(得分:0)

您可以对数组进行排序。

Array.Sort(Attacker)
Array.Sort(Defender)

然后,您可以将两个数组的索引0进行比较,并继续索引1和2。

答案 1 :(得分:0)

您可以订购列表,然后使用Zip一起迭代它们。

Attacker = Attacker.OrderByDescending(Function(x) x).ToArray()
Defender = Defender.OrderByDescending(Function(x) x).ToArray()

For Each pair In Attacker.Zip(Defender, Function(attack, defend) _
                                      New With { attack, defend })
    ' have the numbers "fight"
Next

要分解订购行中的各个部分:

  • OrderByDescending 根据给定的元素对数组进行排序 功能
  • Function(x) x是一个简单返回的函数 进入它。因为我们想按照Integer的顺序排序 数组(而不是Integer上的某些属性),这是 我们想要使用的功能。
  • 由于OrderByDescending返回新内容 我们想要修改数组时IEnumerable(Of Integer) 使用ToArray进行转换
  • 然后我们存储 它(Attacker =部分)。