====== AN36011 - 블랙잭 게임 ====== 큐터치 CT1820 으로 만든 블랙잭 프로그램입니다. {{ :cublocapp:an36011:cutouchblackjack.jpg?nolink |}}
===== 소스 프로그램 ===== {{ :cublocapp:an36011:cutouch_blackjack.zip |}} '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