home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-09-16 | 4.2 KB | 100 lines |
- 1000 ON ERROR GOTO 6000
- 1001 COMMON UMSEG%()
- 1010 DEFINT A-Z:CLS:SCREEN 1,0:COLOR 0,0
- 1020 DIM HNAME$(10),HSCORE$(10)
- 1030 CL=3:CO=6:FI=27:INV=30:OV=36:PC=39:RS=42:SP=45:SY=48:TN=51:TX=57:B=0:P=0
- 1080 OPEN "MMHONOR.ROL" AS #1 LEN = 15
- 1085 FIELD #1, 10 AS F1$, 5 AS F2$
- 1090 FOR I=1 TO 10:GET #1,I:HNAME$(I)=F1$:HSCORE$(I)=F2$:NEXT
- 1200 MSG$="YOUR SCORE SO FAR:"+STR$(TSC):GOSUB 2000
- 1210 DEF SEG=UMSEG%(3):Z=0:CALL CL(Z):CALL INV:Z=255:CALL SP(Z):F=3:CALL CO(B,P,F)
- 1220 X=5:Y=23:CALL PC(X,Y):T$=" PRESS RETURN TO START THE GAME":CALL TX(T$)
- 1230 X=5:Y=24:CALL PC(X,Y):T$=" PRESS ESC TO EXIT ":CALL TX(T$)
- 1240 CALL INV
- 1250 A$=INKEY$:IF A$<>"" GOTO 1250
- 1300 A$=INKEY$:IF A$="" GOTO 1300
- 1310 IF A$=CHR$(27) THEN CLOSE:COMMON PN$:CHAIN "MMLDIR",1000
- 1320 IF A$=CHR$(13) THEN GOSUB 2500 ELSE GOTO 1300
- 1355 FOR I=1 TO 10:LSET F1$=HNAME$(I):RSET F2$=HSCORE$(I):PUT #1,I:NEXT
- 1360 CLOSE:COMMON IDX,MSG$:CHAIN "mmgend",1000
- 2000 CLS:SCREEN 1,0:COLOR 0,0:DEF SEG=UMSEG%(3)
- 2010 LOCATE 1,3,0:PRINT "***** M A T C H M A K E R *****"
- 2020 Z=111:CALL CL(Z):Z=1:CALL SY(Z):F=1:CALL CO(B,P,F):Z=251:CALL SP(Z)
- 2030 X=6:Y=2:CALL PC(X,Y):T$="HONOR ROLL":CALL TX(T$)
- 2040 F=2:CALL CO(B,P,F):CALL PC(X,Y):Z=1:CALL OV(Z):Z=0:CALL CL(Z):T$="__________":CALL TX(T$):Z=0:CALL OV(Z)
- 2050 F=3:CALL CO(B,P,F):Z=255:CALL SP(Z):Z=2:CALL SY(Z):CALL INV:Y=6:X=10:CALL PC(X,Y):T$=" NAME:":CALL TX(T$)
- 2065 Y=6:X=26:CALL PC(X,Y):T$=" SCORE:":CALL TX(T$):CALL INV
- 2070 FOR I=1 TO 10
- 2080 LOCATE I+7,10:PRINT USING "##.";I;:PRINT " "+HNAME$(I)+" "+HSCORE$(I)
- 2090 NEXT
- 2100 F=2:CALL CO(B,P,F):Z=255:CALL SP(Z)
- 2115 X=(40-LEN(MSG$))\2+1:Y=20:CALL PC(X,Y):T$=MSG$:CALL TX(T$)
- 2130 RETURN
- 2500 MAZE$="MMGAME1.DAT":RUNLIMIT=1
- 2510 SCREEN 0,1:WIDTH 40
- 2515 TUNIT=6:TLEFT=20:GOAL=TSC+1000:GOSUB 5000:FOR I=1 TO 500:NEXT I
- 2520 COLOR 19,1,0:M$=CHR$(2):RPOS=1:CPOS=3:RMAX=22:CMAX=40:LOCATE RPOS,CPOS,0:PRINT M$:LOCATE RPOS,CPOS:COLOR 3,1
- 2525 BEEP:FOR I=1 TO 700:NEXT I:BEEP:CKTIME=60*VAL(MID$(TIME$,4,2))+VAL(MID$(TIME$,7,2))
- 2530 A$=INKEY$:CTIME=60*VAL(MID$(TIME$,4,2))+VAL(MID$(TIME$,7,2))
- 2531 IF CTIME-CKTIME>=TUNIT THEN CKTIME=CTIME:TLEFT=TLEFT-1:LOCATE 23,9:COLOR 14,0:PRINT USING " ##";TLEFT
- 2532 IF TLEFT<=0 THEN TLEFT=0:GOTO 2580
- 2535 IF A$="" GOTO 2530 ELSE IF LEN(A$)<2 THEN BEEP:GOTO 2530 ELSE A$=RIGHT$(A$,1)
- 2540 IF A$="H" THEN GOSUB 2600:GOTO 2580
- 2550 IF A$="K" THEN GOSUB 2700:GOTO 2580
- 2560 IF A$="P" THEN GOSUB 2800:GOTO 2580
- 2570 IF A$="M" THEN GOSUB 2900 ELSE BEEP:GOTO 2530
- 2580 IF RPOS=RMAX OR TLEFT<=0 THEN BEEP:BEEP:BEEP:GOSUB 3500:RETURN ELSE GOTO 2530
- 2600 RNEXT=RPOS-1:CNEXT=CPOS:GOSUB 3000:RPOS=RNEXT:LOCATE RPOS,CPOS:RETURN
- 2700 CNEXT=CPOS-1:RNEXT=RPOS:GOSUB 3000:CPOS=CNEXT:LOCATE RPOS,CPOS:RETURN
- 2800 RNEXT=RPOS+1:CNEXT=CPOS:GOSUB 3000:RPOS=RNEXT:LOCATE RPOS,CPOS:RETURN
- 2900 CNEXT=CPOS+1:RNEXT=RPOS:GOSUB 3000:CPOS=CNEXT:LOCATE RPOS,CPOS:RETURN
- 3000 IF RNEXT<1 THEN RNEXT=1 ELSE IF RNEXT>RMAX THEN RNEXT=RMAX
- 3010 IF CNEXT<1 THEN CNEXT=1 ELSE IF CNEXT>CMAX THEN CNEXT=CMAX
- 3030 SCRCHR=SCREEN(RNEXT,CNEXT)
- 3040 IF SCRCHR=3 THEN TSC=TSC+25:GOTO 3070
- 3050 IF SCRCHR=4 THEN TSC=TSC+50:GOTO 3070
- 3060 IF SCRCHR=219 THEN BEEP:RNEXT=RPOS:CNEXT=CPOS ELSE COLOR 3,1:LOCATE RPOS,CPOS:PRINT " ":LOCATE RNEXT,CNEXT:PRINT M$
- 3065 RETURN
- 3070 COLOR 3,1:LOCATE RPOS,CPOS:PRINT " "
- 3075 LOCATE RNEXT,CNEXT:SOUND 440,0.5:PRINT M$
- 3076 COLOR 14,0,0:LOCATE 23,29,0:PRINT USING " ####";TSC
- 3080 RETURN
- 3500 IF TLEFT>=0 AND TSC>=GOAL THEN TSC=TSC+500
- 3506 TSC=TSC+TLEFT*25
- 3507 COLOR 14,0:LOCATE 23,29,0:PRINT USING " ####";TSC
- 3510 FOR I=21 TO 2 STEP -1
- 3520 FOR J=39 TO 2 STEP -1
- 3530 SCRCHR=SCREEN(I,J)
- 3535 IF SCRCHR<>3 AND SCRCHR<>4 GOTO 3551
- 3540 IF SCRCHR=3 THEN SOUND 350,0.5:TSC=TSC-25:LOCATE I,J:COLOR ,1:PRINT " ";:GOTO 3545
- 3541 IF SCRCHR=4 THEN SOUND 480,0.5:TSC=TSC-50:LOCATE I,J:COLOR ,1:PRINT " "; ELSE GOTO 3551
- 3542 IF TSC<0 THEN TSC=0
- 3545 COLOR 14,0:LOCATE 23,29,0:PRINT USING " ####";TSC
- 3550 IF TSC<=0 GOTO 3600
- 3551 NEXT J
- 3560 NEXT I
- 3600 IF RUNLIMIT<2 THEN IF TSC>=GOAL AND TLEFT>0 THEN RUNLIMIT=RUNLIMIT+1:MAZE$="MMGAME1.DAT":GOTO 2510
- 3605 IDX=0
- 3610 FOR I=1 TO 10
- 3620 IF TSC>VAL(HSCORE$(I)) THEN IDX=I:GOTO 3640
- 3630 NEXT
- 3640 IF IDX=0 THEN MSG$="SEE YOU AGAIN!!":RETURN
- 3645 IF IDX=10 GOTO 3660
- 3650 FOR I=10 TO IDX+1 STEP -1:HNAME$(I)=HNAME$(I-1):HSCORE$(I)=HSCORE$(I-1):NEXT
- 3660 HNAME$(IDX)=PN$:HSCORE$(IDX)=STR$(TSC)
- 3665 FOR J=LEN(HNAME$(IDX))+1 TO 10:HNAME$(IDX)=HNAME$(IDX)+" ":NEXT
- 3666 FOR J=LEN(HSCORE$(IDX))+1 TO 5:HSCORE$(IDX)=" "+HSCORE$(IDX):NEXT
- 3670 MSG$="CONGRATULATIONS, "+PN$+"!":RETURN
- 5000 LOCATE ,,0:DEF SEG=&HB800:BLOAD MAZE$,0
- 5010 COLOR 11,0,0:LOCATE 23,4,0:PRINT "TIME:";:COLOR 14:PRINT USING " ##";TLEFT
- 5020 COLOR 11:LOCATE 23,23:PRINT "SCORE:";:COLOR 14:PRINT USING " ####";TSC
- 5030 SGOAL$=STR$(GOAL):SRL$=STR$(RUNLIMIT)
- 5040 POKE 1846,4:POKE 1847,14:POKE 1848,58:POKE 1849,11:POKE 1852,53:POKE 1853,6:POKE 1854,48:POKE 1855,6
- 5050 POKE 1926,3:POKE 1927,13:POKE 1928,58:POKE 1929,11:POKE 1932,50:POKE 1933,6:POKE 1934,53:POKE 1935,6
- 5060 POKE 1884,71:POKE 1885,11:POKE 1886,79:POKE 1887,11:POKE 1888,65:POKE 1889,11:POKE 1890,76:POKE 1891,11:POKE 1892,58:POKE 1893,11
- 5065 FOR J=1 TO LEN(SGOAL$):B=ASC(MID$(SGOAL$,J,1)):K=1896+(J-1)*2:POKE K,B:POKE K+1,6:NEXT
- 5070 POKE 1964,76:POKE 1965,11:POKE 1966,69:POKE 1967,11:POKE 1968,86:POKE 1969,11:POKE 1970,69:POKE 1971,11:POKE 1972,76:POKE 1973,11:POKE 1974,58:POKE 1975,11
- 5075 FOR J=1 TO LEN(SRL$):B=ASC(MID$(SRL$,J,1)):K=1982+(J-1)*2:POKE K,B:POKE K+1,6:NEXT
- 5200 DEF SEG=UMSEG%(3):RETURN
- 6000 CLOSE:CHAIN "MMPLAY",1000
-