1
0
mirror of https://github.com/tilleul/apple2.git synced 2024-12-04 01:50:54 +00:00
bitmap-editor/honoring_the_code/001 - Space Maze/spacemaze_htc_v1.bas
2022-06-05 15:15:45 +02:00

148 lines
8.8 KiB
QBasic

0 GOTO 5000
100 IF (X > = 10 AND X < = 80) AND (Y > = 80 AND Y < = 100) THEN Z=1: GOTO 180
110 IF (X > = 60 AND X < = 100) AND (Y > = 100 AND Y < = 120) THEN Z=2: GOTO 180
120 IF (X > = 80 AND X < = 100) AND (Y > = 120 AND Y < = 158) THEN Z=3: GOTO 180
125 IF (X > = 100 AND X < = 140) AND (Y > = 140 AND Y < = 158) THEN Z=4: GOTO 180
130 IF (X > = 120 AND X < = 180) AND (Y > = 120 AND Y < = 140) THEN Z=5: GOTO 180
135 IF (X > = 160 AND X < = 220) AND (Y > = 140 AND Y < = 158) THEN Z=6: GOTO 180
137 IF (X > = 200 AND X < = 220) AND (Y > = 110 AND Y < = 140) THEN Z=7: GOTO 180
138 IF (X > = 220 AND X < = 265) AND (Y > = 110 AND Y < = 130) THEN Z=8: GOTO 180
139 IF (X > = 245 AND X < = 265) AND (Y > = 40 AND Y < = 110) THEN Z=9: GOTO 180
140 IF (X > = 215 AND X < = 245) AND (Y > = 40 AND Y < = 60) THEN Z=10: GOTO 180
141 IF (X > = 215 AND X < = 235) AND (Y > = 60 AND Y < = 100) THEN Z=11: GOTO 180
142 IF (X > = 180 AND X < = 235) AND (Y > = 80 AND Y < = 100) THEN Z=12: GOTO 180
145 IF (X > = 180 AND X < = 200) AND (Y > = 60 AND Y < = 100) THEN Z=13: GOTO 180
150 IF (X > = 140 AND X < = 180) AND (Y > = 60 AND Y < = 80) THEN Z=14: GOTO 180
160 IF (X > = 100 AND X < = 160) AND (Y > = 40 AND Y < = 60) THEN Z=15: GOTO 180
162 IF (X > = 106 AND X < = 114) AND (Y > = 66 AND Y < = 74) THEN 3000: REM BRANCH TO WIN
165 IF (X > = 100 AND X < = 120) AND (Y > = 60 AND Y < = 80) THEN Z=16: GOTO 180
170 GOTO 4000: REM BRANCH TO CRASH...NO FLAGS WERE SET TO INDICATE PRESENCE IN THE MAZE...THEREFORE MUST BE OUTSIDE.
180 IF J THEN 210
190 K=PEEK(H): IF K = 201 THEN VV=VV-1: POKE C,0: GOTO 242
195 IF K = 202 THEN HV=HV-1: POKE C,0: GOTO 242
200 IF K = 203 THEN VV=VV+1: POKE C,0: GOTO 242
205 IF K = 204 THEN HV=HV+1: POKE C,0: GOTO 242
206 GOTO 242
210 IF PDL (0) > = 165 THEN HV = HV + 1: REM IF HV> 1 THEN HV=1
220 IF PDL (0) < = 90 THEN HV = HV - 1: REM IF HV<-1 THEN HV=-1
230 IF PDL (1) > = 165 THEN VV = VV + 1: REM IF VV>1 THEN VV=1
231 IF E THEN 240
232 IF RND (1) < .05 THEN HV = HV + 1
233 IF RND (1) > .95 THEN VV = VV + 1
240 IF PDL (1) < = 90 THEN VV = VV - 1: REM IF VV<-1 THEN VV=-1
242 X = XO + HV:Y = YO + VV
243 TM = TM - 1: VTAB 21: HTAB 25: PRINT TM" "
245 HTAB 13: PRINT HV" ";: HTAB 38: PRINT VV" "
260 HCOLOR= 3: HPLOT X,Y
267 IF TM < = 0 THEN HOME: FLASH : PRINT TAB( 10)"OUT OF FUEL";: PRINT TAB( 10)" ": GOTO 4000
270 IF X = XO AND Y = YO THEN 300
280 HCOLOR= 0: HPLOT XO,YO: IF M THEN 300
285 POKE D,10: CALL S
300 XO = X:YO = Y: ON Z GOTO 100, 100, 110, 120, 125,130,135,137,138,139,140,141,142,145,150,160,165: GOTO 210
498 REM THE 500 SUBRTNE SETS UP THE MUSIC. M1=PITCH, M2=DURATION. 700 PLAYS IT.
499 REM *********** PLAY STAR WARS THEME **********
500 M1 = 230:M2 = 75: GOSUB 700:M1 = 126:M2 = 250: GOSUB 700:M1 = 170:M2 = 250: GOSUB 700:M1 = 190:M2 = 75: GOSUB 700
510 M1 = 203:M2 = 75: GOSUB 700:M1 = 230:M2 = 75: GOSUB 700:M1 = 126:M2 = 250: GOSUB 700:M1 = 170:M2 = 250: GOSUB 700
515 M1 = 190:M2 = 100: GOSUB 700:M1 = 203:M2 = 100: GOSUB 700:M1 = 190:M2 = 100: GOSUB 700:M1 = 230:M2 = 250: GOSUB 700: RETURN
700 POKE P,M1: POKE D,M2: CALL S: RETURN
1999 REM ******** DRAW MAZE **************
2000 HCOLOR= 3: HPLOT 0,0 TO 279,0 TO 279,159 TO 0,159 TO 0,0
2001 HPLOT 70,10 TO 60,10 TO 60,20 TO 70,20 TO 70,30 TO 60,30: HPLOT 75,30 TO 75,10 TO 85,10 TO 85,20 TO 75,20: HPLOT 90,30 TO 90,10 TO 100,10 TO 100,30: HPLOT 90,20 TO 100,20
2002 HPLOT 115,10 TO 105,10 TO 105,30 TO 115,30: HPLOT 130,10 TO 120,10 TO 120,30 TO 130,30: HPLOT 120,20 TO 125,20: HPLOT 140,30 TO 140,10 TO 146,20 TO 152,10 TO 152,30
2003 HPLOT 158,30 TO 158,10 TO 168,10 TO 168,30: HPLOT 158,20 TO 168,20: HPLOT 173,10 TO 183,10 TO 173,30 TO 183,30: HPLOT 198,10 TO 188,10 TO 188,30 TO 198,30: HPLOT 188,20 TO 193,20
2005 HPLOT 10,80 TO 80,80 TO 80,100 TO 100,100 TO 100,140 TO 120,140 TO 120,120 TO 180,120
2010 HPLOT 180,120 TO 180,140 TO 200,140 TO 200,110 TO 245,110 TO 245,60 TO 235,60 TO 235,100 TO 180,100 TO 180,80 TO 140,80 TO 140,60 TO 120,60 TO 120,80 TO 100,80
2015 HPLOT 100,80 TO 100,40 TO 160,40 TO 160,60 TO 200,60 TO 200,80 TO 215,80 TO 215,40 TO 265,40 TO 265,130 TO 220,130 TO 220,158 TO 160,158
2020 HPLOT 220,158 TO 160,158 TO 160,140 TO 140,140 TO 140,158 TO 80,158 TO 80,120 TO 60,120 TO 60,100 TO 10,100
2030 HCOLOR= 3: HPLOT 106,66 TO 114,66 TO 114,74 TO 106,74 TO 106,66
2033 HPLOT 108,68 TO 112,72: HPLOT 108,72 TO 112,68: RETURN
2999 REM ******** WINNER *************
3000 TEXT : FOR I = 250 TO 0 STEP - 15: PRINT "** WINNER **";: POKE P,I: POKE D,10
3005 CALL S: NEXT : FOR I = 1 TO 500: NEXT: PRINT : PRINT
3010 IF TM > PT THEN HOME : VTAB 10: FLASH : PRINT "CONGRATULATIONS!": NORMAL : PRINT "YOU'VE BEATEN THE PREVIOUS HIGH SCORE ": PRINT "OF ";PT;" WITH YOUR SCORE OF ";TM
3011 GC = GC + 1: IF GC = 1 THEN PRINT : PRINT "IF YOU'VE BEEN PLAYING THE EASY GAME": PRINT "YOU'RE A WINNER! NOW WE'LL ADVANCE TO": PRINT "THE HARD GAME":HD$ = "H"
3012 IF TM > PT THEN PT = TM
3015 PRINT: GOTO 4010
3999 REM ********** CRASH ! **********
4000 TEXT : FLASH : FOR I = 1 TO 80: PRINT "** CRASH **";: POKE P,I: POKE D,2: CALL S: NEXT: NORMAL
4005 FOR I = 1 TO 250 STEP 50: POKE P,I: POKE D,50: CALL S: NEXT
4006 FOR I = 1 TO 1000: NEXT: HOME
4009 REM ********** PLAY AGAIN ? ********
4010 POKE C,0: PRINT "ANOTHER MISSION (";:INVERSE:?"Y";:NORMAL:?"/N)? ";: GET A$: IF A$<>"N" THEN HGR : GOTO 6000
4020 END
4098 REM THE FOLLOWING SUBROUTINE GOES INTO MEMORY BLOCK HEX $30E (782), THE TONES RESPOND TO POKE 0 TO 255
4099 REM PITCH= POKE 780,PITCH DURATION=POKE 781,DURATION
5000 POKE 782,173: POKE 783,48: POKE 784,192: POKE 785,136: POKE 786,208: POKE 787,5: POKE 788,206: POKE 789,13: POKE 790,3
5010 POKE 791,240: POKE 792,9: POKE 793,202: POKE 794,208: POKE 795,245: POKE 796,174: POKE 797,12: POKE 798,3: POKE 799,76
5020 POKE 800,14: POKE 801,3: POKE 802,96
5030 TEXT: HOME: S=782: P=780: D=781: H= 49152: C=49168
5040 VTAB 2: INVERSE : HTAB 13: PRINT "** SPACE MAZE **": VTAB 22: HTAB 4: PRINT "COPYRIGHT 1980..MICRO-SPARC, INC.": VTAB 24: HTAB 2: NORMAL: PRINT "*CODE HONORED* IN 2022 BY FVL FOR A2SE";
5050 FOR I = 250 TO 0 STEP - 15: POKE P, I: POKE D,10: CALL S: NEXT
5060 VTAB 6: HTAB 1: PRINT "YOU WILL PILOT A SPACE CRUISER THRU THE": PRINT "STAR MAZE TO REACH THE PRIZED DILITHIUM": PRINT "CRYSTALS AT THE CENTER OF THE MAZE": INVERSE : PRINT
5070 PRINT "BE CAREFUL! IN THE HARD VERSION OF THE": PRINT "GAME YOUR SHIP IS PULLED BY HOSTILE ": PRINT "MAGNETIC FORCES.. SO TAKE CARE "
5080 PRINT "NOT TO CRASH!!!!!!!!!!!!!!!!!!!!!!!!!!!"
5090 NORMAL : PRINT: PRINT "DO YOU WANT YOUR SHIP SIGNAL": ?"SOUNDS (";:INVERSE:?"Y";:NORMAL:?"/N)? ";: GET A$: M=A$="N": PRINT: PRINT "EASY OR HARD GAME (";:INVERSE: ?"E";: NORMAL: ?"/H)? "; : GET A$: E= A$<>"H"
5100 PRINT: PRINT "DO YOU WANT STARWARS MUSIC EACH": PRINT "GAME (Y/";:INVERSE:?"N";:NORMAL:?")? ";: GET M$
5110 PRINT: PRINT "JOYSTICK OR KEYBOARD (J/";:INVERSE:?"K";:NORMAL:?")? ";: GET J$: J=J$="J": IF NOT J THEN PRINT: PRINT "USE I/J/K/L TO MOVE. PRESS ANY KEY. ";: GET A$
5999 REM *********** START NEW GAME ************
6000 HOME: HGR : GOSUB 2000: IF PT>0 THEN VTAB 24: PRINT TAB(7)"PREVIOUS RECORD SCORE IS: ";PT;
6010 IF M$ = "Y" THEN GOSUB 500
6020 Z=1: X = 15:Y = 90:HV = 0:VV = 0:TM = 600:XO = X:YO = Y: POKE P,150
6030 VTAB 21: HTAB 14: PRINT "FUEL LEFT= "TM" "
6040 PRINT "HORIZONTAL= "HV;: HTAB 28: PRINT "VERTICAL= "VV
6100 GOTO 180
7000 REM *************************
7010 REM ** SPACE MAZE **
7020 REM ** MICRO-SPARC **
7030 REM ** P.O. BOX 325 **
7040 REM ** LINCOLN MASS 01773 **
7050 REM ** COPYRIGHT C 1980 **
7060 REM ** **
7070 REM ** HONORING THE CODE **
7080 REM ** IN 2022 BY FVL **
7090 REM ** FOR A2SE FB GROUP **
7100 REM *************************
8000 REM VARIABLES
8010 REM **************
8020 REM P = ADDRESS FOR PITCH
8030 REM D = ADDRESS FOR DURATION
8040 REM K = KEY READ
8050 REM C = CLEAR KEYBOARD STROBE ADDRESS (49168)
8060 REM H = READ LAST KEY PRESSED ADDRESS (49152)
8070 REM Z = ZONE THE SPACESHIP IS IN
8080 REM X, Y = SPACESHIP POSITION ON SCREEN
8090 REM XO, YO = SPACESHIP PREVIOUS POSITION
8100 REM HV, VV = HORIZONTAL AND VERTICAL SPEED
8110 REM TM = TIME LEFT (FUEL)
8120 REM PT = HI SCORE
8130 REM I = GENERIC FOR/NEXT LOOP COUNTER
8140 REM J = JOYSTICK CONTROL TRUE/FALSE
8150 REM E = EASY DIFFICULTY TRUE/FALSE
8160 REM A$ = GENERIC VARIABLE TO HOLD KEY PRESSED WHEN PROMPTING USER FOR OPTIONS
8170 REM M$ = MUSIC AT THE START OF EACH GAME (Y/N)