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 に答える