8-Bit Software Online Conversion
                
             
        
        
    
:2.$.Ladder - Listing
    
        1REM SNAKES & LADDERS               
    2REM JAMES M.CAVANAGH               
    3REM  30-Oct-1993 05:49:34          
    4ONERROR IF ERR=17 THEN RUN ELSE VDU
7:REPORT:PRINT" at line ";ERL:END       
    5IF PAGE<&E01 THEN GOTO 10 ELSE 6   
    6*K.9*T.|MF.A%=0TO(TOP-PA.)ST.4:A%!&
D00=A%!PA.:N.|MPA.=&D00|MO.|MDEL.6,9|MVD
U6|MRUN|M                               
    7VDU21                              
    8*FX138,0,137                       
    9END                                
   10MODE2:VDU23;8202;0;0;0;H%=0:J%=0:DI
MA(4,65):RAND=RND(-TIME)                
   20A=0:TIME=0:CLS:MO=1:RN=0:TR=0:RN2=0
:TR1=0:POS1=0:POS2=0:U$=CHR$8+CHR$10:RES
TORE                                    
   30IFH%>0ORJ%>0THEN80                 
   50COLOUR2:GCOL0,1:PRINTTAB(2,8);"WELC
OME";TAB(12,8);"TO":VDU5:GCOL0,1:Q=INKEY
(100):VDU19,3,4;0;                      
   60Y$=" S N A K E S  A N D  L A D D E 
R S":FORX=1TO39:MOVEX*1280/40,(300*SIN(X
/6))/2+800:PRINTMID$(Y$,X,1):NEXT:GCOL0,
3:PRINT''''''"Enter Players Names:":GCOL
0,2:INPUT'"1)  "Z$,'"2)  "Y$            
   70IFRND(4)=1 A$=Z$:B$=Y$ ELSE A$=Y$:B
$=Z$                                    
   80VDU4:CLS:VDU5:GCOL3,1:MOVE0,80:PRIN
T"   PLEASE WAIT":@%=0                  
   90VDU19,0,2;0;19,2,0;0;19,3,3;0;     
  100GCOL0,2:MOVE100,112:MOVE100,912:PLO
T85,980,912:MOVE980,112:PLOT85,100,112:G
COL0,5:FORY=113TO912STEP200:FORX=101TO98
0STEP220:PROCdraw:NEXT:NEXT             
  110FORY=213TO912STEP200:FORX=211TO980S
TEP220:PROCdraw:NEXT:NEXT               
  120GCOL0,7:FORY=143TO942STEP200:FORX=8
72TO101STEP-110:A=A+1:A(1,A)=X+2:A(2,A)=
Y+35:MOVEX+25,Y:PRINTCHR$225:NEXT:A=A+8:
NEXTY:A=8                               
  130FORY=243TO1042STEP200:FORX=101TO871
STEP110:A=A+1:A(1,A)=X+2:A(2,A)=Y+35:MOV
EX+25,Y:PRINTCHR$224;:NEXT:A=A+8:NEXT   
  140FORSN=1TO12:PROCSNAKES:NEXT:FORHEAD
=1TO4:READHX,HY:MOVEHX,HY:PRINTCHR$226:N
EXT                                     
  150MOVE761,840:PRINTCHR$227:MOVE211,54
0:PRINTCHR$227:MOVE651,313:PRINTCHR$228:
MOVE321,713:PRINTCHR$228:FORTA=1TO4:READ
TX,TY:MOVETX,TY:PRINTCHR$229:NEXT:FORLA=
1TO7:PROCLADDERS:NEXT:GCOL0,1:PROCGAME  
  160IFPV=813 Z$=A$:H%=H%+1ELSEZ$=B$:J%=
J%+1                                    
  170VDU19,0,8;0;19,2,12;0;:GCOL0,2:MOVE
200,450:MOVE200,750:PLOT85,830,750:MOVE8
30,450:PLOT85,200,450:GCOL0,15:COLOUR15:
VDU4:PRINTTAB(5,10);"Winner";TAB(7,12);"
Is";TAB(8-(LEN(Z$))/2,14);Z$:VDU4       
  180RESTORE900:FORM%=1TO62:READP%,L%,C%
                                        
  190SOUND1,-15,P%,L%*3:FORT%=0TOL%*1000
