Compare commits

..

No commits in common. "master" and "v1.1.0" have entirely different histories.

9 changed files with 89 additions and 209 deletions

View File

@ -1,28 +0,0 @@
# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: .NET
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Test
run: dotnet test --no-build --verbosity normal

View File

@ -1,59 +0,0 @@
Public Class Card
Private Shared idCounter As Integer = 1
Private id As Integer
Private boxId As PictureBox
Private cardImage As Image
Private card As (suit As String, number As String)
Private cardLocation As Point
Private cardHidden As Boolean
Private size As Size
Public Sub New(name As (String, String), Optional hidden As Boolean = False)
id = idCounter
idCounter += 1
boxId = New PictureBox()
card = name
cardHidden = hidden
cardImage = Utilities.GetCardImage(name, hidden)
size = New Size(125,175)
End Sub
Public Sub SetLocation(location As point)
cardLocation = location
End Sub
Public Sub SetName(name As (String, String))
card = name
End Sub
Public Sub SetHidden(hidden As Boolean)
cardHidden = hidden
End Sub
Public Function GetId()
Return id
End Function
Public Function GetBoxId()
Return boxId
End Function
Public Function GetName()
Return card
End Function
Public Function GetSuit() As String
Return card.suit
End Function
Public Function GetNumber() As String
Return card.number
End Function
Public Function GetLocation()
Return cardLocation
End Function
Public Function IsHidden()
Return cardHidden
End Function
End Class

View File

