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