:NEXT:NEXT:*FX15,7                      
  200FORZ=0TO100:NEXT:MIN=(TIMEDIV6000)M
OD60:SEC=(TIMEDIV100)MOD60              
  210VDU20,4:CLS:COLOUR6:PRINTTAB(2,2);"
Duration Of Play:";TAB(3,4);MIN;" Mins  
";SEC;" Secs"                           
  220COLOUR2:PRINTTAB(3,7);"Would You Li
ke"'TAB(4,9);"Another Game";TAB(9,11);"?
":X$=GET$                               
  230IFX$<>"Y"THEN250                   
  240PRINTTAB(4,25);"Same Players?":X$=G
ET$:IFX$="Y"PROCSK:Z$=A$:Y$=B$:GOTO20ELS
ECLEAR:H%=0:J%=0:RUN                    
  250IFX$<>"N"COLOUR12:PRINTTAB(3,18);"A
nswer Properly";TAB(7,15);"Please":A=INK
EY(200):CLS:GOTO220ELSEMODE7:END        
  260DATA415,215,424,200,439,258,452,246
,452,246,452,258,312,330,304,313,848,208
,864,196,896,347,927,335,927,335,899,317
,848,515,868,526,653,296,666,312,174,383
,185,405,185,405,204,402,234,518,209,533
                                        
  270DATA519,410,532,396,581,457,562,467
,583,454,559,454,478,678,504,682,504,667
,484,680,765,828,782,813,748,512,760,500
,818,670,795,670,818,670,804,658,746,712
,754,724,320,700,336,712,326,824,311,815
                                        
  280DATA261,345,811,540,701,740,261,840
,371,213,811,213,481,413,701,513,599,189
,639,175,801,319,775,342,167,292,194,270
,464,524,441,548,611,401,638,384,688,526
,667,544,883,472,916,495,861,740,829,716
                                        
  290DATA166,597,197,579,483,822,441,841
,551,581,579,598,526,750,495,720,226,773
,255,801,198,842,174,824,23,6,34,2,39,14
,51,30,63,21,58,43,4,18,9,37,20,35,32,50
,36,53,40,60,55,57                      
  300DEFPROCdraw:MOVEX,Y:MOVEX,Y+100:PLO
T85,X+110,Y+100:MOVEX+110,Y:PLOT85,X,Y:E
NDPROC                                  
  310DEFPROCSNAKES:GCOL0,1:READX,Y,X1,Y1
,X2,Y2,X3,Y3:MOVEX,Y:MOVEX1,Y1:PLOT85,X2
,Y2:MOVEX3,Y3:PLOT85,X,Y:ENDPROC        
  320DEFPROCLADDERS:GCOL0,3:READX,Y,X1,Y
1,X2,Y2,X3,Y3:MOVEX,Y:DRAWX3,Y3:MOVEX1,Y
1:DRAWX2,Y2:LE=(SQR(((X3-X)^2)+((Y3-Y)^2
)))/40:LEX=(X3-X)/LE:LEY=(Y3-Y)/LE:LEX1=
(X2-X1)/LE:LEY1=(Y2-Y1)/LE              
  330N=X:M=Y:N1=X1:M1=Y1:FORJ=1TOLE:N=N+
LEX:M=M+LEY:N1=N1+LEX1:M1=M1+LEY1:MOVEN,
M:DRAWN1,M1:NEXT:ENDPROC                
  340DEFPROCGAME:FORA=1TO13:READSNH,SNT:
A(3,SNH)=1:A(4,SNH)=SNT:NEXT:GCOL3,1:MOV
E0,80:PRINT"   PLEASE WAIT":COLOUR5:VDU4
:PRINTTAB(1,2);A$;" Starts":VDU5:GCOL0,6
                                        
  350MOVE1075,813:MOVE1175,813:PLOT85,11
