Z80-21 Yet Another "BlackJack"

General games-related topics
User avatar
sanello
Posts: 100
Joined: Sat Jul 23, 2022 9:26 pm

Re: Z80-21 Yet Another "BlackJack"

Post by sanello »

I am not sure what you are asking me. Go back to working with Z8021Beta4_2b and I'll play with the multiple decks this weekend. IF CD=number of decks then DIM C(13,4) would become DIM C(13*CD,4) and so on. So if 6 decks was a choice it would be equivalent to C(78,4). Quite a lot. So I'll have to see if it will fit. I am guessing 4 decks would be plenty though.

It looks pretty fantastic as it is, though. I must say WOW again.
-sanello
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: Z80-21 Yet Another "BlackJack"

Post by XavSnap »

C(78,4)
:shock:

1 568‬ Bytes only for the VARS allocation.

Error 4 !
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: Z80-21 Yet Another "BlackJack"

Post by XavSnap »

Reverse release: (with left scrolling)

[Edit: have a look to the next messages]
Last edited by XavSnap on Thu Aug 04, 2022 4:37 am, edited 1 time in total.
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
sanello
Posts: 100
Joined: Sat Jul 23, 2022 9:26 pm

Re: Z80-21 Yet Another "BlackJack"

Post by sanello »

Maybe 6 is too lofty a goal. How about 1 2 or 3? ....4?
-sanello
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: Z80-21 Yet Another "BlackJack"

Post by XavSnap »

Hi Sanello,
I worked on the split display, and diet the program again.
The display seem to be ok now.
Maybe 6 is too lofty a goal. How about 1 2 or 3? ....4?
Depending on memory resources.
Start with the lower value and code the main routine, we will the lower value to 16kb, others value should be used on a 32kb memory RAMpack.

Just code a standard code able to host 1 to 6 options with an adaptative DIM (value,4) : 1-2 = 16k & 3-6=32k

We can code cards display in ASM to reduce the memory used.

:geek:
Z8021_diet.bas.txt
(17.66 KiB) Downloaded 34 times
Z8021Beta4_2e.P
(13.39 KiB) Downloaded 33 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
sanello
Posts: 100
Joined: Sat Jul 23, 2022 9:26 pm

Re: Z80-21 Yet Another "BlackJack"

Post by sanello »

I added 4 decks and it works, but I want to be able to ask how many decks 1-4. I can't work with it well since i cannot scroll through the lines of code. I have to specifically list a line number and can't scroll up and down the list like normal. Here is the proof of concept although I don't want it to work like this. Tell me how to get it to list properly so I can do it right.
Z8021Beta4_2me.P
(13.39 KiB) Downloaded 48 times
Also, your e version is not turning over the dealers hole card at times
-sanello
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: Z80-21 Yet Another "BlackJack"

Post by XavSnap »

Hi Sanello,
Better take this release to move cursor in the program:
Done : POKE 16514,0: POKE 16515,0

Updated P from the "Z8021Beta4_2me.P" release:
Z8021Beta4_2f.P
(13.31 KiB) Downloaded 30 times
-----------------------------------

Code: Select all

   202 FOR I=1 TO 5
   204 LET P(I)=0
   206 LET D(I)=0
   208 NEXT I
to

Code: Select all

   204 DIM P(5)
   208 DIM D(5)
-----------------------------------

Code: Select all

 # 9030 IF Q$="Y" THEN GOTO 9070
 # 9040 IF Q$="N" THEN GOTO 9081
 # 9060 GOTO 9010
to

Code: Select all

 9040 GOTO 9010+(60 AND Q$="Y")+(71 AND Q$="N")
-----------------------------------

Code: Select all

#  9930 IF H$="Y" THEN RUN
#  9950 IF H$="N" THEN GOTO 9999
#  9960 GOTO 9920
to

Code: Select all

9930 RUN (9999 AND NOT H$="Y")
PS: Can't target the missing dealer's card...
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
sanello
Posts: 100
Joined: Sat Jul 23, 2022 9:26 pm

Re: Z80-21 Yet Another "BlackJack"

Post by sanello »

Original code show dealer card

3001 through 3003 check status of player's finished hand then
3005 GOSUB 9800

9800 through 9870 show dealers hole card

3001 through 3005 missing
-sanello
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: Z80-21 Yet Another "BlackJack"

Post by XavSnap »

Hi Sanello,

I put the original listing here : viewtopic.php?p=47793#p47793

The Z value is displayed, but the box is overwrite by a blank string ?

