題名をどうしようか迷いましたが、状況を説明します。
カードの値が格納された配列があります。現在、回避カードとブロック カードをゲームに実装しているので、新しいダイアログ ボックスのビジュアル ベーシックを作成することにしました。ダイアログ ボックスを開く前に、私のプログラムは、攻撃されたプレイヤーが手札 (配列内) に回避カードまたはブロック カードを持っているかどうかを確認し、それが真の場合、ダイアログ ボックスが開きます。
ダイアログボックスが開いた後、モジュラープレーヤーターン変数「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 ダイアログをロードするまで間違ったデータが表示されないため、サマリー プロシージャが正常に機能することはわかっています。