75,913:MOVE1075,913:PLOT85,1075,813:MOVE
1070,800:PRINTLEFT$(A$,2),TAB(18,12);H%:
GCOL0,2:MOVE1075,113:MOVE1175,113:PLOT85
,1175,213:MOVE1075,213:PLOT85,1075,113  
  360MOVE1070,255:PRINTLEFT$(B$,2),TAB(1
8,18);J%:COLOUR4:VDU4:X$="G A M E S  W O
 N":FORZ%=1TOLEN(X$):PRINTTAB(19,7+Z%);M
ID$(X$,Z%,1):NEXT:VDU5:GCOL3,3:MOVEA(1,1
),A(2,1):PRINTCHR$231:GCOL3,1:MOVEA(1,1)
+46,A(2,1):PRINTCHR$231:POS1=1:POS2=1   
  370MOVE16,512:PRINT" "                
  380IFPOS1<>1GCOL0,3:COLOUR1:PROCL(29):
PROCL(2):VDU4:PRINTTAB(2,2);"TURN:";A$:V
DU5                                     
  390PV=813:GCOL3,3:*FX15,1             
  400PROCL(29):COLOUR1:VDU4:PRINTTAB(1,2
9);"Key D To Throw Dice":VDU5:GCOL3,2   
  410D$=GET$:IFD$<>"D"THEN410           
  420IFRN<>0PROCSUB(RN)                 
  430RN=RND(6):PROCDICE(RN):PROCL(29):CO
LOUR1:GCOL0,3:VDU4:PRINTTAB(1,29);"Ready
 To Move?":VDU5:GCOL3,3:*FX15,1         
  440M$=GET$:IFM$<>"Y"THEN440           
  450FORJM1=POS1TOPOS1+RN:IFJM1>64NEXT:E
NDPROC                                  
  460IFTR=1ORJM1=POS1ORJM1=1MOVEA(1,JM1)
,A(2,JM1):PRINTCHR$231                  
  470TR=0                               
  480IFJM1<>1MOVEA(1,JM1),A(2,JM1):PRINT
CHR$231                                 
  490FORZ=0TO999:NEXT                   
  500IFJM1<>1ANDJM1<>POS1+RNMOVEA(1,JM1)
,A(2,JM1):PRINTCHR$231                  
  510IFJM1<>POS1+RNSOUND2,1,A(1,JM1)/4,1
:SOUND3,1,A(2,JM1),1                    
  520NEXT:POS1=POS1+RN:IFA(3,POS1)=1PROC
SNORL(0,POS1)                           
  530IFRN=6THEN380                      
  540PV=113:PROCL(29):PROCL(2):COLOUR2:V
DU4:PRINTTAB(2,2);"TURN:";B$:VDU5:*FX15,
1                                       
  550PROCL(29):COLOUR2:VDU4:PRINTTAB(1,2
9);"Key D To Throw Dice":VDU5:GCOL3,7   
  560D$=GET$:IFD$<>"D"THEN560           
  570IFRN2<>0PROCSUB(RN2)               
  580RN2=RND(6):GCOL3,7:PROCDICE(RN2):GC
OL0,2:PROCL(29):GCOL0,2:COLOUR2:VDU4:PRI
NTTAB(1,29);"Ready To Move?":VDU5:GCOL3,
1:*FX15,1                               
  590M$=GET$:IFM$<>"Y"THEN590           
  600FORJM2=POS2TOPOS2+RN2:IFJM2>64NEXT:
ENDPROC                                 
  610IFTR1=1ORJM2=POS2ORJM2=1MOVEA(1,JM2
)+46,A(2,JM2):PRINTCHR$231              
  620TR1=0:IFJM2<>1MOVEA(1,JM2)+46,A(2,J
M2):PRINTCHR$231                        
  630FORZ=0TO999:NEXT                   
  640IFJM2<>1ANDJM2<>POS2+RN2MOVEA(1,JM2
)+46,A(2,JM2):PRINTCHR$231:SOUND2,1,A(1,
JM2)/4,1:SOUND1,1,A(2,JM2),1            
  650IFJM2<>POS2+RN2SOUND2,1,A(1,JM2)/4,
