Option Explicit
Dim myFirst As Integer
Dim mySecond As Integer
Dim myThird As Integer
Dim myForth As Integer
Dim myFifth As Integer
Dim myTotal As Integer
Dim dealFirst As Integer
Dim dealSecond As Integer
Dim dealThird As Integer
Dim dealForth As Integer
Dim dealFifth As Integer
Dim dealTotal As Integer
Dim hitCount As Integer
Dim yesNo As Integer
Dim acePick As Integer
Dim aceDealer3 As Boolean
Dim aceDealer4 As Boolean
Dim aceDealer5 As Boolean
Dim done As Boolean
Private Sub cmdHit_Click()
If (myTotal < 21) And (done = False) Then
Label3.Visible = True
Select Case hitCount
Case 0:
lblMyThird = myThird
If myThird = 11 Then
ACE 'goes to ACE subroutine
myThird = acePick
End If
lblMyThird = Str(myThird)
myTotal = myTotal + myThird
lblMyTotal = "Your total is now " & myTotal
Case 1:
lblMyForth = myForth
If myForth = 11 Then
ACE 'goes to ACE subroutine
myForth = acePick
End If
lblMyForth = Str(myForth)
myTotal = myTotal + myForth
lblMyTotal = "Your total is now " & myTotal
Case 2:
lblMyFifth = myFifth
If myFifth = 11 Then
ACE 'goes to ACE subroutine
myFifth = acePick
End If
lblMyFifth = Str(myFifth)
myTotal = myTotal + myFifth
lblMyTotal = "Your total is now " & myTotal
If myTotal < 22 Then
MsgBox "You Win with five cards", vbExclamation, "Winner"
reset 'calls subroutine
End If
End Select
hitCount = hitCount + 1
If myTotal > 21 Then
MsgBox "You're Busted", vbCritical, "You lose"
reset
End If
End If 'Ends top if statement
End Sub
Private Sub cmdStart_Click()
reset 'calls reset subroutine for game restart
Randomize Timer
myFirst = Int((Rnd * 10) + 2)
mySecond = Int((Rnd * 10) + 2)
myThird = Int((Rnd * 10) + 2)
myForth = Int((Rnd * 10) + 2)
myFifth = Int((Rnd * 10) + 2)
dealFirst = Int((Rnd * 10) + 2)
dealSecond = Int((Rnd * 10) + 2)
dealThird = Int((Rnd * 10) + 2)
dealForth = Int((Rnd * 10) + 2)
dealFifth = Int((Rnd * 10) + 2)
lblMyFirst = Str(myFirst)
If myFirst = 11 Then
ACE 'goes to ACE subroutine
myFirst = acePick
End If
lblMyFirst = Str(myFirst)
lblMySecond = Str(mySecond)
If mySecond = 11 Then
ACE 'goes to ACE subroutine
mySecond = acePick
End If
lblMySecond = Str(mySecond)
myTotal = myFirst + mySecond
lblDealFirst = Str(dealFirst)
lblDealSecond = Str(dealSecond)
If (dealFirst = 11) And (dealSecond = 11) Then
dealSecond = 1 'two Aces won't bust
End If
dealTotal = dealFirst + dealSecond
lblMyTotal = "Your total is " & (myTotal)
lblDealTotal = "Dealer's total is " & (dealTotal)
End Sub
Private Sub cmdStay_Click()
If (done = False) Then
If (dealTotal > 10) And (dealTotal < 17) And (dealThird = 11) Then
dealThird = 1 'So not busted by Ace
aceDealer3 = True
lblDealThird = "1"
dealTotal = dealTotal + 1
ElseIf (dealTotal < 17) And Not (aceDealer3 = True) Then
lblDealThird = Str(dealThird) 'dealer takes third
dealTotal = dealTotal + dealThird
End If 'Third card done
If (dealTotal > 10) And (dealTotal < 17) And (dealForth = 11) Then
dealForth = 1 'Ace
aceDealer4 = True
lblDealForth = "1"
dealTotal = dealTotal + 1
ElseIf (dealTotal < 17) And Not (aceDealer4 = True) Then
lblDealForth = Str(dealForth) 'dealer takes forth
dealTotal = dealTotal + dealForth
End If 'forth card done
If (dealTotal > 10) And (dealTotal < 17) And (dealFifth = 11) Then
dealFifth = 1 'Ace
aceDealer5 = True
lblDealFifth = "1"
dealTotal = dealTotal + 1
ElseIf (dealTotal < 17) And Not (aceDealer5 = True) Then
lblDealFifth = Str(dealFifth) 'dealer takes fifth
dealTotal = dealTotal + dealFifth
End If 'Fifth card done
If (dealTotal > 21) Then
lblDealTotal = "Dealer's total is " & dealTotal & " Busted"
done = True
ElseIf dealTotal < myTotal And Not (done = True) Then
lblMyTotal = "Player's total is " & myTotal & " Player Wins"
lblDealTotal = "Dealer's total is " & dealTotal
done = True
Else
lblDealTotal = "Dealer's total is " & dealTotal & " Dealer Wins"
done = True 'doesn't allow for hit after game
End If
End If 'Ends top If statement
End Sub
Private Sub cmdExit_Click()
End
End Sub
Sub reset()
myFirst = 0
mySecond = 0
myThird = 0
myForth = 0
myFifth = 0
myTotal = 0
dealFirst = 0
dealSecond = 0
dealThird = 0
dealForth = 0
dealFifth = 0
dealTotal = 0
hitCount = 0
lblMyFirst = ""
lblMySecond = ""
lblMyThird = ""
lblMyForth = ""
lblMyFifth = ""
lblMyTotal = ""
lblDealFirst = ""
lblDealSecond = ""
lblDealThird = ""
lblDealForth = ""
lblDealFifth = ""
lblDealTotal = ""
acePick = 11
aceDealer3 = False
aceDealer4 = False
aceDealer5 = False
done = False
End Sub
Sub ACE()
yesNo = MsgBox("Do you want to keep as an Ace worth 11 points", vbYesNo, "ACE")
Select Case yesNo
Case 6:
acePick = 11
Case 7:
acePick = 1
End Select
End Sub