@ -38,7 +38,6 @@ Partial Class GameWindow
PlayerTotal = New Label()
DealerTotal = New Label()
WinMessage = New Label()
deckPictureBox = New PictureBox()
CType(PlayerCard1, ComponentModel.ISupportInitialize).BeginInit()
CType(PlayerCard2, ComponentModel.ISupportInitialize).BeginInit()
CType(PlayerCard3, ComponentModel.ISupportInitialize).BeginInit()
@ -49,12 +48,11 @@ Partial Class GameWindow
CType(PlayerCard8, ComponentModel.ISupportInitialize).BeginInit()
CType(PlayerCard9, ComponentModel.ISupportInitialize).BeginInit()
CType(PlayerCard10, ComponentModel.ISupportInitialize).BeginInit()
CType(deckPictureBox, ComponentModel.ISupportInitialize).BeginInit()
SuspendLayout()
'
' HitButton
'
HitButton.Anchor = AnchorStyles.Bottom Or AnchorStyles.Left
HitButton.Anchor = AnchorStyles.Top Or AnchorStyles.Right
HitButton.Enabled = False
HitButton.Font = New Font("Segoe UI", 36.0F, FontStyle.Regular, GraphicsUnit.Point)
HitButton.Location = New Point(100, 490)
@ -66,7 +64,7 @@ Partial Class GameWindow
'
' StandButton
'
StandButton.Anchor = AnchorStyles.Bottom Or AnchorStyles.Right
StandButton.Anchor = AnchorStyles.Top Or AnchorStyles.Right
StandButton.Enabled = False
StandButton.Font = New Font("Segoe UI", 36.0F, FontStyle.Regular, GraphicsUnit.Point)
StandButton.Location = New Point(780, 490)
@ -78,11 +76,11 @@ Partial Class GameWindow
'
' PlayerCard1
'
PlayerCard1.Anchor = AnchorStyles.Bottom Or AnchorStyles.Left
PlayerCard1.Anchor = AnchorStyles.Top Or AnchorStyles.Right
PlayerCard1.ErrorImage = My.Resources.Resources.blue2
PlayerCard1.Image = My.Resources.Resources.blue
PlayerCard1.InitialImage = My.Resources.Resources.blue2
PlayerCard1.Location = New Point(150, 303)
PlayerCard1.Location = New Point(150, 284)
PlayerCard1.Name = "PlayerCard1"
PlayerCard1.Size = New Size(125, 175)
PlayerCard1.TabIndex = 2
@ -90,11 +88,11 @@ Partial Class GameWindow
'
' PlayerCard2
'
PlayerCard2.Anchor = AnchorStyles.Bottom Or AnchorStyles.Left
PlayerCard2.Anchor = AnchorStyles.Top Or AnchorStyles.Right
PlayerCard2.ErrorImage = My.Resources.Resources.blue2
PlayerCard2.Image = My.Resources.Resources.blue
PlayerCard2.InitialImage = My.Resources.Resources.blue2
PlayerCard2.Location = New Point(364, 303)
PlayerCard2.Location = New Point(375, 284)
PlayerCard2.Name = "PlayerCard2"
PlayerCard2.Size = New Size(125, 175)
PlayerCard2.TabIndex = 3
@ -102,10 +100,10 @@ Partial Class GameWindow
'
' PlayerCard3
'
PlayerCard3.Anchor = AnchorStyles.Bottom
PlayerCard3.Anchor = AnchorStyles.Top Or AnchorStyles.Right
PlayerCard3.ErrorImage = Nothing
PlayerCard3.InitialImage = Nothing
PlayerCard3.Location = New Point(578, 303)
PlayerCard3.Location = New Point(578, 284)
PlayerCard3.Name = "PlayerCard3"
PlayerCard3.Size = New Size(125, 175)
PlayerCard3.TabIndex = 4
@ -113,10 +111,10 @@ Partial Class GameWindow
'
' PlayerCard4
'
PlayerCard4.Anchor = AnchorStyles.Bottom Or AnchorStyles.Right
PlayerCard4.Anchor = AnchorStyles.Top Or AnchorStyles.Right
PlayerCard4.ErrorImage = Nothing
PlayerCard4.InitialImage = Nothing
PlayerCard4.Location = New Point(792, 303)
PlayerCard4.Location = New Point(780, 284)
PlayerCard4.Name = "PlayerCard4"
PlayerCard4.Size = New Size(125, 175)
PlayerCard4.TabIndex = 5
@ -124,10 +122,10 @@ Partial Class GameWindow
'
' PlayerCard5
'
PlayerCard5.Anchor = AnchorStyles.Bottom Or AnchorStyles.Right
PlayerCard5.Anchor = AnchorStyles.Top Or AnchorStyles.Right
PlayerCard5.ErrorImage = Nothing
PlayerCard5.InitialImage = Nothing
PlayerCard5.Location = New Point(1005, 303)
PlayerCard5.Location = New Point(1005, 284)
PlayerCard5.Name = "PlayerCard5"
PlayerCard5.Size = New Size(125, 175)
PlayerCard5.TabIndex = 6
@ -153,7 +151,7 @@ Partial Class GameWindow
PlayerCard7.ErrorImage = My.Resources.Resources.blue2
PlayerCard7.Image = My.Resources.Resources.blue
PlayerCard7.InitialImage = My.Resources.Resources.blue2
PlayerCard7.Location = New Point(792, 12)
PlayerCard7.Location = New Point(780, 12)
PlayerCard7.Name = "PlayerCard7"
PlayerCard7.Size = New Size(125, 175)
PlayerCard7.TabIndex = 10
@ -161,7 +159,7 @@ Partial Class GameWindow
'
' PlayerCard8
'
PlayerCard8.Anchor = AnchorStyles.Top
PlayerCard8.Anchor = AnchorStyles.Top Or AnchorStyles.Right
PlayerCard8.ErrorImage = Nothing
PlayerCard8.InitialImage = Nothing
PlayerCard8.Location = New Point(578, 12)
@ -172,9 +170,10 @@ Partial Class GameWindow
'
' PlayerCard9
'
PlayerCard9.Anchor = AnchorStyles.Top Or AnchorStyles.Right
PlayerCard9.ErrorImage = Nothing
PlayerCard9.InitialImage = Nothing
PlayerCard9.Location = New Point(364, 12)
PlayerCard9.Location = New Point(375, 12)
PlayerCard9.Name = "PlayerCard9"
PlayerCard9.Size = New Size(125, 175)
PlayerCard9.TabIndex = 8
@ -182,6 +181,7 @@ Partial Class GameWindow
'
' PlayerCard10
'
PlayerCard10.Anchor = AnchorStyles.Top Or AnchorStyles.Right
PlayerCard10.ErrorImage = Nothing
PlayerCard10.InitialImage = Nothing
PlayerCard10.Location = New Point(150, 12)
@ -192,7 +192,7 @@ Partial Class GameWindow
'
' StartGame
'
StartGame.Anchor = AnchorStyles.Bottom
StartGame.Anchor = AnchorStyles.Top Or AnchorStyles.Right
StartGame.Font = New Font("Segoe UI", 26.25F, FontStyle.Regular, GraphicsUnit.Point)
StartGame.Location = New Point(535, 490)
StartGame.Name = "StartGame"
@ -203,7 +203,6 @@ Partial Class GameWindow
'
' PlayerTotal
'
PlayerTotal.Anchor = AnchorStyles.Bottom
PlayerTotal.AutoSize = True
PlayerTotal.Font = New Font("Segoe UI", 15.75F, FontStyle.Regular, GraphicsUnit.Point)
PlayerTotal.Location = New Point(535, 561)
@ -214,7 +213,6 @@ Partial Class GameWindow
'
' DealerTotal
'
DealerTotal.Anchor = AnchorStyles.Bottom
DealerTotal.AutoSize = True
DealerTotal.Font = New Font("Segoe UI", 15.75F, FontStyle.Regular, GraphicsUnit.Point)
DealerTotal.Location = New Point(535, 610)
@ -232,25 +230,10 @@ Partial Class GameWindow
WinMessage.Size = New Size(0, 30)
WinMessage.TabIndex = 15
'
' deckPictureBox
'
deckPictureBox.Anchor = AnchorStyles.Top Or AnchorStyles.Right
deckPictureBox.BackgroundImageLayout = ImageLayout.None
deckPictureBox.ErrorImage = My.Resources.Resources.blue2
deckPictureBox.Image = My.Resources.Resources.blue
deckPictureBox.InitialImage = My.Resources.Resources.blue2
deckPictureBox.Location = New Point(1136, 156)
deckPictureBox.Name = "deckPictureBox"
deckPictureBox.Size = New Size(125, 175)
deckPictureBox.SizeMode = PictureBoxSizeMode.Zoom
deckPictureBox.TabIndex = 16
deckPictureBox.TabStop = False
'
' GameWindow
'
AutoScaleMode = AutoScaleMode.Inherit
ClientSize = New Size(1264, 681)
Controls.Add(deckPictureBox)
Controls.Add(WinMessage)
Controls.Add(DealerTotal)
Controls.Add(PlayerTotal)
@ -281,7 +264,6 @@ Partial Class GameWindow
CType(PlayerCard8, ComponentModel.ISupportInitialize).EndInit()
CType(PlayerCard9, ComponentModel.ISupportInitialize).EndInit()
CType(PlayerCard10, ComponentModel.ISupportInitialize).EndInit()
CType(deckPictureBox, ComponentModel.ISupportInitialize).EndInit()
ResumeLayout(False)
PerformLayout()
End Sub
@ -302,5 +284,4 @@ Partial Class GameWindow
Friend WithEvents PlayerTotal As Label
Friend WithEvents DealerTotal As Label
Friend WithEvents WinMessage As Label
Friend WithEvents deckPictureBox As PictureBox
End Class

