84 lines
1.8 KiB
AutoHotkey
84 lines
1.8 KiB
AutoHotkey
suits := ["♠", "♦", "♥", "♣"]
|
|
values := [2,3,4,5,6,7,8,9,10,"J","Q","K","A"]
|
|
Gui, font, s14
|
|
Gui, add, button, w190 gNewDeck, New Deck
|
|
Gui, add, button, x+10 wp gShuffle, Shuffle
|
|
Gui, add, button, x+10 wp gDeal, Deal
|
|
Gui, add, text, xs w600 , Current Deck:
|
|
Gui, add, Edit, xs wp r4 vDeck
|
|
Gui, add, text, xs , Hands:
|
|
Gui, add, Edit, x+10 w60 vHands gHands
|
|
Gui, add, UpDown,, 1
|
|
Edits := 0
|
|
|
|
Hands:
|
|
Gui, Submit, NoHide
|
|
loop, % Edits
|
|
GuiControl,Hide, Hand%A_Index%
|
|
|
|
loop, % Hands
|
|
GuiControl,Show, % "Hand" A_Index
|
|
|
|
loop, % Hands - Edits
|
|
{
|
|
Edits++
|
|
Gui, add, ListBox, % "x" (Edits=1?"s":"+10") " w60 r13 vHand" Edits
|
|
}
|
|
Gui, show, AutoSize
|
|
return
|
|
;-----------------------------------------------
|
|
GuiClose:
|
|
ExitApp
|
|
return
|
|
;-----------------------------------------------
|
|
NewDeck:
|
|
cards := [], deck := Dealt:= ""
|
|
|
|
loop, % Hands
|
|
GuiControl,, Hand%A_Index%, |
|
|
|
|
for each, suit in suits
|
|
for each, value in values
|
|
cards.Insert(value suit)
|
|
|
|
for each, card in cards
|
|
deck .= card (mod(A_Index, 13) ? " " : "`n")
|
|
GuiControl,, Deck, % deck
|
|
GuiControl,, Dealt
|
|
GuiControl, Enable, Button2
|
|
GuiControl, Enable, Hands
|
|
return
|
|
;-----------------------------------------------
|
|
shuffle:
|
|
gosub, NewDeck
|
|
shuffled := [], deck := ""
|
|
loop, 52 {
|
|
Random, rnd, 1, % cards.MaxIndex()
|
|
shuffled[A_Index] := cards.RemoveAt(rnd)
|
|
}
|
|
for each, card in shuffled
|
|
{
|
|
deck .= card (mod(A_Index, 13) ? " " : "`n")
|
|
cards.Insert(card)
|
|
}
|
|
GuiControl,, Deck, % deck
|
|
return
|
|
;-----------------------------------------------
|
|
Deal:
|
|
Gui, Submit, NoHide
|
|
if ( Hands > cards.MaxIndex())
|
|
return
|
|
|
|
deck := ""
|
|
loop, % Hands
|
|
GuiControl,, Hand%A_Index%, % cards.RemoveAt(1)
|
|
|
|
GuiControl, Disable, Button2
|
|
GuiControl, Disable, Hands
|
|
GuiControl,, Dealt, % Dealt
|
|
|
|
for each, card in cards
|
|
deck .= card (mod(A_Index, 13) ? " " : "`n")
|
|
GuiControl,, Deck, % deck
|
|
return
|
|
;-----------------------------------------------
|