0

我不确定我应该给这个主题起什么名字,但我会解释一下情况。

我有一个存储卡值的数组。现在我正在为我的游戏实现闪避和格挡卡,所以我决定制作一个新的对话框视觉基础。在打开对话框之前,我的程序会检查被攻击的玩家手中(在数组中)是否有闪避或格挡卡,如果是,则打开对话框。

对话框打开后,它将我的模块化玩家回合变量“T”重新分配给玩家攻击的值,将其更改为玩家回合。

然后我加载我的通用子

从那里我将所有被攻击玩家的卡片加载到复选框中。

问题从这里开始 加载卡片后,我查看我的摘要索引,即玩家卡片索引。玩家按照他的设想保留他的牌,但不知何故,索引也会随机减去一张牌并添加一张随机牌。

例如

正确的卡片:

道奇 1

区块 1

头对接 1

拍打 1

踢 1

'额外的

戳-1

万岁玛丽 1

比较卡片的代码:

If LunchMoneyMainForm.T = 0 Then
    For roll = 0 To 4
        Dim temp As IEnumerable(Of LunchMoneyMainForm.Group) = _
            From r In LunchMoneyMainForm.Player1HandGroup _
            Where r.QuantityInteger > 0 _
            Select r
        If temp IsNot Nothing AndAlso temp.Count > 0 Then
            Dim rolls As Integer = roll Mod 5
            Number = (temp(LunchMoneyMainForm.Rnd.Next(0, temp.Count)).ID)
            LunchMoneyMainForm.Player1HandGroup(Number).QuantityInteger -= 1
            CheckBoxArray(rolls).Text = LunchMoneyMainForm.Player1HandGroup(Number).CardNameString
            LunchMoneyMainForm.NumberArray(roll) = Number
        End If
    Next roll
    For roll = 0 To 4
        Number = LunchMoneyMainForm.NumberArray(roll)
        LunchMoneyMainForm.Player1HandGroup(Number).QuantityInteger += 1
    Next
End If

有一个更好的方法吗?

编辑:我注释掉了

'For roll = 0 To 4
'    Number = LunchMoneyMainForm.NumberArray(roll)
'    LunchMoneyMainForm.Player1HandGroup(Number).QuantityInteger += 1
'Next

我也拿出了LunchMoneyMainForm.Player1HandGroup(Number).QuantityInteger -= 1,但我仍然得到一个项目的 +1 和一个项目的 -1。

所以我的 Linq 函数中的某些东西正在这样做。

编辑:我的球员卡摘要功能。

Private Sub PlayerHandToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PlayerHandToolStripMenuItem.Click
        For Me.intCount = 0 To 27

            CountHandCards += Player1HandGroup(intCount).QuantityInteger + Player1HandGroup(intCount).QuantityInteger2 + Player1HandGroup(intCount).QuantityInteger3 _
                + Player1HandGroup(intCount).QuantityInteger4 + Player1HandGroup(intCount).QuantityInteger5

            HandMsg = HandMsg & Player1HandGroup(intCount).CardNameString & ": " & Player1HandGroup(intCount).QuantityInteger & "            " & Player1HandGroup(intCount).QuantityInteger2 & _
              "            " & Player1HandGroup(intCount).QuantityInteger3 & "            " & Player1HandGroup(intCount).QuantityInteger4 & "            " & Player1HandGroup(intCount).QuantityInteger5 & Environment.NewLine
        Next intCount

        MessageBox.Show("Card Quantities in Hand:" & Environment.NewLine & HandMsg & Environment.NewLine & "Hand Total: " & CountHandCards.ToString)
        HandMsg = ""
        CountHandCards = 0
    End Sub

我知道摘要过程应该可以正常工作,因为在我加载 DodgeBlockCard 对话框之前不会显示错误的数据。

4

1 回答 1

0

要回答“如何在对话框关闭之前暂停我的应用程序?” 问题:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
...
'Sleep for 1000 milliseconds
Sleep 1000
于 2013-03-28T19:51:08.547 回答