1:SOUND3,1,A(2,JM2),1                   
  660NEXT:POS2=POS2+RN2:IFA(3,POS2)=1PRO
CSNORL(46,POS2)                         
  670IFRN2=6THEN540                     
  680GOTO380                            
  690MOVE1096,77+PV:PRINTCHR$232+U$+CHR$
233:RETURN                              
  700MOVE1097,78+PV:PRINTCHR$234+U$+CHR$
235:RETURN                              
  710MOVE1097,80+PV:PRINTCHR$236+U$+CHR$
237:RETURN                              
  720MOVE1098,80+PV:PRINTCHR$238+U$+CHR$
239:RETURN                              
  730MOVE1098,80+PV:PRINTCHR$240+U$+CHR$
241:RETURN                              
  740MOVE1098,80+PV:PRINTCHR$242+U$+CHR$
243:RETURN                              
  750DEFPROCDICE(DI):SOUND1,0,60,1:INC=1
:FORDTH=1TO1000:IFDTH<>1PROCSUB(RNTH)   
  760INC=INC*1.5:DTH=DTH+INC:RNTH=RND(6)
:PROCSUB(RNTH):*FX15,5                  
  770SOUND0,-15,3,2:FORZ%=1TOINC*10:NEXT
:NEXT                                   
  780PROCSUB(RNTH):*FX15,5              
  790SOUND0,-15,3,2:PROCSUB(DI):ENDPROC 
  800DEFPROCSNORL(DIF,APOS):AR=A(4,APOS)
:AR1=APOS:IFA(2,AR1)<A(2,AR)DIR=4ELSEDIR
=-4                                     
  810PROCQ:IF(G%=0ANDDIR=4)OR(G%=0ANDDIR
=-4)ENDPROC                             
  820MOVEA(1,APOS)+DIF,A(2,APOS)        
  830FORD%=A(2,AR1)/4TOA(2,AR)/4STEPDIR:
SOUND1,-15,D%,1:SOUND3,-15,D%+32,1:NEXT 
  840PRINTCHR$231:MOVEA(1,AR)+DIF,A(2,AR
):PRINTCHR$231:IFPV=813 POS1=AR:TR=1ELSE
POS2=AR:TR1=1                           
  850ENDPROC                            
  860DEFPROCL(BAT):VDU4:PRINTTAB(0,BAT);
SPC(20);:VDU5:ENDPROC                   
  870DEFPROCSUB(DT):ONDTGOSUB690,700,710
,720,730,740:ENDPROC                    
  880DEFPROCSO2:*FX15,7                 
  890SOUND2,-12,C%,100:ENDPROC          
  900DATA129,1,0,117,3,53,117,1,0,117,1,
0,113,1,0,117,1,0,121,3,0,117,2,0,117,1,
0,109,3,33,109,1,0,109,1,0,101,1,0,109,1
,0,117,3,53,101,2,0,109,1,0,117,3,0,117,
1,0,117,1,0,109,1,0,117,1,0,121,2,25,129
,1,0,137,2,0,137,1,0,129,2,53           
  910DATA121,1,0,117,2,33,109,1,0,101,4,
53                                      
  911DATA129,1,0,117,3,53,117,1,0,117,1,
0,113,1,0,117,1,0,121,3,0,117,2,0,117,1,
0,109,3,33,109,1,0,109,1,0,101,1,0,109,1
,0,117,3,53,101,2,0,109,1,0,117,3,0,117,
1,0,117,1,0,109,1,0,117,1,0,121,2,25,129
,1,0,137,2,0,137,1,0,129,2,53           
  912DATA121,1,0,117,2,33,109,1,0,101,4,
53                                      
  920DEFPROCQ:VDU4:PROCL(2):SOUND3,2,100
,1:FORZ=0TO50:NEXT:A%=RND(4):PROCrem:END
PROC                                    
 1020DEFPROCANS:ENDPROC                 
 1050DEFPROCrem:PROCL(29):G%=1          
 1060FORZ=0TO3000:NEXT:VDU5:ENDPROC     
 1070DEFPROCSK:ENDPROC