View File

@ -27,15 +27,20 @@
StartGame.Enabled = False
End Sub
Private Sub OnCardDealt(card As Card, cardNumber As String, hide As Boolean) _
Private Sub OnCardDealt(card As Tuple(Of String, 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.GetSuit(), card.GetNumber()))
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
@ -49,15 +54,6 @@
PlayerCard7.Image = Utilities.GetCardImage(card)
End Sub
Private Sub EndPlayerTurn() Handles game.EndPlayerTurn
HitButton.Enabled = False
StandButton.Enabled = False
End Sub
Private Sub MessageLabel(message) Handles game.MessageLabel
WinMessage.Text = message
End Sub
Private Sub EndGame(message) Handles game.EndGame
WinMessage.Text = message
HitButton.Enabled = False

View File

@ -2,7 +2,7 @@
Public Shared Function Shuffle(list)
Dim max As Integer = list.Count - 1
Dim random As New Random()
For x = 0 To max
For x As Integer = 0 To max
Dim rand As Integer = random.Next(0, max)
Dim temp = list(x)
list(x) = list(rand)
@ -11,10 +11,7 @@
Return list
End Function
Public Shared Function GetCardImage(card As (String, String), Optional hidden As Boolean = False) As Image
If hidden Then
Return My.Resources.blue
End If
Public Shared Function GetCardImage(card As Tuple(Of String, String)) As Image
Dim suit As String = card.Item1
Dim num As String = card.Item2
Select Case num
@ -29,10 +26,6 @@
End Select
Dim img As String = suit + "_" + num
Try
Return My.Resources.ResourceManager.GetObject(img.ToLower())
Catch
Return My.Resources.blue
End Try
End Function
End Class

