10 REM SEVENS v.1.19 20 REM by M.Bobrowski 2'94 30 : 40 MODE 1 50 PROCinit 60 REPEAT:PROCreset 70 PROCshuffle:PROCdeal:PROChand:go%=RND(2)-1 80 REPEAT:IF go% H%=C%:PROCcomputer ELSE H%=P%:PROCplayer 90 IF N% PROCtable(N%):PROCdelete ELSE IF N%=0 AND pointer%<53 PROCgetcard 100 IF go%=0 PROChand ELSE COLOUR1:PRINTTAB(6,12);?C%;" " 110 go%=(go%+1)MOD 2 120 UNTIL ?C%=0 OR ?P%=0:PROCresults 130 UNTIL end% 140 MODE 131:END 150 : 1000 DEF PROCcomputer 1010 SOUND1,-10,1,10:COLOUR0:PRINTTAB(0,18)"My go: "'SPC98; 1020 PROCsearch(1):COLOUR1:IF find% N%=S%:M$=MID$(num$,(S%-1)MOD13+1,1)+MID$(suit$,(S%-1)DIV13+1,1):PRINTTAB(2,20)M$ ELSE N%=0:M$="":PRINTTAB(0,20)"I can't"'" go" 1030 COLOUR0:XX=INKEY(200) 1040 PROCcheck 1050 ENDPROC 1060 : 1070 DEF PROCplayer 1080 REPEAT 1090 COLOUR0:PRINTTAB(0,18)"Your go:"'SPC98;:*FX15,1 1100 FORI%=1TO3:SOUND1,-12,200,2:SOUND1,0,0,1:NEXT:INPUTTAB(2,20)""M$:IF M$="" PROCsearch(0):IF find% UNTIL FALSE 1110 IF M$>"" IF LENM$<>2 UNTIL FALSE 1120 IF M$>"" IF INSTR(num$,LEFT$(M$,1))=0 UNTIL FALSE 1130 IF M$>"" IF INSTR(suit$,RIGHT$(M$,1))=0 UNTIL FALSE 1140 IF M$>"" N%=INSTR(num$,LEFT$(M$,1))+13*(INSTR(suit$,RIGHT$(M$,1))-1) ELSE N%=0 1150 PROCcheck 1160 UNTIL check% OR N%=0 1170 ENDPROC 1180 : 1190 DEF PROCsearch(G%) 1200 find%=FALSE:FORI%=1 TO ?H%:S%=H%?I% 1210 FORJ%=0TO7:IF J%?T%=S%:find%=TRUE:J%=7 1220 NEXT:IF find% I%=?H% 1230 NEXT:IF G%=0 AND M$="" AND find% COLOUR1:PRINTTAB(0,22)"You CAN"'" go!":VDU7:XX=INKEY(200):COLOUR0 1240 ENDPROC 1250 : 1260 DEF PROCcheck 1270 check%=FALSE:IF M$="" ENDPROC 1280 FORI%=1TO ?H%:IF H%?I%=N% check%=TRUE 1290 NEXT:IF check%=FALSE COLOUR1:PRINT'"You have"'"not this"'"card !":VDU7:XX=INKEY(200):COLOUR0:ENDPROC 1300 check%=FALSE 1310 FORI%=0TO7:IF I%?T%=N% check%=TRUE:J%=I% 1320 NEXT:IF check%=FALSE COLOUR1:PRINT'"You can'tuse this"'"card now.":VDU7:XX=INKEY(200):COLOUR0:ENDPROC 1330 IF J%MOD2 T%?J%=T%?J%+1 ELSE T%?J%=T%?J%-1 1340 IF N%MOD13=7 T%?(J%-1)=T%?(J%-1)-1 1350 FORI%=0TO6STEP2:IF T%?I% MOD13=0 T%?I%=0 1360 NEXT:FORI%=1TO7STEP2:IF T%?I% MOD13=1 T%?I%=0 1370 NEXT 1380 ENDPROC 1390 : 1400 DEF PROCgetcard 1410 ?H%=?H%+1 1420 H%?(?H%)=A%?pointer%:pointer%=pointer%+1:COLOUR1:PRINTTAB(6,8);53-pointer%;" ":COLOUR0 1430 ENDPROC 1440 : 1450 DEF PROCdelete 1460 FORI%=1TO ?H%:IF H%?I%=N% Q%=I%:I%=?H% 1470 NEXT:FORI%=Q%TO ?H%-1:H%?I%=H%?(I%+1):NEXT 1480 H%?(?H%)=0:?H%=?H%-1 1490 ENDPROC 1500 : 1510 DEF PROCtable(N%):IF N%=0 ENDPROC 1520 VDU24,8;292;952;1015;:SOUND0,-10,5,2 1530 row%=(N%-1)DIV13+1:col%=(N%-1)MOD13+1:X%=col%*64-32:Y%=1160-row%*172:IF row% MOD 2 K%=1 ELSE K%=0 1540 GCOL0,0:IF col%<7 MOVEX%+60,Y%:PLOT13,X%,Y%:PLOT45,X%,Y%-160:PLOT37,X%+60,Y%-160 ELSE MOVE X%,Y%:PLOT45,X%+124,Y%:PLOT45,X%+124,Y%-160:PLOT45,X%,Y%-160:PLOT45,X%,Y% 1550 GCOL0,3:MOVE X%+4,Y%-4:IF col%<7 MOVEX%+60,Y%-4:PLOT85,X%+4,Y%-156:PLOT85,X%+60,Y%-156 ELSE MOVEX%+120,Y%-4:PLOT85,X%+4,Y%-156:PLOT85,X%+120,Y%-156 1560 GCOL0,0:PLOT69,X%+4,Y%-156:PLOT69,X%+4,Y%-4:IF col%>7 PLOT69,X%,Y%:PLOT69,X%,Y%-160:GCOL0,3:PLOT69,X%,Y%-4:PLOT69,X%,Y%-156 1570 IF col%>6 GCOL0,0:PLOT69,X%+120,Y%-4:PLOT69,X%+120,Y%-156 ELSE GCOL0,0:PLOT69,X%+64,Y%:PLOT69,X%+64,Y%-160:GCOL0,3:PLOT69,X%+64,Y%-4:PLOT69,X%+64,Y%-156 1580 GCOL0,K%:VDU5:MOVE X%+8,Y%-12:PRINTMID$(num$,col%,1) 1590 MOVE X%+8,Y%-44:VDU223+row% 1600 VDU4:ENDPROC 1610 : 1620 DEF PROChand 1630 PROCsort(?P%):GCOL0,130:VDU24,8;8;952;280;16 1640 IF ?P%<14:FOR I%=1 TO ?P%:X%=I%*64-32:Y%=260:PROCdisplay:NEXT 1650 IF ?P%>13:FOR I%=1 TO 13:X%=I%*64-32:Y%=260:PROCdisplay:NEXT:FOR I%=14 TO ?P%:X%=(I%-13)*64-32:Y%=180:PROCdisplay:NEXT 1660 ENDPROC 1670 : 1680 DEF PROCdisplay 1690 Z%=P%?I%:suit%=(Z%-1)DIV13+1:card%=(Z%-1)MOD13+1:K%=suit% MOD 2 1700 GCOL0,3:MOVEX%+4,Y%-4:MOVEX%+120,Y%-4:PLOT85,X%+4,Y%-156:PLOT85,X%+120,Y%-156:GCOL0,0:MOVEX%,Y%:PLOT45,X%+124,Y%:PLOT45,X%+124,Y%-160:PLOT45,X%,Y%-160:PLOT45,X%,Y% 1710 GCOL0,0:PLOT69,X%+4,Y%-156:PLOT69,X%+4,Y%-4:IF I%=1 OR I%=14 GCOL0,2:PLOT69,X%,Y%:PLOT69,X%,Y%-160 ELSE GCOL0,0:PLOT69,X%,Y%:PLOT69,X%,Y%-160:GCOL0,3:PLOT69,X%,Y%-4:PLOT69,X%,Y%-156 1720 GCOL0,0:PLOT69,X%+120,Y%-4:PLOT69,X%+120,Y%-156:IF I%>13 GCOL0,3:PLOT69,X%+124,Y%:GCOL0,0:PLOT69,X%,Y% 1730 GCOL0,K%:VDU5:MOVE X%+8,Y%-12:PRINTMID$(num$,card%,1) 1740 MOVE X%+8,Y%-44:VDU(223+suit%) 1750 VDU4:ENDPROC 1760 : 1770 DEF PROCshuffle 1780 FOR I%=1 TO 52:A%?I%=I%:NEXT 1790 FOR I%=1 TO 52:R%=RND(52):J%=A%?R% 1800 A%?R%=A%?I%:A%?I%=J%:NEXT 1810 ENDPROC 1820 : 1830 DEF PROCdeal 1840 FORI%=1TO7:P%?I%=A%?I%:NEXT:?P%=7:PROCsort(7) 1850 FORI%=1TO7:C%?I%=A%?(I%+7):NEXT:?C%=7 1860 pointer%=15:ENDPROC 1870 : 1880 DEF PROCsort(L%):IF L%=1 ENDPROC 1890 LOCAL B%:FOR J%=1TOL%-1:Z%=J% 1900 FOR I%=Z%+1 TO L% 1910 IF H%?Z%>H%?I% Z%=I% 1920 NEXT 1930 B%=P%?J%:P%?J%=P%?Z%:P%?Z%=B% 1940 NEXT:ENDPROC 1950 : 1960 DEF PROCinit 1970 VDU19,2,2;0;:GCOL0,130:CLG:MOVE0,0:DRAW960,0:DRAW960,1023:DRAW0,1023:DRAW0,4:DRAW956,4:DRAW956,1019:DRAW4,1019:DRAW4,4:MOVE0,288:DRAW956,288:MOVE956,284:DRAW0,284:VDU28,31,31,39,1:COLOUR130:CLS 1980 COLOUR1:PRINTTAB(1,0)"SCORE"''"You: ";:COLOUR0:PRINT"0":COLOUR1:PRINT"Comp: ";:COLOUR0:PRINT"0"TAB(0,8)"Pack: "''"Cards in"'" comp's"'"hand: " 1990 VDU23,224,0,54,127,127,127,62,28,8,23,225,0,8,28,62,127,127,28,62,23,226,0,8,28,62,127,62,28,8,23,227,0,28,28,107,127,107,8,28 2000 A%=&900:C%=&940:P%=&960:T%=&980:W%=&938 2010 num$="A23456789TJQK":suit$="HSDC":M$="":!W%=0:dummy=RND(-TIME) 2020 ENDPROC 2030 : 2040 DEF PROCreset 2050 GCOL0,130:VDU24,8;292;952;1015;16,24,8;8;952;280;16:J%=7:FORI%=0TO7STEP2:T%?I%=J%:T%?(I%+1)=J%:J%=J%+13:NEXT:COLOUR1:PRINTTAB(6,8)"38"TAB(6,12)"7 " 2060 ENDPROC 2070 : 2080 DEF PROCresults 2090 V%=ABS(?P%-?C%)+2*(53-pointer%):COLOUR1:IF ?P%=0 GCOL0,130:VDU24,8;8;952;280;16:?W%=?W%+V%:PRINTTAB(0,24)"You win"'"by "; ELSE W%?1=W%?1+V%:PRINTTAB(0,24)"I win by" 2100 PRINT;V%;" pts":COLOUR0:PRINTTAB(6,2);?W% TAB(6,3);W%?1:RESTORE:FORI%=1TO9:READ p%,d%:SOUND1,-12,p%,d%:NEXT:SOUND1,0,0,8:SOUND1,-15,128,4 2110 PRINTTAB(0,27)"Again ?"''"(Y/N) ";:end%=FALSE:REPEAT:G$=GET$:UNTILINSTR("YyNn",G$):PRINTG$:IF INSTR("Nn",G$) end%=TRUE 2120 ENDPROC 2130 DATA 128,12,124,4,120,12,116,4,108,4,100,4,96,4,88,4,80,4