====== AN36011 - 블랙잭 게임 ====== 큐터치 CT1820 으로 만든 블랙잭 프로그램입니다. {{ :cublocapp:an36011:cutouchblackjack.jpg?nolink |}}
'Max's Vegas BlackJack Hustler v1.0
'v1.0 for ct1820
'v.0.0.4 Added PlayAgain menus, now the BlackJack is in operating condition,
'There are several bugs I believe...
'Need To add Double Down And Split...
'Dealer hits on soft 17 just like Vegas!
'v.0.0.3 Added Stand, Hit for Dealer and Player
#include "CT18XX"
#define PZ Ct18beep 20
#define DEALERY 25
#define PLAYERY 130
Dim TX1 As Integer, TY1 As Integer
Dim mode As Byte
Dim cval As Integer
Dim clock As Long
Dim randnum As Byte
Dim DealerSum As Byte
Dim DealerAceSum As Byte 'When one of the Ace is counted as 11
Dim PlayerSum As Byte
Dim PlayerAceSum As Byte
Dim DealerCard As Byte
Dim PlayerCard As Byte
Dim FirstCard As Byte
Dim SecondCard As Byte
Dim RandomCard As Byte
Dim DealerCardtype As Byte 'Dealer's Card Type 0 = Diamond, 1 = Spade, 2=Clover, 3= Heart
mode=0
On Pad Gosub welovemax
On Timer(50) Gosub random
cval=Eeread(0,2)
If cval>200 Then cval=150
Ct18contrast cval
Delay 100
Defchr &hdb30, 0b00000001,0b10000000,_
0b00000011,0b11000000,_
0b00000111,0b11100000,_
0b00001111,0b11110000,_
0b00011111,0b11111000,_
0b00111111,0b11111100,_
0b01111111,0b11111110,_
0b11111111,0b11111111,_
0b01111111,0b11111110,_
0b00111111,0b11111100,_
0b00011111,0b11111000,_
0b00001111,0b11110000,_
0b00000111,0b11100000,_
0b00000011,0b11000000,_
0b00000001,0b10000000,_
0b00000000,0b00000000
Defchr &hdb31, 0b00000001,0b10000000,_
0b00000011,0b11000000,_
0b00001111,0b11110000,_
0b00011111,0b11111000,_
0b00111111,0b11111100,_
0b00111111,0b11111100,_
0b01111111,0b11111110,_
0b01111111,0b11111110,_
0b01111111,0b11111110,_
0b01111111,0b11111110,_
0b01111111,0b11111110,_
0b00011111,0b11111000,_
0b00000001,0b10000000,_
0b00000111,0b11100000,_
0b00001111,0b11110000,_
0b00001111,0b11110000
Defchr &hdb32, 0b00000011,0b11000000,_
0b00000111,0b11100000,_
0b00000111,0b11100000,_
0b00000111,0b11100000,_
0b00000111,0b11100000,_
0b01110111,0b11101110,_
0b11111011,0b11011111,_
0b11111111,0b11111111,_
0b11111111,0b11111111,_
0b11111111,0b11111111,_
0b01111111,0b11111110,_
0b00111101,0b10111100,_
0b00000001,0b10000000,_
0b00000111,0b11100000,_
0b00001111,0b11110000,_
0b00001111,0b11110000
Defchr &hdb33, 0b00111100,0b00111100,_
0b01111110,0b01111110,_
0b01111111,0b11111110,_
0b11111111,0b11111111,_
0b11111111,0b11111111,_
0b11111111,0b11111111,_
0b11111111,0b11111111,_
0b11111111,0b11111111,_
0b01111111,0b11111110,_
0b01111111,0b11111110,_
0b00111111,0b11111100,_
0b00011111,0b11111000,_
0b00001111,0b11110000,_
0b00000111,0b11100000,_
0b00000011,0b11000000,_
0b00000001,0b10000000
MainMenu
Do
Loop
random:
Incr clock
'Debug Dec randnum,Cr
Return
welovemax:
TX1 = Sys(10)
TY1 = Sys(11)
If mode=0 Then
If Menucheck(0,TX1,TY1) = 1 Then
rbutton 0
cval=cval+2
Ct18contrast cval
Eewrite 0,cval,2
Glocate 32,160
Dprint " "
Glocate 32,160
Dprint Dec cval
Elseif Menucheck(1,TX1,TY1) = 1 Then 'Contrast -
rbutton 1
cval=cval-2
Ct18contrast cval
Eewrite 0,cval,2
Glocate 32,160
Dprint " "
Glocate 32,160
Dprint Dec cval
Elseif Menucheck(2,TX1,TY1) = 1 Then 'Start
button 2
DealMenu
End If
Elseif mode=1 Then
If Menucheck(0,TX1,TY1) = 1 Then 'STAND
button 0
PZ
card 1,0,DEALERY,SecondCard
Delay 500
Do While DealerSum < 17 And DealerAceSum <18
card DealerCard,0,DEALERY,100
PZ
Delay 500
DealerSum=randnum + DealerSum
DealerAceSum=randnum + DealerAceSum
Glocate 136,0
Dprint " "
Glocate 136,0
If DealerAceSum <21 And DealerAceSum > DealerSum Then
Gprint "Dealer Has: ", Dec2 DealerAceSum
Debug "Dealer Has: ", Dec2 DealerAceSum,Cr
Else
Gprint "Dealer Has: ", Dec2 DealerSum
Debug "Dealer Has: ", Dec2 DealerSum,Cr
End If
Incr DealerCard
Loop
Glocate 64,64
Color 0
Boxfill 50,60,300,90,0
Color 1
Box 50,60,300,90
Font 6,1
'Style 1,1,0
If DealerSum = 21 And PlayerSum <> 21 Then
Gprint "21! Dealer WINS!"
Elseif DealerSum > 21 Then
Gprint "Dealer BUST! "
Elseif DealerSum > PlayerSum Then
Gprint "Dealer WINS! "
Elseif DealerSum = PlayerSum Then
Gprint "PUSH! "
Else
Gprint "Player WINS! "
End If
mode=2
PlayAgainMenu
Elseif Menucheck(1,TX1,TY1) = 1 Then 'HIT
rbutton 1
card PlayerCard,0,PLAYERY,100
'PZ
'Delay 500
PlayerSum=randnum + PlayerSum
PlayerAceSum=randnum + PlayerAceSum
Incr PlayerCard
Glocate 136,100
Dprint " "
Glocate 136,100
If PlayerAceSum < 22 And PlayerAceSum > PlayerSum Then
Gprint "Player Has: ", Dec PlayerAceSum
Debug "Player Has: ", Dec PlayerAceSum,Cr
Else
Gprint "Player Has: ", Dec PlayerSum
Debug "Player Has: ", Dec PlayerSum,Cr
End If
'Style 1,1,0
If PlayerSum = 21 Then
Glocate 64,64
Color 0
Boxfill 50,60,300,90,0
Color 1
Box 50,60,300,90
Font 6,1
Gprint "21! Player WINS!"
mode=2
PlayAgainMenu
Elseif PlayerSum > 21 Then
Glocate 64,64
Color 0
Boxfill 50,60,300,90,0
Color 1
Box 50,60,300,90
Font 6,1
Gprint "Player BUST! "
mode=2
PlayAgainMenu
End If
End If
Elseif mode=2 Then
If Menucheck(0,TX1,TY1) = 1 Then 'Play Again
button 0
mode=1
DealMenu
Elseif Menucheck(1,TX1,TY1) = 1 Then 'Main Menu
button 1
mode=0
MainMenu
End If
End If
Return
End
Sub button(k As Byte)
Menureverse k
PZ
Delay 500
End Sub
Sub rbutton(k As Byte)
Menureverse k
' Pulsout 18,50
PZ
Delay 500
Menureverse k
End Sub
Sub card(cardnum As Byte,cardtype As Byte,sy As Integer, random As Byte)
Dim sp As Integer
Dim sx As Integer
' Dim sy As Integer
Dim width As Integer, height As Integer
sx=8
' sy=100
width=38
height=65
sp =width+3
Box sx+(cardnum*sp),sy,sx+width+(cardnum*sp),sy+height
Glocate sx+(cardnum*sp)+3,sy + 5
If random=100 Then
randnum=Rnd(0)
randnum=randnum+clock
randnum=randnum mod 52
RandomCard = randnum
Else
randnum=random
Debug "randnum: ",Dec randnum,Cr
Color 0
Box sx+(cardnum*sp)+3,sy+3,sx+width+(cardnum*sp)-3,sy+height-3
Color 1
End If
If cardtype=0 Then
If randnum<13 Then
Gprint Chr(&hdb30)
Glocate sx+width-18+(cardnum*sp),sy+height-18
Gprint Chr(&hdb30)
Elseif randnum<26 Then
Gprint Chr(&hdb31)
Glocate sx+width-18+(cardnum*sp),sy+height-18
Gprint Chr(&hdb31)
Elseif randnum<39 Then
Gprint Chr(&hdb32)
Glocate sx+width-18+(cardnum*sp),sy+height-18
Gprint Chr(&hdb32)
Else ' Elseif cardtype=3 Then
Gprint Chr(&hdb33)
Glocate sx+width-18+(cardnum*sp),sy+height-18
Gprint Chr(&hdb33)
End If
Glocate sx+width/2+(cardnum*sp),sy+height/3
Style 0,0,0
Font 4,1
randnum=randnum mod 13
randnum=randnum+1
If randnum = 1 Then
Gprint "A"
Elseif randnum = 11 Then
Gprint "J"
randnum=10
Elseif randnum = 12 Then
Gprint "Q"
randnum=10
Elseif randnum = 13 Then
Gprint "K"
randnum=10
Else
Gprint Dec randnum
End If
Elseif cardtype=1 Then
randnum=randnum mod 13
randnum=randnum+1
If randnum = 11 Then
randnum=10
Elseif randnum = 12 Then
randnum=10
Elseif randnum = 13 Then
randnum=10
End If
Linestyle 2
Box sx+(cardnum*sp)+3,sy+3,sx+width+(cardnum*sp)-3,sy+height-3
Linestyle 1
End If
' Menuset 1,2,30+(cardnum*50),130,80+(cardnum*50),200
End Sub
Sub MainMenu()
Cls
Delay 100
Welcome
Glocate 32,160
Dprint Dec cval
'card 2,0,80,0
card 3,0,80,0
card 4,0,80,23
'card 5,0,80,39
End Sub
Sub DealMenu()
Cls
Delay 500
Font 4,1
Style 0,0,0
Glocate 0,0
Gprint "Dealer (MAX) "
Glocate 0,100
Gprint "Player (You) "
'Dealer's First Card
card 0,0,DEALERY,100
' Pulsout 18,100
PZ
Delay 500
DealerSum=randnum
If DealerSum=1 Then
DealerAceSum=11
Else
DealerAceSum=randnum
End If
Debug "Dealer 1st Card: ", Dec DealerSum,Cr
'Dealer's Second Card
card 1,1,DEALERY,100
DealerCard=2
PlayerCard=2
' Pulsout 18,100
PZ
Delay 500
'Save Dealer's Second Card
SecondCard=RandomCard
DealerSum=randnum + DealerSum
If DealerAceSum <> 11 And randnum=1 Then
DealerAceSum=11 + DealerAceSum
End If
Debug "Dealer 2nd Card: ", Dec randnum,Cr
Glocate 136,0
If DealerAceSum=21 Then
Gprint "Dealer Has: ", Dec DealerAceSum
Debug "Dealer Has: ", Dec DealerAceSum,Cr
Else
Gprint "Dealer Has: ", Dec DealerSum
Debug "Dealer Has: ", Dec DealerSum,Cr
End If
card 0,0,PLAYERY,100
' Pulsout 18,100
PZ
Delay 500
PlayerSum=randnum
If randnum=1 Then
PlayerAceSum=11
Else
PlayerAceSum=randnum
End If
FirstCard=randnum
card 1,0,PLAYERY,100
' Pulsout 18,100
PZ
Delay 500
PlayerSum=randnum+PlayerSum
If randnum=1 And PlayerAceSum <> 11 Then
PlayerAceSum=PlayerAceSum + 11
Else
PlayerAceSum=PlayerAceSum + randnum
End If
Glocate 136,100
If (PlayerAceSum > PlayerSum) And (PlayerSum <21) Then
Gprint "Player Has: ", Dec PlayerAceSum
Debug "Player Has: ", Dec PlayerAceSum,Cr
Else
Gprint "Player Has: ", Dec PlayerSum
Debug "Player Has: ", Dec PlayerSum,Cr
End If
' Style 0,0,0
Font 4,1
Menuset 0,2,0,200,100,230
Menutitle 0,10,10,"Stand"
Menuset 1,2,110,200,210,230
Menutitle 1,10,10,"Hit"
If randnum = FirstCard Then
Menuset 2,2,220,200,300,230
Menutitle 2,10,10,"Split"
End If
mode=1
If (DealerSum = 21 And PlayerSum <> 21) Or (DealerAceSum = 21 And PlayerSum <> 21)Then
PZ
card 1,0,DEALERY,SecondCard
Delay 500
Font 4,1
Glocate 64,64
Color 0
Boxfill 50,60,300,90,0
Color 1
Box 50,60,300,90
Gprint "BLACK JACK! Dealer WINS!"
mode=2
PlayAgainMenu
Elseif (PlayerSum = 21 And DealerSum <> 21) Or (PlayerAceSum = 21 And DealerSum <> 21) Then
Font 4,1
Glocate 64,64
Color 0
Boxfill 50,60,300,90,0
Color 1
Box 50,60,300,90
Gprint "BLACK JACK! Player WINS!"
mode=2
PlayAgainMenu
End If
End Sub
Sub PlayAgainMenu()
Style 0,0,0
Font 4,1
Color 0
Boxfill 0,200,319,230,0
Color 1
Menuset 0,2,0,200,100,230
Menutitle 0,10,10,"Play Again"
Menuset 1,2,110,200,210,230
Menutitle 1,10,10,"Main Menu"
End Sub
#include "BlackJack.inc"
blackjack.inc 파일입니다.
SUB WELCOME()
FONT 4,1
STYLE 0,0,0
GLOCATE 22,4
GPRINT "Max Vegas Black Jack Hustler "
GLOCATE 22,20
GPRINT "v.0.0.3"
FONT 0,0
MENUSET 0,2,10,200,32,218
MENUTITLE 0,7,1,"+"
MENUSET 1,2,38,200,62,218
MENUTITLE 1,8,1,"-"
MENUSET 2,2,84,194,212,239
MENUTITLE 2,46,14,"START"
GLOCATE 2,224
GPRINT "Contrast"
FONT 4,0
END SUB
SUB DEAL()
END SUB