All pastes #44079 Raw Edit

Unnamed

public text v1 · immutable
#44079 ·published 2006-03-01 07:48 UTC
rendered paste body
Private Sub btnDeal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeal.Click

		Me.lblHand.Text = ""
		Me.lblResult.Text = ""

		Dim rndNum As Random = New Random()
		Dim intX, intY As Integer
		Dim intCardNum As Integer
		Dim intSuitNum As Integer
		Dim intFaceNum As Integer
		Dim intHandIndex As Integer = 0

		Dim Suits As String() = New String() {"Hearts", "Diamonds", _
			"Clubs", "Spades"}
		Dim Faces As String() = New String() {"Ace", "Deuce", "Three", _
			"Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", _
			"Jack", "Queen", "King"}
		Dim HandStrength As String() = New String() {"Nothing Special", "There is a pair", _
		"There are two pairs", "There is three of a kind", "There is a full house", _
		"There is four of a kind"}

		Dim Deck(51) As Integer
		Dim myHand(4) As String
		Dim myHandNumeric(4) As Integer
		Dim myHandPairs(3) As Integer
		
		'fill
		For nValue As Integer = 0 To Deck.Length - 1
			Deck(nValue) = nValue + 1
		Next

		'mix
		For nLoop As Integer = 1 To 1000
			Dim nLeft As Integer = rndNum.Next(0, Deck.Length - 1)
			Dim nRight As Integer = rndNum.Next(0, Deck.Length - 1)
			Dim nSwap As Integer = Deck(nLeft)
			Deck(nLeft) = Deck(nRight)
			Deck(nRight) = nSwap
		Next

		'deal hand
		For nLoop As Integer = 0 To myHand.Length - 1
			myHandNumeric(nLoop) = Deck(nLoop)
			myHand(nLoop) = Faces((Deck(nLoop) Mod 13)) + " of " + Suits(CType(Math.Floor(Deck(nLoop) / 13), Integer))
		Next

		'show hand
		For nCard As Integer = 0 To myHand.Length - 1
			Me.lblHand.Text += myHand(nCard) + ControlChars.CrLf
		Next

		Dim valueMatches() As Integer = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
		Dim suitMatches() As Integer = {0, 0, 0, 0}

		For Each card As Integer In myHandNumeric
			valueMatches(card Mod 13) += 1
			suitMatches(CType(Math.Floor(card / 13), Integer)) += 1
		Next
		
		Dim nPairs As Integer = 0
		Dim nThreeKind As Integer = 0
		Dim nFourKind As Integer = 0

		For Each value As Integer In valueMatches
			Select Case value
				Case 2
					nPairs += 1
				Case 3
					nThreeKind += 1
				Case 4
					nFourKind += 1
			End Select
		Next

		Dim bFlush As Boolean = False
		For Each suit As Integer In suitMatches
			If (suit = 5) Then bFlush = True
		Next

		With Me.lblResult
			If (nPairs > 0) Then .Text += String.Format("There are {0} pairs", nPairs)
			If (nThreeKind > 0) Then .Text += String.Format("There are {0} three-of-a-kinds ", nThreeKind)
			If (nFourKind > 0) Then .Text += String.Format("There are {0} four-of-a-kinds ", nFourKind)
		End With

	End Sub