Code: Select all

  3000 GOSUB 9096
  3006 PRINT AT 8,0;Y;TAB 4;"’bust’" AND Y>21;"´´´´´´´´´"
  3008 IF U=1 THEN GOSUB 8160
  3010 IF U=2 THEN GOSUB 8260
  3012 GOSUB 9800
(...)
  9800 LET A=15
  9810 LET J=0
  9820 LET C(G,H)=G
  9830 LET S=H
  9840 LET T=G
  9850 GOSUB 2000
  9860 PRINT AT 13,0;N$;AT 13,0;Z
  9870 RETURN 
Something's wrong, Z is the dealer value, it's display in the player box... true? (my add)
is it the missing score ?

Code: Select all

  9078 IF Z=21 THEN PRINT AT 8,0;Z;TAB 4;"ins–«won"
  9080 IF Z<>21 THEN PRINT AT 8,0;Z;TAB 4;"ins–«lost"
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: Z80-21 Yet Another "BlackJack"

Post by XavSnap »

Hi,
A little reminder:
length 12700 bytes. (We had to add the D_file and the vars=14175 bytes)
Memory left : 2074 bytes.

Code: Select all

     0  REM [HEX:\
00,00,E7,CD,92,0D,CD,F5,\
0B,68,61,CD,D8,09,01,05,\
00,09,EB,2A,0C,40,23,FD,\
36,7C,01,1A,CB,77,CB,B7,\
FD,77,7B,28,0A,13,1A,FD,\
77,7C,FE,01,CA,5B,00,ED,\
4B,7B,40,71,23,CB,76,28,\
01,23,10,F7,13,18,D8,21,\
3D,40,36,20,2A,0C,40,0E,\
16,23,7E,06,1F,F5,23,7E,\
2B,77,23,10,F9,F1,36,88,\
23,0D,20,ED,21,3D,40,35,\
3E,00,BE,20,DF,C9 ]

     1  REM [HEX:\
00,81,82,0A,43,04,07,0A,\
06,03,86,0A,06,03,86,4A,\
04,06,03,84,4A,02,81,0A,\
06,86,03,04,83,C0,02,8A,\
4A,03,06,4A,02,05,0A,85,\
0A,05,0A,85,4A,06,06,0A,\
02,C5,02,40,03,85,C0,04,\
4A,02,06,4A,03,84,80,07,\
0A,05,0A,85,0A,87,8A,4A,\
02,06,4A,03,85,0A,86,00,\
87,01,02,84,07,01,0A,06,\
4A,04,05,0A,85,0A,05,0A,\
85,4A,04,06,4A,04,85,4A,\
02,86,01,40,02,43,02,0A,\
81,CA,04,0A,82,8A,81,0A,\
86,8A,06,4A,04,82,CA,02,\
4A,02,81,8A,4A,22,40,42,\
06,C3,1E,86,85,4A,1E,05,\
85,00,2A,33,39,2A,37,00,\
39,26,27,31,2A,00,37,3A,\
31,2A,38,00,87,1D,00,2B,\
34,37,00,1E,0E,1D,00,05,\
85,40,03,2B,34,37,00,1E,\
1D,00,35,26,3E,34,3A,39,\
40,03,87,1E,00,2B,34,37,\
00,1F,0E,1E,00,05,85,40,\
13,87,1F,00,2B,34,37,00,\
22,0E,21,00,05,85,49,1E,\
05,86,43,1E,06,40,42,04,\
40,1E,06,02,04,40,19,87,\
82,00,06,40,02,02,04,40,\
17,87,C0,02,82,02,04,00,\
06,40,18,02,C0,02,07,00,\
02,06,40,02,35,37,34,2C,\
37,26,72,02,2A,29,00,27,\
3E,0E,00,38,1B,26,33,2A,\
71,02,34,00,87,82,40,41,\
40,01 ]

     2  REM [HEX:\
CA,05,88,CA,05,88,CA,05,\
88,CA,05,88,CA,05,88,07,\
84,05,40,03,85,88,05,40,\
03,85,88,05,40,03,85,88,\
05,40,03,85,88,05,40,03,\
85,88,05,85,05,40,03,85,\
88,05,40,03,85,88,05,40,\
03,85,88,05,40,03,85,88,\
05,40,03,85,88,05,85,05,\
40,03,85,88,05,40,03,85,\
88,05,40,03,85,88,05,40,\
03,85,88,05,40,03,85,88,\
05,85,05,40,03,85,88,05,\
40,03,85,88,05,40,03,85,\
88,05,40,03,85,88,05,40,\
03,85,88,05,85,05,40,03,\
85,88,05,40,03,85,88,05,\
40,03,85,88,05,40,03,85,\
88,05,40,03,85,88,05,85,\
C9,05,88,C9,05,88,C9,05,\
88,C9,05,88,C9,05,88,05,\
85,CA,04,C8,1A,82,81,40,\
03,80,C9,16,B5,B1,A6,BE,\
AA,B7,CA,03,80,CA,1C,3C,\
26,71,02,2A,39,8D,40,05,\
85,40,16,27,2A,39,8D,40,\
05,85,40,13,C9,03,80,C9,\
1C,40,03,80,CA,14,A8,B7,\
B4,BA,B5,AE,AA,B7,43,04,\
40,1A,07,84,8F,C8,03,8F,\
00,C8,05,00,C8,05,00,C8,\
05,00,C8,05,00,05,85,C8,\
05,00,C8,05,00,C8,05,00,\
C8,05,00,C8,05,00,05,85,\
C8,05,00,C8,05,00,C8,05,\
00,C8,05,00,C8,05,00,05,\
85,C8,05,00,C8,05,00,C8,\
05,00,C8,05,00,C8,05,00,\
05,85,C8,05,00,C8,05,00,\
C8,05,00,C8,05,00,C8,05,\
00,05,85,C8,05,00,C8,05,\
00,C8,05,00,C8,05,00,C8,\
05,00,05,85,8F,C8,03,8F,\
00,C8,05,00,C8,05,00,C8,\
05,00,C8,05,00,82,81,40,\
40,40,01 ]

     3  REM [HEX:\
C8,08,40,02,0E,16,40,02,\
87,C9,03,04,40,02,16,0E,\
00,C8,0F,40,03,0E,40,03,\
85,1B,0B,1B,05,40,03,0E,\
40,02,C8,0D,0E,16,00,16,\
0E,40,02,81,80,0A,11,00,\
07,04,40,02,0E,16,00,16,\
C8,0C,0E,40,03,0E,00,85,\
88,02,8A,16,06,00,85,40,\
02,0E,40,03,C8,0B,00,0E,\
40,03,0E,00,81,88,04,88,\
89,18,87,00,05,00,0E,40,\
03,0E,C8,09,40,02,0E,40,\
03,0E,85,88,87,05,88,32,\
00,85,05,02,04,0E,40,03,\
0E,C8,09,00,09,0E,40,03,\
87,89,8A,81,05,88,3B,00,\
85,80,04,86,40,02,5A,02,\
0E,C8,08,00,49,02,0E,16,\
00,87,03,C4,02,80,10,88,\
0E,00,11,80,84,03,86,00,\
D8,03,00,C8,06,C9,1B,C8,\
03,40,FF,40,E0,40,01 ]

     5 LET SC=16516
     6 LET SD=16577
     8 GOSUB 9100
     9 RAND 
    10 DIM P(5)
    20 DIM D(5)
    30 DIM A$(4,3)
    40 LET A$(1)="CLB"
    50 LET A$(2)="SPD"
    60 LET A$(3)="DMD"
    70 LET A$(4)="HRT"
    71 LET B$="¼¸¸¸¯"
    72 LET C$="ª®®®¬"
    73 LET D$="winner«"
    74 LET F$="loser«"
    75 LET G$="draw«"
    76 LET I$="push«"
    77 LET J$="µµµµµ³"
    78 LET K$="º   °"
    79 LET L$="´´´´´³"
    80 LET M$="     "
    81 LET N$="   "
    85 LET W=1000
    90 CLS 
    91 IF W<2 THEN GOTO 9900
    92 IF W>9999 THEN GOTO 9970
   100 PRINT AT 0,0;"SHUFFLING"
   110 DIM C(13,4)
   120 FOR I=1 TO 4
   130 FOR N=1 TO 13
   140 PRINT ".";
   150 LET C(N,I)=N
   160 NEXT N
   170 NEXT I
   180 LET L=52
   190 RAND USR SD
   191 PRINT USR SC,VAL "3"
   194 IF W<1 THEN GOTO 9900
   195 IF W>9999 THEN GOTO 9970
   196 LET Y1=0
   197 LET Y2=Y1
   198 LET P1=0
   199 LET P2=P1
   200 PRINT AT 10,0;"WALLET:$";M$;AT 10,8;W
   204 DIM P(5)
   208 DIM D(5)
   210 PRINT AT 11,0;"BET ?";M$;M$
   220 INPUT B
   221 IF B/2=INT (B/2) THEN GOTO 224
   222 PRINT AT 11,0;"EVEN BETS ONLY"
   223 GOTO 270
   225 LET V=0
   226 LET E=V
   227 LET S=V
   228 LET T=V
   229 LET U=V
   230 LET B=INT B
   240 IF B<=W AND B<501 AND B>0 THEN GOTO 315
   250 IF B>W THEN GOTO 300
   260 PRINT AT 11,0;"max500min1"
   270 GOSUB 1300
   290 GOTO 210
   300 PRINT AT 11,0;"$LOW FUNDS$"
   310 GOTO 270
   320 RAND USR SD
   340 PRINT USR SC,VAL "2"
   350 PRINT AT 10,7;M$;AT 10,7;W-B;AT 11,7;M$;AT 11,7;B
   360 LET W=W-B
   364 LET Q=0
   368 LET B1=Q
   370 LET B2=Q
   375 LET A=Q
   380 LET J=Q
   390 GOSUB 7000
   400 LET F=C(T,S)
   410 LET E$=A$(S)
   420 IF C(T,S)>9 THEN LET P(1)=10
   430 IF C(T,S)>1 AND C(T,S)<=9 THEN LET P(1)=C(T,S)
   440 IF C(T,S)=1 THEN LET P(1)=11
   455 GOSUB 9096
   460 GOSUB 2000
   462 IF U AND Y=1 THEN LET Y=11
   464 IF U AND Y=11 THEN LET P(1)=11
   465 PRINT AT 8,0;N$;AT 8,0;Y;
   470 LET J=6
   480 GOSUB 7000
   490 IF NOT U THEN LET M=C(T,S)
   500 IF C(T,S)>9 THEN LET P(2)=10
   510 IF C(T,S)>1 AND C(T,S)<=9 THEN LET P(2)=C(T,S)
   520 IF C(T,S)=1 THEN LET P(2)=11
   535 GOSUB 9096
   540 IF Y>21 THEN LET P(1)=1
   541 GOSUB 9096
   542 GOSUB 2000
   545 PRINT AT 8,0;N$;AT 8,0;Y;
   547 IF U>0 THEN GOTO 715
   550 LET A=15
   560 LET J=0
   570 GOSUB 7000
   575 LET H=S
   576 LET G=T
   580 IF C(T,S)>9 THEN LET D(1)=10
   590 IF C(T,S)>1 AND C(T,S)<=9 THEN LET D(1)=C(T,S)
   591 IF C(T,S)=1 THEN LET D(1)=11
   595 LET C(T,S)=0
   610 GOSUB 5000
   620 LET J=6
   630 GOSUB 7000
   640 IF C(T,S)>9 THEN LET D(2)=10
   650 IF C(T,S)>1 AND C(T,S)<=9 THEN LET D(2)=C(T,S)
   660 IF C(T,S)=1 THEN LET D(2)=11
   665 GOSUB 9092
   670 IF Z>21 AND D(1)=11 THEN LET D(1)=1
   685 GOSUB 9092
   690 GOSUB 2000
   692 PRINT AT 13,0;N$;AT 13,0;D(2)
   697 IF U=1 THEN GOTO 715
   700 IF F=M THEN GOSUB 8000
   705 IF NOT U THEN GOSUB 9000
   710 IF U=1 THEN GOTO 460
   715 IF NOT U THEN LET BC=B
   716 IF U=1 THEN LET BC=B1
   717 IF U=2 THEN LET BC=B2

   718 IF W>=B+BC THEN PRINT AT 10,13;"HIT,STAY OR DOUBLE?";TAB 14;M$;"H/S/D";M$;N$
   719 IF W<B+BC THEN PRINT AT 10,13;" HIT OR STAY? H/S"
   720 GOSUB 8300
   730 PRINT AT 10,13;M$;M$;M$;N$;" ";TAB 13;M$;M$;M$;N$;" "
   740 IF H$="S" THEN GOTO 3000
   750 IF H$="H" THEN GOTO 770
   755 IF H$="D" THEN GOTO 765
   760 GOTO 718
   765 IF W>=B+BC THEN GOTO 770
   767 GOTO 715
   770 LET A=0
   771 LET J=12
   772 IF H$<>"D" THEN GOTO 787
   774 LET W=W-BC
   776 LET B=B+BC
   780 IF U=2 THEN LET B2=B2+B2
   785 IF U=1 THEN LET B1=B1+B1
   787 PRINT AT 10,7;M$;AT 10,7;W;TAB 7;B
   789 IF U<>0 THEN PRINT AT 10,13;"BET1 $";B1;" BET2 $";B2
   790 GOSUB 7000
   800 IF C(T,S)>9 THEN LET P(3)=10
   810 IF C(T,S)>1 AND C(T,S)<=9 THEN LET P(3)=C(T,S)
   820 IF C(T,S)=1 THEN LET P(3)=11
   825 GOSUB 9096
   830 FOR I=1 TO 3
   840 IF Y>21 AND P(I)=11 THEN LET P(I)=1
   850 GOSUB 9096
   855 NEXT I
   860 GOSUB 2000
   870 IF Y>21 THEN GOTO 3000
   880 PRINT AT 8,0;N$;AT 8,0;Y;TAB 4;"´´´´´´´´´"
   885 IF H$="D" THEN GOTO 3000
   890 PRINT AT 10,14;"HIT OR STAY? H/S"
   900 GOSUB 8300
   910 PRINT AT 10,14;M$;M$;M$;" "
   920 IF H$="S" THEN GOTO 3000
   930 IF H$="H" THEN GOTO 950
   940 GOTO 890
   950 LET J=18
   960 GOSUB 7000
   970 IF C(T,S)>9 THEN LET P(4)=10
   980 IF C(T,S)>1 AND C(T,S)<=9 THEN LET P(4)=C(T,S)
   990 IF C(T,S)=1 THEN LET P(4)=11
   995 GOSUB 9096
  1000 FOR I=1 TO 4
  1010 IF Y>21 AND P(I)=11 THEN LET P(I)=1
  1020 GOSUB 9096
  1030 NEXT I
  1040 GOSUB 2000
  1050 IF Y>21 THEN GOTO 3000
  1060 PRINT AT 8,0;N$;AT 8,0;Y;
  1070 PRINT AT 10,14;"HIT OR STAY? H/S"
  1080 GOSUB 8300
  1090 PRINT AT 10,14;M$;M$;M$;" "
  1100 IF H$="S" THEN GOTO 3000
  1110 IF H$="H" THEN GOTO 1130
  1120 GOTO 1070
  1130 LET J=24
  1140 GOSUB 7000
  1150 IF C(T,S)>9 THEN LET P(5)=10
  1160 IF C(T,S)<=9 THEN LET P(5)=C(T,S)
  1170 FOR I=1 TO 4
  1180 IF P(I)=11 THEN LET P(I)=1
  1190 NEXT I
  1195 GOSUB 9096
  1200 GOSUB 2000
  1201 IF Y>21 AND P(5)=11 THEN LET P(5)=1
  1202 GOSUB 9096
  1205 IF U=1 THEN LET P1=P(5)
  1207 IF U=2 THEN LET P2=P(5)
  1210 IF Y>21 THEN GOTO 3000
  1220 PRINT AT 8,0;N$;AT 8,0;Y;
  1230 GOTO 3000
  1300 FOR I=1 TO 50
  1310 NEXT I
  1320 RETURN 
  2000 GOSUB 5000+(C(T,S)*100)
  2030 LET C(T,S)=0
  2040 RETURN 

  3000 GOSUB 9096
  3006 PRINT AT 8,0;Y;TAB 4;"’bust’" AND Y>21;"´´´´´´´´´"
  3008 IF U=1 THEN GOSUB 8160
  3010 IF U=2 THEN GOSUB 8260
  3012 GOSUB 9800

  3014 IF Z>16 THEN GOTO 4510
  3015 LET J=12
  3016 IF Y>21 THEN GOTO 4515
  3017 IF Y1>21 AND Y2>21 THEN GOTO 4800
  3020 GOSUB 7000
  3030 IF C(T,S)>9 THEN LET D(3)=10
  3040 IF C(T,S)<=9 THEN LET D(3)=C(T,S)
  3050 IF C(T,S)=1 THEN LET D(3)=11
  3055 GOSUB 9092
  3060 FOR I=1 TO 3
  3070 IF Z>21 AND D(I)=11 THEN LET D(I)=1
  3080 GOSUB 9092
  3085 NEXT I
  3090 GOSUB 2000
  3095 PRINT AT 13,0;N$;AT 13,0;Z
  3100 IF Z>21 THEN GOTO 4500
  3110 IF Z>16 THEN GOTO 4510
  3120 LET J=18
  3130 GOSUB 7000
  3140 IF C(T,S)>9 THEN LET D(4)=10
  3150 IF C(T,S)<=9 THEN LET D(4)=C(T,S)
  3160 IF C(T,S)=1 THEN LET D(4)=11
  3165 GOSUB 9092
  3170 FOR I=1 TO 4
  3180 IF Z>21 AND D(I)=11 THEN LET D(I)=1
  3190 GOSUB 9092
  3200 NEXT I
  3210 GOSUB 2000
  3220 PRINT AT 13,0;N$;AT 13,0;Z
  3230 IF Z>21 THEN GOTO 4500
  3240 IF Z>16 THEN GOTO 4510
  3250 LET J=24
  3260 GOSUB 7000
  3270 IF C(T,S)>9 THEN LET D(5)=10
  3280 IF C(T,S)<=9 THEN LET D(5)=C(T,S)
  3290 IF C(T,S)=1 THEN LET D(5)=11
  3295 GOSUB 9092
  3300 FOR I=1 TO 5
  3310 IF Z>21 AND D(I)=11 THEN LET D(I)=1
  3320 GOSUB 9092
  3330 NEXT I
  3350 GOSUB 2000
  3360 PRINT AT 13,0;N$;AT 13,0;Z
  3370 IF Z>21 THEN GOTO 4500
  3380 GOTO 4510
  4500 PRINT AT 13,0;Z;TAB 4;"’bust’"
  4510 GOSUB 9092
  4515 LET K=0
  4516 IF Y1>0 THEN GOTO 4800
  4530 IF Y>Z AND Y<22 THEN LET K=1
  4540 IF Z>21 AND Y<22 THEN LET K=1
  4550 IF Z=Y AND Y<22 THEN LET K=3
  4554 IF Z<22 AND Y<22 AND P(5)>0 THEN LET K=1
  4556 IF Y=21 AND Z<>21 THEN LET K=2
  4560 IF K=1 THEN LET W=W+B+B
  4565 IF K=2 THEN LET W=INT (W+B+(B*(O/X)))
  4570 IF K=3 THEN LET W=W+B
  4580 IF K=1 OR K=2 THEN PRINT AT 3,0;"««";D$;D$;D$;D$;"««"
  4590 IF K=3 THEN PRINT AT 3,0;"«";G$;I$;G$;I$;G$;I$;"«"
  4600 IF NOT K THEN PRINT AT 3,0;"««";F$;F$;F$;F$;F$
  4610 GOSUB 1300
  4630 GOTO 4910
  4800 LET K1=0
  4801 LET K2=0
  4804 IF Y1>Z AND Y1<22 THEN LET K1=1
  4805 IF Y2>Z AND Y2<22 THEN LET K2=1
  4810 IF Z>21 AND Y1<22 THEN LET K1=1
  4815 IF Z>21 AND Y2<22 THEN LET K2=1
  4820 IF Z=Y1 AND Y1<22 THEN LET K1=3
  4825 IF Z=Y2 AND Y2<22 THEN LET K2=3
  4830 IF Z<22 AND Y1<22 AND P1>0 THEN LET K1=1
  4835 IF Z<22 AND Y2<22 AND P2>0 THEN LET K2=1
  4837 IF Y1=21 AND Z<>21 THEN LET K1=2
  4838 IF Y2=21 AND Z<>21 THEN LET K2=2
  4840 IF K1=1 THEN LET W=W+B1+B1
  4845 IF K2=1 THEN LET W=W+B2+B2
  4847 IF K1=2 THEN LET W=INT (W+(B1*(O/X)))
  4848 IF K2=2 THEN LET W=INT (W+(B2*(O/X)))
  4850 IF K1=3 THEN LET W=W+B1
  4855 IF K2=3 THEN LET W=W+B2
  4860 IF K1=1 OR K1=2 THEN PRINT AT 3,0;"«««hand˜«";D$;D$;D$;"««"
  4865 IF K2=1 OR K2=2 THEN PRINT AT 5,0;"«««hand™«";D$;D$;D$;"««"
  4870 IF K1=3 THEN PRINT AT 3,0;"«hand˜«";I$;G$;I$;G$;I$
  4875 IF K2=3 THEN PRINT AT 3,0;"«hand™«";I$;G$;I$;G$;I$
  4880 IF NOT K1 THEN PRINT AT 3,0;"«hand˜«";F$;F$;F$;F$;"«"
  4885 IF NOT K2 THEN PRINT AT 5,0;"«hand™«";F$;F$;F$;F$;"«"
  4890 GOSUB 1300
  4910 IF L>16 THEN GOTO 190
  4920 GOTO 90
  5000 PRINT AT A,J;"«¯¯¯¯";TAB J;"ª±±±¯";TAB J;"ª±±±¯";TAB J;"ª±±±¯";TAB J;"ª±±±¯";TAB J;"ª±±±¯";TAB J;"ªªªª«"
  5040 RETURN 
  5100 PRINT AT A,J;B$;TAB J;"º²¸¹°";TAB J;"ºº °°";TAB J;"º¼¸¯°";TAB J;"ºº °°";TAB J;"º";A$(S);"°";TAB J;C$
  5170 RETURN 
  5200 PRINT AT A,J;B$;TAB J;"º 2 °";TAB J;K$;TAB J;"º 2 °";TAB J;K$;TAB J;"º";A$(S);"°";TAB J;C$
  5270 RETURN 
  5300 PRINT AT A,J;B$;TAB J;"º 3 °";TAB J;"º 3 °";TAB J;"º 3 °";TAB J;K$;TAB J;"º";A$(S);"°";TAB J;C$
  5370 RETURN 
  5400 PRINT AT A,J;B$;TAB J;"º4 4°";TAB J;K$;TAB J;"º4 4°";TAB J;K$;TAB J;"º";A$(S);"°";TAB J;C$
  5470 RETURN 
  5500 PRINT AT A,J;B$;TAB J;"º5 5°";TAB J;"º 5 °";TAB J;"º5 5°";TAB J;K$;TAB J;"º";A$(S);"°";TAB J;C$
  5570 RETURN 
  5600 PRINT AT A,J;B$;TAB J;"º6 6°";TAB J;"º6 6°";TAB J;"º6 6°";TAB J;K$;TAB J;"º";A$(S);"°";TAB J;C$
  5670 RETURN 
  5700 PRINT AT A,J;B$;TAB J;"º7 7°";TAB J;"º 7 °";TAB J;"º7 7°";TAB J;"º7 7°";TAB J;"º";A$(S);"°";TAB J;C$
  5770 RETURN 
  5800 PRINT AT A,J;B$;TAB J;"º8 8°";TAB J;"º8 8°";TAB J;"º8 8°";TAB J;"º8 8°";TAB J;"º";A$(S);"°";TAB J;C$
  5870 RETURN 
  5900 PRINT AT A,J;B$;TAB J;"º9 9°";TAB J;"º9 9°";TAB J;"º999°";TAB J;"º9 9°";TAB J;"º";A$(S);"°";TAB J;C$
  5970 RETURN 
  6000 PRINT AT A,J;B$;TAB J;"ºTEN°";TAB J;"º ˜ °";TAB J;"º — °";TAB J;"ºTEN°";TAB J;"º";A$(S);"°";TAB J;C$
  6070 RETURN 
  6100 PRINT AT A,J;B$;TAB J;"º·¯¸°";TAB J;"º ° °";TAB J;"º ° °";TAB J;"º±» °";TAB J;"º";A$(S);"°";TAB J;C$
  6170 RETURN 
  6200 PRINT AT A,J;B$;TAB J;"º²¸¹°";TAB J;"ºº °°";TAB J;"ºº²°°";TAB J;"º·®±°";TAB J;"º";A$(S);"°";TAB J;C$
  6270 RETURN 
  6300 PRINT AT A,J;B$;TAB J;"ºº »°";TAB J;"ºª» °";TAB J;"º¼± °";TAB J;"ºº ±°";TAB J;"º";A$(S);"°";TAB J;C$
  6370 RETURN 
  7000 LET T=INT (RND*13+1)
  7100 LET S=INT (RND*4+1)
  7500 IF C(T,S)=0 THEN GOTO 7000
  7540 LET L=L-1
  7550 PRINT AT 14,10;"CARDS LEFT:";L;" "
  7600 RETURN 
  8000 IF W<B+B AND NOT U THEN RETURN 
  8005 IF U=2 THEN RETURN 
  8006 GOSUB 9000
  8010 PRINT AT 7,8;"splitŠ Y OR N"
  8012 GOSUB 8300
  8014 LET Q$=H$
  8015 IF Q$="Y" THEN GOTO 8050
  8020 IF Q$="N" THEN RETURN 
  8030 GOTO 8010
  8040 RETURN 

  8050 LET U=1
  8056 LET A=0
  8058 PRINT AT 7,8;"³³³³³³³³³³³³³"
  8060 PRINT AT 5,0;"hand˜"
  8070 GOSUB 8400
  8080 LET B1=B
  8090 LET B2=B
  8100 PRINT AT 11,13;"BET1 $";B1;" BET2 $";B2
  8110 LET W=W-B1
  8120 LET B=B+B
  8130 PRINT AT 10,7;M$;AT 10,7;W;AT 11,7;M$;AT 11,7;B
  8142 IF F=1 THEN LET P(1)=11
  8150 RETURN 

  8160 LET Y1=Y
  8162 GOSUB 1300
  8166 PRINT AT 8,0;N$
  8170 LET U=2
  8180 FOR I=2 TO 5
  8190 LET P(I)=0
  8200 NEXT I
  8210 LET C(T,S)=M
  8215 PRINT AT 5,0;"hand™"
  8220 LET A=0
  8230 LET J=0
  8235 GOSUB 8400
  8240 PRINT AT 10,14;"hand˜ SUM:";Y1
  8250 GOTO 470

  8260 LET Y2=Y
  8262 GOSUB 1300
  8270 PRINT AT 10,14;"hand™ SUM:";Y2
  8280 RETURN 

  8300 IF INKEY$<>"" THEN GOTO 8300
  8310 IF INKEY$="" THEN GOTO 8310
  8320 LET H$=INKEY$
  8330 RETURN 
  8400 PRINT AT 0,6;J$;J$;J$;J$
  8410 FOR I=1 TO 5
  8420 PRINT TAB 6;K$;"³";K$;"³";K$;"³";K$
  8430 NEXT I
  8440 PRINT TAB 6;L$;L$;L$;L$
  8450 RETURN 
  9000 IF Y=21 AND Z=21 THEN GOSUB 9800
  9001 IF Y<>21 AND D(2)=11 AND W>=B/2 THEN GOTO 9019
  9002 IF Y=21 AND Z<>21 THEN LET K=2
  9003 IF Z=21 AND Y<>21 THEN LET K=0
  9004 IF Z<>21 AND Y<>21 THEN RETURN 
  9005 GOSUB 9800
  9006 GOTO 4560

  9019 PRINT AT 7,8;"insuranceŠ Y/N"
  9020 GOSUB 8300
  9022 LET Q$=H$
  9030 PRINT AT 7,8;"³³³³³³³³³³³³³³"

 # 9030 IF Q$="Y" THEN GOTO 9070
 # 9040 IF Q$="N" THEN GOTO 9081
 # 9060 GOTO 9010

 9040 GOTO 9010+(60 AND Q$="Y")+(71 AND Q$="N")

  9070 IF Z=21 THEN LET W=W+(B/2)
  9075 IF Z<>21 THEN LET W=W-(B/2)
  9076 PRINT AT 10,7;M$;AT 10,7;W
  9078 IF Z=21 THEN PRINT AT 13,0;Z;TAB 4;"ins–«won"
  9080 IF Z<>21 THEN PRINT AT 13,0;Z;TAB 4;"ins–«lost"
  9081 IF Z=21 THEN GOSUB 9800
  9082 IF Z=21 THEN GOTO 4515
  9090 GOTO 9002
  9092 LET Z=D(1)+D(2)+D(3)+D(4)+D(5)
  9094 RETURN 
  9096 LET Y=P(1)+P(2)+P(3)+P(4)+P(5)
  9098 RETURN 
  9100 PRINT USR SC,VAL "1"
  9200 LET MP=1
  9300 GOSUB 8300
  9400 LET Q$=H$
  9410 IF Q$>"0" AND Q$<"4" THEN GOTO 9430
  9420 GOTO 9300
  9430 LET O=(2 AND Q$="1")+(3 AND Q$="2")+(6 AND Q$="3")
  9440 LET X=(1 AND Q$="1")+(2 AND Q$="2")+(5 AND Q$="3")
  9450 RETURN 
  9500 SAVE  "Z802˜"
  9510 RUN 

  9800 LET A=15
  9810 LET J=0
  9820 LET C(G,H)=G
  9830 LET S=H
  9840 LET T=G
  9850 GOSUB 2000
  9860 PRINT AT 13,0;N$;AT 13,0;Z
  9870 RETURN 

  9900 PRINT AT 10,0;"WALLET EMPTY",
  9910 PRINT ,,,"PLAY AGAIN? Y/N"
  9920 GOSUB 8300

#  9930 IF H$="Y" THEN RUN
#  9950 IF H$="N" THEN GOTO 9999
#  9960 GOTO 9920

9930 RUN (9999 AND NOT H$="Y")

  9970 PRINT AT 10,0;"YOU BEAT THE HOUSE WINNING";TAB 12;"$";W
  9990 GOTO 9910
  9999 PRINT ,,"THANKS FOR PLAYING"
Z8021.P
(13.29 KiB) Downloaded 36 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
Post Reply