home *** CD-ROM | disk | FTP | other *** search
- 10 REM PYRAMID HOPPER
- 20 REM BY TOD MILAM 2-23-87
- 21 DATA 162,0,142,32,208,232,224,15,144,13,32,228,255
- 22 DATA 201,32,144,4,201,33,144,12,162
- 23 DATA 0,160,1,200,192,36,208,251,76,2,192,141,60
- 24 DATA 3,96,0,255
- 30 GOSUB 1100:REM INSTRUCTIONS
- 40 V=53248:K2=127:M2=56320:REM K2&M2 ARE FOR JOYSTICK ENTRY
- 45 GOSUB 1400:REM ENTER LEVEL TO INTER.
- 46 IF NL=<0 THEN NL=7
- 50 POKE V+21,4:POKE2042,13
- 60 FOR N=0 TO 62:READQ:POKE832+N,Q:NEXT
- 70 POKE V+41,3:REM SPRITE COLOR
- 80 X1=250
- 90 POKE V+4,X1:POKEV+5,32:PRINTPEEK(V+31)
- 100 PRINT"[147][158]":POKE53280,10:POKE53281,0
- 110 FOR X=1 TO 19:PRINT:NEXT X
- 120 PRINT" [169] [146] [223][146]"
- 130 PRINT" [169][163][163][163][163][163][146] [163][163][163][163][163][223][146]"
- 140 PRINT" [169][163][163][163][163][163][163][163][163][163][163][163][146] [163][163][163][163][163][163][163][163][163][163][163][223][146]"
- 150 PRINT"[169][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][146] [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][223][146]"
- 160 PRINT"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][146] [163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][146]";
- 170 REM
- 180 FOR N=1 TO NL
- 190 PRINT"";
- 200 FOR X=1 TO 19 STEP 2
- 210 Y=INT(RND(1)*39)
- 220 PRINTTAB(Y);"*":PRINT
- 230 NEXT X:X=PEEK(V+31)
- 240 GOSUB 400
- 250 PRINT"";
- 260 FOR X=2 TO 18 STEP 2
- 270 Y=INT(RND(1)*39)
- 280 PRINT:PRINTTAB(Y);"*"
- 290 NEXT X
- 300 GOSUB 700
- 305 GM=GM+1
- 310 NEXT N
- 320 REM END ONE CYCLE
- 330 GOSUB 1300:REM INTERMISSION
- 340 PRINT"[147]"
- 350 REM PRINT"DO YOU WANT TO CONTINUE"
- 360 REM GET A$:IF A$<>"Y"AND A$<>"N"THEN 360
- 370 GOTO 100
- 380 END
- 400 REM SUBROUTINE FOR DESCENT
- 405 REM PRINT"400 HERE";
- 410 FOR Y=32 TO 230
- 415 REM PRINT"Y=";Y;"";
- 420 J2=K2-PEEK(M2):REM READ JOYSTICK
- 430 IF J2=5 THEN X1=X1-2
- 440 IF J2=6 THEN X1=X1-2
- 450 IF J2=9 THEN X1=X1+2
- 460 IF J2=10 THEN X1=X1+2
- 470 IF J2=4 THEN X1=X1-3
- 480 IF J2=8 THEN X1=X1+3
- 490 IF X1<20 THEN X1=20
- 500 IF X1>255 THEN GOSUB 600:REM RIGHT SCREEN SECTION
- 510 IF X1<256 THEN POKEV+4,X1:POKEV+5,Y:POKE V+16,0
- 520 GOSUB 900
- 530 NEXT Y
- 540 RETURN
- 600 REM RIGHT SCREEN SECTION FOR SPRITE
- 610 X1=X1-255
- 620 IF X1>65 THEN X1=65
- 630 POKE V+16,4
- 640 POKEV+4,X1
- 650 POKEV+5,Y
- 660 X1=X1+255
- 670 RETURN
- 700 REM SUBROUTINE FOR ASCENT
- 710 FOR Y=230 TO 32 STEP-1
- 720 J2=K2-PEEK(M2)
- 730 IF J2=5 THEN X1=X1-2
- 740 IF J2=6 THEN X1=X1-2
- 750 IF J2=9 THEN X1=X1+2
- 760 IF J2=10THEN X1=X1+2
- 770 IF J2=4 THEN X1=X1-3
- 780 IF J2=8 THEN X1=X1+3
- 790 IF X1<20 THEN X1=20
- 800 IF X1>255 THEN GOSUB 600
- 810 IF X1<256 THEN POKEV+4,X1:POKEV+5,Y:POKEV+16,0
- 820 GOSUB 900
- 830 NEXT Y
- 840 RETURN
- 900 REM COLLISION CHECK
- 910 IF PEEK(V+31)<>4 THEN RETURN
- 915 FOR Y=1 TO 2
- 920 FOR X=0 TO 15:POKE53281,X:POKE53280,15-X:NEXT X
- 925 NEXT Y
- 930 PRINT"[147][144]":POKE53281,15:POKE53280,11:POKEV+21,0
- 940 PRINT"YOU CRASHED!!!"
- 945 PRINT" YOU MADE IT TO LEVEL";GM+1
- 946 GM=0
- 950 PRINT"WOULD YOU LIKE TO PLAY AGAIN?"
- 960 GET A$:IF A$<>"Y"AND A$<>"N"THEN 960
- 970 REM IF A$="Y" THEN POKEV+21,4:GOTO 80
- 975 IF A$="Y" THEN RUN
- 980 GOTO 380
- 1000 REM DATA FOR SPRITE
- 1010 DATA 0,24,0,0,60,0,0,60,0,0,60,0,0,102,0,0,102,0
- 1020 DATA 0,126,0,0,255,0,0,255,0,0,255,0,1,255,128
- 1030 DATA 1,231,128,1,195,128,15,195,240,15,195,240,15,195,240
- 1040 DATA 15,219,240,15,255,240,15,255,240,15,24,240
- 1050 DATA 8,24,16
- 1100 REM INSTRUCTIONS
- 1110 PRINT"[147][158]":POKE53280,2:POKE53281,2
- 1120 PRINT"[158] PYRAMID HOPPER"
- 1130 PRINT"[150]DO YOU WANT INSTRUCTIONS? ";
- 1135 FOR X=49152 TO 49190:READ T:POKEX,T:NEXT X
- 1140 PRINT"[159][157][169]";
- 1145 GET A$:IF A$<>"Y"ANDA$<>"N"THEN 1150
- 1146 GOTO 1190
- 1150 PRINT"[157][223]";
- 1155 GET A$:IF A$<>"Y"ANDA$<>"N"THEN 1160
- 1156 GOTO 1190
- 1160 PRINT"[154][157][223][146]";
- 1165 GET A$:IF A$<>"Y"ANDA$<>"N"THEN 1170
- 1166 GOTO 1190
- 1170 PRINT"[150][157][169][146]";
- 1180 GET A$:IF A$<>"Y"ANDA$<>"N"THEN 1140
- 1190 PRINT"[147][150]"
- 1200 IF A$="N"THEN RETURN
- 1210 PRINT"INSTRUCTIONS:"
- 1220 PRINT"[155]YOU MUST GUIDE THE SHIP TO SAFETY IN THECENTER OF THE PYRAMID AND";
- 1221 PRINT" BACK AGAIN."
- 1222 PRINT"THE CENTER OF THE PYRAMID IS THE ONLY SAFE LANDING PLACE."
- 1223 PRINT"ATTEMPT TO LAND ANYWHERE ELSE AND CRASH."
- 1224 PRINT"AVOID THE STARS ([158]*[159])."
- 1225 PRINT"JOYSTICK #2 IS YOUR CONTROLLER"
- 1226 PRINT"[159]GOOD LUCK, YOU'LL NEED IT"
- 1230 PRINT"";:FOR X=1 TO 20:PRINT"";:NEXT X
- 1240 PRINT"[158]PRESS SPACE TO CONTINUE"
- 1250 SYS49152
- 1260 RETURN
- 1300 REM INTERMISSION
- 1305 POKE53281,1:POKE53280,7
- 1310 PRINT"[147]CONGRATULATIONS!!"
- 1320 PRINT"YOU MADE IT TO LEVEL";GM+1
- 1330 PRINT"[144]PRESS SPACE TO CONTINUE"
- 1340 SYS 49152
- 1350 RETURN
- 1400 REM ENTER LEVEL OF INTERMISSION
- 1410 PRINT"[147][153]";:POKE53280,10:POKE53281,4
- 1420 PRINT"HOW MANY LEVELS TO INTERMISSION?(7)";
- 1430 PRINT"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]";
- 1440 PRINT"[145][145][145]";
- 1450 PRINT"[157][164]";
- 1455 GET A$:IF A$="" THEN 1460
- 1456 IF ASC(A$)=13 THEN RETURN
- 1457 IF ASC(A$)<48 OR ASC(A$)>57 THEN 1460
- 1458 GOTO 1540
- 1460 PRINT"[157][210]";
- 1465 GET A$:IF A$="" THEN 1470
- 1466 IF ASC(A$)=13 THEN RETURN
- 1467 IF ASC(A$)<48 OR ASC(A$)>57 THEN 1470
- 1468 GOTO 1540
- 1470 PRINT"[157][192]";
- 1475 GET A$:IF A$="" THEN 1480
- 1476 IF ASC(A$)=13 THEN RETURN
- 1477 IF ASC(A$)<48 OR ASC(A$)>57 THEN 1480
- 1478 GOTO 1540
- 1480 PRINT"[157][197]";
- 1485 GET A$:IF A$="" THEN 1490
- 1486 IF ASC(A$)=13 THEN RETURN
- 1487 IF ASC(A$)<48 OR ASC(A$)>57 THEN 1490
- 1488 GOTO 1540
- 1490 PRINT"[157][163]";
- 1495 GET A$:IF A$="" THEN 1500
- 1496 IF ASC(A$)=13 THEN RETURN
- 1497 IF ASC(A$)<48 OR ASC(A$)>57 THEN 1500
- 1498 GOTO 1540
- 1500 PRINT"[157][197]";
- 1505 GET A$:IF A$="" THEN 1510
- 1506 IF ASC(A$)=13 THEN RETURN
- 1507 IF ASC(A$)<48 OR ASC(A$)>57 THEN 1510
- 1508 GOTO 1540
- 1510 PRINT"[157][192]";
- 1515 GET A$:IF A$="" THEN 1520
- 1516 IF ASC(A$)=13 THEN RETURN
- 1517 IF ASC(A$)<48 OR ASC(A$)>57 THEN 1520
- 1518 GOTO 1540
- 1520 PRINT"[157][210]";
- 1530 GET A$:IF A$="" THEN 1450
- 1531 IF ASC(A$)=13 THEN RETURN
- 1532 IF ASC(A$)<48 OR ASC(A$)>57 THEN 1450
- 1540 NL=NL*10+VAL(A$):PRINT"[157]";A$;" ";
- 1550 GOTO 1450
-