Refactor code to make Game its own Class to split from UI dedicated functions.
parent
1295bdbc09
commit
6880589562
|
@ -1,294 +0,0 @@
|
|||
Public Class Form1
|
||||
Inherits Form
|
||||
|
||||
Dim player As New Player()
|
||||
Dim dealer As New Dealer()
|
||||
Dim deck As New List(Of String)
|
||||
Dim gameRunning As Boolean = True
|
||||
Private Sub StartGame_Click(sender As Object, e As EventArgs) Handles StartGame.Click
|
||||
PlayGame()
|
||||
End Sub
|
||||
Private Sub HitButton_Click(sender As Object, e As EventArgs) Handles HitButton.Click
|
||||
If gameRunning And player.hand.Count < 5 And player.ingame Then
|
||||
DealCard(player)
|
||||
CheckPlayer(player)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub StandButton_Click(sender As Object, e As EventArgs) Handles StandButton.Click
|
||||
If gameRunning And player.ingame Then
|
||||
player.ingame = False
|
||||
DealerTurn()
|
||||
End If
|
||||
End Sub
|
||||
Private Sub ResetCards()
|
||||
Dim pictureBoxes() As PictureBox = {PlayerCard1, PlayerCard2, PlayerCard3, PlayerCard4, PlayerCard5, PlayerCard6, PlayerCard7, PlayerCard8, PlayerCard9, PlayerCard10}
|
||||
For Each box In pictureBoxes
|
||||
box.Image = Nothing
|
||||
Next
|
||||
End Sub
|
||||
Sub PlayGame()
|
||||
InitGame()
|
||||
End Sub
|
||||
Sub InitGame()
|
||||
ResetCards()
|
||||
WinMessage.ResetText()
|
||||
HitButton.Enabled = True
|
||||
StandButton.Enabled = True
|
||||
StartGame.Enabled = False
|
||||
gameRunning = True
|
||||
player.Start()
|
||||
dealer.Start()
|
||||
CreateDeck()
|
||||
DealCard(player)
|
||||
DealCard(dealer, isDealer:=True)
|
||||
DealCard(player)
|
||||
DealCard(dealer, isDealer:=True, hide:=True)
|
||||
GetTotal(dealer)
|
||||
CheckPlayer(dealer, True)
|
||||
CheckPlayer(player)
|
||||
End Sub
|
||||
Sub CreateDeck()
|
||||
deck.Clear()
|
||||
Dim nums As String() = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}
|
||||
Dim suits As String() = {"Hearts", "Diamonds", "Spades", "Clubs"}
|
||||
For Each s As String In suits
|
||||
For Each n As String In nums
|
||||
deck.Add(n + " of " + s)
|
||||
Next
|
||||
Next
|
||||
Shuffle(deck)
|
||||
End Sub
|
||||
Sub Shuffle(deck)
|
||||
Dim max As Integer = deck.Count - 1
|
||||
Dim random As New Random()
|
||||
For x As Integer = 0 To max
|
||||
Dim rand As Integer = random.Next(0, max)
|
||||
Dim temp As String = deck(x)
|
||||
deck(x) = deck(rand)
|
||||
deck(rand) = temp
|
||||
Next
|
||||
End Sub
|
||||
Sub DealCard(player, Optional suppress = False, Optional isDealer = False, Optional hide = False)
|
||||
Dim card = deck(0)
|
||||
player.hand.Add(card)
|
||||
deck.RemoveAt(0)
|
||||
GetTotal(player, hide)
|
||||
Dim cardNumber As String = If(isDealer, (player.hand.count + 5).ToString(), player.hand.count)
|
||||
Dim pictureBox As PictureBox
|
||||
Try
|
||||
pictureBox = CType(Me.Controls.Find("PlayerCard" + cardNumber, True).First(), PictureBox)
|
||||
If hide Then
|
||||
pictureBox.Image = My.Resources.blue
|
||||
player.hidden = card
|
||||
Else
|
||||
pictureBox.Image = GetCardImage(card)
|
||||
End If
|
||||
SetTotalLabels()
|
||||
Catch ex As Exception
|
||||
WinMessage.Text = "Error: " + ex.Message
|
||||
EndGame()
|
||||
End Try
|
||||
End Sub
|
||||
Sub GetTotal(player, Optional hide = False)
|
||||
If hide Then
|
||||
Exit Sub
|
||||
End If
|
||||
Dim cards As List(Of String) = player.hand
|
||||
If cards.Count = 0 Then
|
||||
player.total = 0
|
||||
Return
|
||||
End If
|
||||
Dim t As Integer = 0
|
||||
Dim a As Integer = 0
|
||||
For Each x As String In cards
|
||||
Dim card As String = x
|
||||
Dim num As String = card.Split(" "c)(0)
|
||||
If num = "K" Or num = "Q" Or num = "J" Then
|
||||
num = 10
|
||||
End If
|
||||
If num = "A" Then
|
||||
num = 11
|
||||
a += 1
|
||||
End If
|
||||
num = Integer.Parse(num)
|
||||
t += num
|
||||
Next
|
||||
While (a > 0 And t > 21)
|
||||
a -= 1
|
||||
t = t - 10
|
||||
End While
|
||||
player.total = t
|
||||
End Sub
|
||||
Sub SetTotalLabels()
|
||||
Dim dealerLabelTotal As String = DealerTotal.Text.Split(": ")(0)
|
||||
Dim playerLabelTotal As String = PlayerTotal.Text.Split(": ")(0)
|
||||
DealerTotal.Text = dealerLabelTotal + ": " + dealer.total.ToString()
|
||||
PlayerTotal.Text = playerLabelTotal + ": " + player.total.ToString()
|
||||
|
||||
End Sub
|
||||
Sub CheckPlayer(playerToCheck, Optional peek = False)
|
||||
If Not peek Then
|
||||
If playerToCheck.total = 21 And playerToCheck.hand.count = 2 Then
|
||||
playerToCheck.winType = WinCondition.Blackjack
|
||||
playerToCheck.ingame = False
|
||||
dealer.ingame = False
|
||||
DealerTurn()
|
||||
ElseIf playerToCheck.total > 21 Then
|
||||
playerToCheck.winType = WinCondition.Bust
|
||||
playerToCheck.ingame = False
|
||||
DealerTurn()
|
||||
ElseIf playerToCheck.total < 22 And playerToCheck.hand.count = 5 Then
|
||||
playerToCheck.winType = WinCondition.FiveCard
|
||||
playerToCheck.ingame = False
|
||||
dealer.ingame = False
|
||||
DealerTurn()
|
||||
End If
|
||||
If playerToCheck.total = 21 Then
|
||||
playerToCheck.ingame = False
|
||||
DealerTurn()
|
||||
End If
|
||||
Else
|
||||
If playerToCheck.total = 21 And playerToCheck.hand.count = 2 Then
|
||||
playerToCheck.winType = WinCondition.Blackjack
|
||||
playerToCheck.ingame = False
|
||||
player.ingame = False
|
||||
DealerTurn()
|
||||
End If
|
||||
End If
|
||||
|
||||
End Sub
|
||||
Sub DealerTurn()
|
||||
PlayerCard7.Image = GetCardImage(dealer.hidden)
|
||||
GetTotal(dealer)
|
||||
SetTotalLabels()
|
||||
If player.winType = WinCondition.Bust Then
|
||||
CheckGame()
|
||||
Exit Sub
|
||||
End If
|
||||
If dealer.ingame And dealer.hand.Count < 5 Then
|
||||
If dealer.total = 21 And dealer.hand.Count = 2 Then
|
||||
dealer.winType = WinCondition.Blackjack
|
||||
dealer.ingame = False
|
||||
ElseIf dealer.total > 21 Then
|
||||
dealer.winType = WinCondition.Bust
|
||||
player.ingame = False
|
||||
ElseIf dealer.total < dealer.limit Then
|
||||
DealCard(dealer, isDealer:=True)
|
||||
DealerTurn()
|
||||
Else
|
||||
dealer.winType = WinCondition.NormalWin
|
||||
End If
|
||||
End If
|
||||
CheckGame()
|
||||
End Sub
|
||||
Sub CheckGame()
|
||||
WinMessage.Text = GetResults()
|
||||
EndGame()
|
||||
End Sub
|
||||
Sub EndGame()
|
||||
HitButton.Enabled = False
|
||||
StandButton.Enabled = False
|
||||
StartGame.Enabled = True
|
||||
End Sub
|
||||
Function GetResults()
|
||||
If dealer.winType = WinCondition.Blackjack Then
|
||||
If player.winType = WinCondition.Blackjack Then
|
||||
PrintCurrentGame()
|
||||
Return "Player ties with Blackjack!"
|
||||
Else
|
||||
PrintCurrentGame()
|
||||
Return "Dealer wins with Blackjack!"
|
||||
End If
|
||||
End If
|
||||
If player.winType = WinCondition.Blackjack Then
|
||||
PrintCurrentGame()
|
||||
Return "Player wins with Blackjack!"
|
||||
End If
|
||||
If player.winType = WinCondition.FiveCard Then
|
||||
PrintCurrentGame()
|
||||
Return "Player wins with Five Card Charlie!"
|
||||
End If
|
||||
If player.winType = WinCondition.Bust Then
|
||||
PrintCurrentGame()
|
||||
Return "Player busts!"
|
||||
End If
|
||||
If dealer.winType = WinCondition.Bust Then
|
||||
PrintCurrentGame()
|
||||
Return "Dealer busts!"
|
||||
End If
|
||||
If player.total > dealer.total Then
|
||||
PrintCurrentGame()
|
||||
Return "Player wins with total of " + player.total.ToString() + "!"
|
||||
End If
|
||||
If player.total = dealer.total Then
|
||||
PrintCurrentGame()
|
||||
Return "Tie!"
|
||||
End If
|
||||
If player.total < dealer.total Then
|
||||
PrintCurrentGame()
|
||||
Return "Dealer wins with total of " + dealer.total.ToString() + "!"
|
||||
End If
|
||||
PrintCurrentGame()
|
||||
Return "error"
|
||||
End Function
|
||||
Function GetCardImage(card) As Image
|
||||
Dim num As String = card.split(" ")(0)
|
||||
Dim suit As String = card.split(" ")(2)
|
||||
Select Case num
|
||||
Case "K"
|
||||
num = "king"
|
||||
Case "Q"
|
||||
num = "queen"
|
||||
Case "J"
|
||||
num = "jack"
|
||||
Case "A"
|
||||
num = "ace"
|
||||
End Select
|
||||
|
||||
Dim img As String = suit + "_" + num
|
||||
Return My.Resources.ResourceManager.GetObject(img.ToLower())
|
||||
End Function
|
||||
Sub PrintCurrentGame()
|
||||
Console.WriteLine("Dealer Hand: " + String.Join(", ", dealer.hand) + " Total: " + dealer.total.ToString())
|
||||
Console.WriteLine("Player Hand: " + String.Join(", ", player.hand) + " Total: " + player.total.ToString())
|
||||
End Sub
|
||||
|
||||
|
||||
End Class
|
||||
|
||||
Public Class Player
|
||||
Private _winCondition As WinCondition
|
||||
Public Property hand As New List(Of String)
|
||||
Public Property total As Integer
|
||||
Public Property ingame As Boolean
|
||||
Public Property winType
|
||||
Get
|
||||
Return _winCondition
|
||||
End Get
|
||||
Set
|
||||
_winCondition = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Sub Start()
|
||||
hand.Clear()
|
||||
total = 0
|
||||
ingame = True
|
||||
winType = WinCondition.NormalWin
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
Public Class Dealer
|
||||
Inherits Player
|
||||
|
||||
Public Property limit As Integer = 17
|
||||
Public Property hidden As String
|
||||
End Class
|
||||
|
||||
Enum WinCondition
|
||||
Bust
|
||||
NormalWin
|
||||
FiveCard
|
||||
Blackjack
|
||||
End Enum
|
|
@ -1,5 +1,5 @@
|
|||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Class Form1
|
||||
Partial Class GameWindow
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
|
@ -230,7 +230,7 @@ Partial Class Form1
|
|||
WinMessage.Size = New Size(0, 30)
|
||||
WinMessage.TabIndex = 15
|
||||
'
|
||||
' Form1
|
||||
' GameWindow
|
||||
'
|
||||
AutoScaleMode = AutoScaleMode.Inherit
|
||||
ClientSize = New Size(1264, 681)
|
||||
|
@ -251,7 +251,7 @@ Partial Class Form1
|
|||
Controls.Add(StandButton)
|
||||
Controls.Add(HitButton)
|
||||
MinimumSize = New Size(1280, 720)
|
||||
Name = "Form1"
|
||||
Name = "GameWindow"
|
||||
StartPosition = FormStartPosition.CenterScreen
|
||||
Text = "Blackjack"
|
||||
CType(PlayerCard1, ComponentModel.ISupportInitialize).EndInit()
|
|
@ -0,0 +1,58 @@
|
|||
Public Class GameWindow
|
||||
Private WithEvents game As Game
|
||||
Private Sub StartGame_Click(sender As Object, e As EventArgs) Handles StartGame.Click
|
||||
game = New Game()
|
||||
game.Start()
|
||||
End Sub
|
||||
Private Sub HitButton_Click(sender As Object, e As EventArgs) Handles HitButton.Click
|
||||
game.Hit()
|
||||
End Sub
|
||||
|
||||
Private Sub StandButton_Click(sender As Object, e As EventArgs) Handles StandButton.Click
|
||||
game.Stand()
|
||||
End Sub
|
||||
Private Sub OnResetUI() Handles game.ResetUI
|
||||
Dim pictureBoxes() As PictureBox = {PlayerCard1, PlayerCard2, PlayerCard3, PlayerCard4, PlayerCard5, PlayerCard6, PlayerCard7, PlayerCard8, PlayerCard9, PlayerCard10}
|
||||
For Each box In pictureBoxes
|
||||
box.Image = Nothing
|
||||
Next
|
||||
WinMessage.ResetText()
|
||||
HitButton.Enabled = True
|
||||
StandButton.Enabled = True
|
||||
StartGame.Enabled = False
|
||||
End Sub
|
||||
|
||||
Private Sub OnCardDealt(card As String, cardNumber As String, hide As Boolean) Handles game.CardDealt
|
||||
Dim pictureBox As PictureBox
|
||||
Debug.Print(cardNumber)
|
||||
Try
|
||||
pictureBox = CType(Me.Controls.Find("PlayerCard" + cardNumber, True).First(), PictureBox)
|
||||
If hide Then
|
||||
pictureBox.Image = My.Resources.blue
|
||||
Else
|
||||
pictureBox.Image = Utilities.GetCardImage(card)
|
||||
End If
|
||||
Catch ex As Exception
|
||||
EndGame("Error: " + ex.Message)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub SetTotalLabels(playerTotalAmount, dealerTotalAmount) Handles game.SetTotalLabels
|
||||
Dim dealerLabelTotal As String = DealerTotal.Text.Split(": ")(0)
|
||||
Dim playerLabelTotal As String = PlayerTotal.Text.Split(": ")(0)
|
||||
DealerTotal.Text = dealerLabelTotal + ": " + dealerTotalAmount.ToString()
|
||||
PlayerTotal.Text = playerLabelTotal + ": " + playerTotalAmount.ToString()
|
||||
End Sub
|
||||
|
||||
Private Sub ShowDealerCard(card) Handles game.ShowDealerCard
|
||||
PlayerCard7.Image = Utilities.GetCardImage(card)
|
||||
End Sub
|
||||
Private Sub EndGame(message) Handles game.EndGame
|
||||
WinMessage.Text = message
|
||||
HitButton.Enabled = False
|
||||
StandButton.Enabled = False
|
||||
StartGame.Enabled = True
|
||||
End Sub
|
||||
|
||||
|
||||
End Class
|
|
@ -31,7 +31,7 @@ Namespace My
|
|||
|
||||
<Global.System.Diagnostics.DebuggerStepThroughAttribute()>
|
||||
Protected Overrides Sub OnCreateMainForm()
|
||||
Me.MainForm = Form1
|
||||
Me.MainForm = GameWindow
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
Public Class Utilities
|
||||
Public Shared Function Shuffle(list)
|
||||
Dim max As Integer = list.Count - 1
|
||||
Dim random As New Random()
|
||||
For x As Integer = 0 To max
|
||||
Dim rand As Integer = random.Next(0, max)
|
||||
Dim temp As String = list(x)
|
||||
list(x) = list(rand)
|
||||
list(rand) = temp
|
||||
Next
|
||||
Return list
|
||||
End Function
|
||||
Public Shared Function GetCardImage(card) As Image
|
||||
Dim num As String = card.split(" ")(0)
|
||||
Dim suit As String = card.split(" ")(2)
|
||||
Select Case num
|
||||
Case "K"
|
||||
num = "king"
|
||||
Case "Q"
|
||||
num = "queen"
|
||||
Case "J"
|
||||
num = "jack"
|
||||
Case "A"
|
||||
num = "ace"
|
||||
End Select
|
||||
|
||||
Dim img As String = suit + "_" + num
|
||||
Return My.Resources.ResourceManager.GetObject(img.ToLower())
|
||||
End Function
|
||||
End Class
|
|
@ -0,0 +1,191 @@
|
|||
Public Class Game
|
||||
Public Event ResetUI()
|
||||
Public Event CardDealt(card, cardNumber, hide)
|
||||
Public Event SetTotalLabels(playerTotal, dealerTotal)
|
||||
Public Event ShowDealerCard(card)
|
||||
Public Event EndGame(winMessage)
|
||||
|
||||
Private player As Player
|
||||
Private dealer As Dealer
|
||||
Private deck As New List(Of String)
|
||||
|
||||
Public Sub Start()
|
||||
|
||||
Init()
|
||||
player.Start()
|
||||
dealer.Start()
|
||||
DealCard(player)
|
||||
DealCard(dealer, isDealer:=True)
|
||||
DealCard(player)
|
||||
DealCard(dealer, isDealer:=True, hide:=True)
|
||||
CheckPlayer(player)
|
||||
CheckPlayer(dealer, True)
|
||||
End Sub
|
||||
Sub Init()
|
||||
player = New Player()
|
||||
dealer = New Dealer()
|
||||
deck = CreateDeck()
|
||||
RaiseEvent ResetUI()
|
||||
End Sub
|
||||
Sub DealCard(playerDealt, Optional isDealer = False, Optional hide = False)
|
||||
Dim card As String = deck(0)
|
||||
playerDealt.hand.Add(card)
|
||||
deck.RemoveAt(0)
|
||||
GetTotal(playerDealt, hide)
|
||||
If hide Then
|
||||
playerDealt.hidden = card
|
||||
End If
|
||||
Dim cardNumber As String = If(isDealer, (playerDealt.hand.Count + 5).ToString(), playerDealt.hand.Count)
|
||||
|
||||
RaiseEvent CardDealt(card, cardNumber, hide)
|
||||
RaiseEvent SetTotalLabels(player.total, dealer.total)
|
||||
End Sub
|
||||
Sub GetTotal(playerToCheck, Optional hide = False)
|
||||
If hide Then
|
||||
Exit Sub
|
||||
End If
|
||||
Dim cards As List(Of String) = playerToCheck.hand
|
||||
If cards.Count = 0 Then
|
||||
playerToCheck.total = 0
|
||||
Return
|
||||
End If
|
||||
Dim total As Integer = 0
|
||||
Dim aceTotal As Integer = 0
|
||||
For Each card As String In cards
|
||||
Dim num As String = card.Split(" "c)(0)
|
||||
If num = "K" Or num = "Q" Or num = "J" Then
|
||||
num = 10
|
||||
End If
|
||||
If num = "A" Then
|
||||
num = 11
|
||||
aceTotal += 1
|
||||
End If
|
||||
num = Integer.Parse(num)
|
||||
total += num
|
||||
Next
|
||||
While (aceTotal > 0 And total > 21)
|
||||
aceTotal -= 1
|
||||
total -= 10
|
||||
End While
|
||||
playerToCheck.total = total
|
||||
End Sub
|
||||
Sub CheckPlayer(playerToCheck, Optional peek = False)
|
||||
If playerToCheck.total = 21 And playerToCheck.hand.count = 2 And peek Then
|
||||
playerToCheck.winType = WinCondition.Blackjack
|
||||
playerToCheck.ingame = False
|
||||
player.ingame = False
|
||||
DealerTurn()
|
||||
Exit Sub
|
||||
End If
|
||||
If playerToCheck.total = 21 And playerToCheck.hand.count = 2 Then
|
||||
playerToCheck.winType = WinCondition.Blackjack
|
||||
playerToCheck.ingame = False
|
||||
dealer.ingame = False
|
||||
DealerTurn()
|
||||
ElseIf playerToCheck.total > 21 Then
|
||||
playerToCheck.winType = WinCondition.Bust
|
||||
playerToCheck.ingame = False
|
||||
DealerTurn()
|
||||
ElseIf playerToCheck.total < 22 And playerToCheck.hand.count = 5 Then
|
||||
playerToCheck.winType = WinCondition.FiveCard
|
||||
playerToCheck.ingame = False
|
||||
dealer.ingame = False
|
||||
DealerTurn()
|
||||
End If
|
||||
If playerToCheck.total = 21 Then
|
||||
playerToCheck.ingame = False
|
||||
DealerTurn()
|
||||
End If
|
||||
|
||||
End Sub
|
||||
Sub DealerTurn()
|
||||
GetTotal(dealer)
|
||||
RaiseEvent SetTotalLabels(player.total, dealer.total)
|
||||
RaiseEvent ShowDealerCard(dealer.hidden)
|
||||
If player.winType = WinCondition.Bust Then
|
||||
CheckGame()
|
||||
Exit Sub
|
||||
End If
|
||||
If dealer.ingame And dealer.hand.Count < 5 Then
|
||||
If dealer.total = 21 And dealer.hand.Count = 2 Then
|
||||
dealer.winType = WinCondition.Blackjack
|
||||
dealer.ingame = False
|
||||
ElseIf dealer.total > 21 Then
|
||||
dealer.winType = WinCondition.Bust
|
||||
player.ingame = False
|
||||
ElseIf dealer.total < dealer.limit Then
|
||||
DealCard(dealer, isDealer:=True)
|
||||
DealerTurn()
|
||||
Else
|
||||
dealer.winType = WinCondition.NormalWin
|
||||
End If
|
||||
End If
|
||||
CheckGame()
|
||||
End Sub
|
||||
Sub Hit()
|
||||
If player.hand.Count < 5 And player.ingame Then
|
||||
DealCard(player)
|
||||
CheckPlayer(player)
|
||||
End If
|
||||
End Sub
|
||||
Sub Stand()
|
||||
If player.ingame Then
|
||||
player.ingame = False
|
||||
DealerTurn()
|
||||
End If
|
||||
End Sub
|
||||
Sub CheckGame()
|
||||
Dim winMessage As String = GetResults()
|
||||
RaiseEvent EndGame(winMessage)
|
||||
End Sub
|
||||
Function GetResults()
|
||||
If dealer.winType = WinCondition.Blackjack Then
|
||||
If player.winType = WinCondition.Blackjack Then
|
||||
Return "Player ties with Blackjack!"
|
||||
Else
|
||||
Return "Dealer wins with Blackjack!"
|
||||
End If
|
||||
End If
|
||||
If player.winType = WinCondition.Blackjack Then
|
||||
Return "Player wins with Blackjack!"
|
||||
End If
|
||||
If player.winType = WinCondition.FiveCard Then
|
||||
Return "Player wins with Five Card Charlie!"
|
||||
End If
|
||||
If player.winType = WinCondition.Bust Then
|
||||
Return "Player busts!"
|
||||
End If
|
||||
If dealer.winType = WinCondition.Bust Then
|
||||
Return "Dealer busts!"
|
||||
End If
|
||||
If player.total > dealer.total Then
|
||||
Return "Player wins with total of " + player.total.ToString() + "!"
|
||||
End If
|
||||
If player.total = dealer.total Then
|
||||
Return "Tie!"
|
||||
End If
|
||||
If player.total < dealer.total Then
|
||||
Return "Dealer wins with total of " + dealer.total.ToString() + "!"
|
||||
End If
|
||||
Return "error"
|
||||
End Function
|
||||
Function CreateDeck()
|
||||
deck.Clear()
|
||||
Dim nums As String() = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"}
|
||||
Dim suits As String() = {"Hearts", "Diamonds", "Spades", "Clubs"}
|
||||
For Each s As String In suits
|
||||
For Each n As String In nums
|
||||
deck.Add(n + " of " + s)
|
||||
Next
|
||||
Next
|
||||
Return Utilities.Shuffle(deck)
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
Public Enum WinCondition
|
||||
Bust
|
||||
NormalWin
|
||||
FiveCard
|
||||
Blackjack
|
||||
End Enum
|
|
@ -0,0 +1,28 @@
|
|||
Public Class Player
|
||||
Private _winCondition As WinCondition
|
||||
Public Property hand As New List(Of String)
|
||||
Public Property total As Integer
|
||||
Public Property ingame As Boolean
|
||||
Public Property winType
|
||||
Get
|
||||
Return _winCondition
|
||||
End Get
|
||||
Set
|
||||
_winCondition = Value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Sub Start()
|
||||
hand.Clear()
|
||||
total = 0
|
||||
ingame = True
|
||||
winType = WinCondition.NormalWin
|
||||
|
||||
End Sub
|
||||
End Class
|
||||
Public Class Dealer
|
||||
Inherits Player
|
||||
|
||||
Public Property limit As Integer = 17
|
||||
Public Property hidden As String
|
||||
End Class
|
Loading…
Reference in New Issue