首先感谢您的时间。
我有一个程序,我将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岁的休闲程序员,所以我可能还没有完成所有的基础知识。
答案 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 =
部分)。