此代码生成堆栈溢出。我知道这是由程序调用自身引起的。我该怎么做才能避免堆栈溢出?调用子过程并生成一个新的随机数是最容易做的事情,但是它会产生溢出。随机生成的数字选择一个随机库存项目,然后 if 语句将该数字(随机库存项目)与甲板库存中该项目的数量相匹配,以确保它不小于 1。如果该项目的库存是0,else播放并重新启动程序,生成一个新的随机数并重新执行该过程。在另一个程序中,我有一个功能,如果甲板的库存完全空了,那么丢弃堆会补充甲板,使丢弃堆变空,
我想知道我是否可以以某种方式强制随机数生成器
Number = (DeckGroup(Rnd.Next(0, DeckGroup.Count)).ID)
DeckGroup(Number).QuantityInteger
不要为清零的项目生成编号。通过这样做,我什至不需要调用该函数。随机数由同一结构组中的不同分支生成。
Private Sub PlayElse()
Dim CardCheckBoxArray() As CheckBox = {CardCheckBox1, CardCheckBox2, CardCheckBox3, CardCheckBox4, CardCheckBox5}
'Reset Number Generator
Number = (DeckGroup(Rnd.Next(0, DeckGroup.Count)).ID)
Dim PlayerQuantitySubtractionInteger As Integer
For PlayerQuantitySubtractionInteger = ChecksDynamicA To ChecksDynamicB
If CardCheckBoxArray(TextBoxInteger).Checked = True And DeckGroup(Number).QuantityInteger > 0 Then
DeckGroup(Number).QuantityInteger -= 1
'Select the Player depending value of T
Select Case T
Case 0
Player1HandGroup(Number).QuantityInteger += 1
Case 1
Player1HandGroup(Number).QuantityInteger2 += 1
Case 2
Player1HandGroup(Number).QuantityInteger3 += 1
Case 3
Player1HandGroup(Number).QuantityInteger4 += 1
Case 4
Player1HandGroup(Number).QuantityInteger5 += 1
End Select
CardTypeArray(PlayerQuantitySubtractionInteger) = Player1HandGroup(Number).CardType
CardCheckBoxArray(TextBoxInteger).Text = Player1HandGroup(Number).CardNameString
NumberArray(PlayerQuantitySubtractionInteger) = Number
Else
If CardCheckBoxArray(TextBoxInteger).Checked = True And DeckGroup(Number).QuantityInteger < 0 Then
Call PlayElse()
End If
End If
Next PlayerQuantitySubtractionInteger
End Sub