View File

@ -3,13 +3,11 @@
Public Event CardDealt(card, cardNumber, hide)
Public Event SetTotalLabels(playerTotal, dealerTotal)
Public Event ShowDealerCard(card)
Public Event EndPlayerTurn()
Public Event EndGame(winMessage)
Public Event MessageLabel(message)
Private player As Player
Private dealer As Dealer
Private deck As List(Of (String, String))
Private deck As List(Of Tuple(Of String, String))
Private WithEvents dealerDelay As Timer
Public Sub Start()
@ -32,9 +30,8 @@
End Sub
Sub DealCard(playerDealt As Object, Optional hide As Boolean = False)
Dim card As (String, String) = deck(0)
Dim playingCard = New Card(card, hide)
playerDealt.hand.Add(playingCard)
Dim card As Tuple(Of String, String) = deck(0)
playerDealt.hand.Add(card)
deck.RemoveAt(0)
GetTotal(playerDealt, hide)
If hide Then
@ -43,20 +40,20 @@
Dim cardNumber As String =
If(TypeOf playerDealt Is Dealer, (playerDealt.hand.Count + 5).ToString(), playerDealt.hand.Count)
RaiseEvent CardDealt(playingCard, cardNumber, hide)
RaiseEvent CardDealt(card, cardNumber, hide)
RaiseEvent SetTotalLabels(player.total, dealer.total)
End Sub
Sub GetTotal(playerToCheck As Object, Optional hide As Boolean = False)
Dim cards As List(Of Card) = playerToCheck.hand
Dim cards As List(Of Tuple(Of String, String)) = playerToCheck.hand
If cards.Count = 0 Then
playerToCheck.total = 0
Return
End If
Dim total = 0
Dim aceTotal = 0
Dim total As Integer = 0
Dim aceTotal As Integer = 0
For Each card In cards
Dim num As String = card.GetNumber()
Dim num As String = card.Item2
If num = "K" Or num = "Q" Or num = "J" Then
num = 10
End If
@ -110,8 +107,6 @@
Sub DealerTurn()
GetTotal(dealer)
RaiseEvent MessageLabel("Dealer's turn...")
RaiseEvent EndPlayerTurn()
RaiseEvent SetTotalLabels(player.total, dealer.total)
RaiseEvent ShowDealerCard(dealer.hidden)
If player.winType = WinCondition.Bust Then
@ -189,10 +184,15 @@
End Select
End Function
Shared Function CreateDeck() As List(Of (String,String))
Function CreateDeck() As List(Of Tuple(Of String, String))
Dim response As New List(Of Tuple(Of String, String))
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"}
Dim response As List(Of (String, String)) = (From suit In suits From num In nums Select (suit, num)).ToList()
For Each suit As String In suits
For Each num As String In nums
response.Add(Tuple.Create(suit, num))
Next
Next
Return Utilities.Shuffle(response)
End Function
End Class

View File

@ -1,10 +1,10 @@
Public Class Player
Public Property hand As New List(Of Card)
Public Property hand As New List(Of Tuple(Of String, String))
Public Property total As Integer
Public Property ingame As Boolean
Public Property winType As WinCondition
Public Sub Start()
Sub Start()
hand.Clear()
total = 0
ingame = True
@ -16,6 +16,6 @@ Public Class Dealer
Inherits Player
Public Property limit As Integer = 17
Public Property hidden As (String, String)
Public Property hidden As Tuple(Of String, String)
Public Property trueTotal As Integer
End Class

View File

@ -1,3 +0,0 @@
# BlackjackGUI
A simple Blackjack game to help learn VB.net and its GUI interactions.