home *** CD-ROM | disk | FTP | other *** search
AmigaBASIC Source Code | 1986-11-20 | 7.1 KB | 299 lines |
- setup:
- CLEAR ,25000
- CLEAR ,65536
- SCREEN 1,320,320,2,1
- WINDOW 1,"",(0,0)-(311,25),16,1
- WINDOW 2,"",(0,0)-(311,185),16,1
- WINDOW OUTPUT 2
- CLS
- PALETTE 0,0,0,0
- PALETTE 3,1,1,1
- PALETTE 2,0.8,0,0.93
- PALETTE 1,0,0.93,0.87
-
- DIM b(12,7),c(80),f(80)
- sp=0.25:lev=1:hs=0:RANDOMIZE TIMER
- CLS:LOCATE 4,8:COLOR 2,0
- PRINT "P Y R A M I D - P O W E R"
- COLOR 3,0:LOCATE 10,1:GOSUB player
- PRINT "The object of this game is change the"
- PRINT "color of all the cubes while avoiding"
- PRINT "The bouncing rocks and creatures. Use"
- PRINT "joystick #2 to move. For a fast trip"
- PRINT "up, use the elevators. Be careful not"
- PRINT "to fall off the edges."
- GOSUB creatureshape
- GOSUB button
-
- restart:
- CLS:LOCATE 4,10:PRINT "Player:":PUT(150,20),a
- LOCATE 8,10:PRINT "Creature:":PUT(155,50),q
- LOCATE 12,10:PRINT "Rock:":CIRCLE(158,92),5,3
- PAINT (158,92),3,3:LOCATE 16,10
- PRINT "Elevator:":LINE(165,123)-(185,112),3
- LINE-(205,123),3:LINE-(185,134),3:LINE-(165,123),3
- GET(151,87)-(164,97),c:GET(164,111)-(206,135),f
- GOSUB button
-
- readdata:
- RESTORE:FOR z=1 TO 7:FOR z1=0 TO 12
- READ b(z1,z):NEXT z1,z
-
- start:
- CLS:z1=0:FOR z=190 TO 40 STEP -26
- FOR z3=70+z1*15 TO 220-z1*15 STEP 30
- LINE(z3,z)-(z3,z-18),3:LINE-(z3+15,z-27),3
- LINE-(z3,z-36),3:LINE-(z3-15,z-27),3:LINE-(z3,z-18),3
- LINE-(z3,z),3:LINE-(z3+15,z-9),3:LINE-(z3+15,z-27),3
- LINE(z3,z)-(z3-15,z-9),3:LINE-(z3-15,z-27),3
- PAINT(z3+7,z-9),1,3:PAINT(z3-7,z-9),2,3
- NEXT:z1=z1+1:NEXT
-
- x=6:y=1
- GOSUB playerxy
- j=7:k=2:j1=0.5:k1=-0.5:k2=1.5
- PUT(49+j*15,23+(k-1)*26),c
- g=6:h=5:g1=0:h1=0
- PUT(50+g*15,13+(h-1)*26),q
- f1=11:f2=5
- PUT(f1*15+56,5*26-3),f
- PUT(27,5*26-3),f
- checksquares:
- IF x<>INT(x) OR y<>INT(y) THEN
- GOSUB move
- IF k1=1 THEN gameover
- END IF
- IF sq=21 THEN finished
- IF x<>INT(x) OR y<>INT(y) THEN rock
- LOCATE 1,1:PRINT "Score:"score
- LOCATE 1,32:PRINT "Level:"lev
- IF STICK(2)<>0 AND STICK(3) <> 0 THEN
- GOSUB move
- IF k1=1 THEN gameover
- END IF
-
- rock:
- PUT(49+j*15,23+(k-1)*26),c
- IF k=INT(k) AND k1=1.5 AND j=INT(j) THEN
- j1=INT(3*RND(1))-1:j1=j1/2
- k1=-0.5:k2=k-0.5:SOUND 126,2
- END IF
- IF j1=0 THEN j1=-0.5
- IF j=x AND k=y THEN
- GOSUB creaturerock
- IF k1=1 THEN gameover
- END IF
- j=j+j1:k=k+k1:IF k=k2 THEN k1=1.5
- IF k=8 THEN k=1:j=6:k2=0.5
- PUT(49+j*15,23+(k-1)*26),c
-
- creature:
- PUT(50+g*15,13+(h-1)*26),q
- IF g<>INT(g) OR h<>INT(h) THEN creaturecont
- IF g<x THEN g1=sp
- IF g>x THEN g1=-sp
- IF h>y THEN h1=-sp
- IF h<y THEN h1=sp
- IF h=y OR g=x THEN g1=0:h1=0
- IF g=x AND h<y THEN
- h1=sp:g1=(INT(3*RND(1))-1)*sp
- IF g1=0 THEN g1=sp
- END IF
- IF g=x AND h>y THEN
- h1=-sp:g1=(INT(3*RND(1))-1)*sp
- IF g1=0 THEN g1=-sp
- END IF
- IF h=y AND g<x THEN
- g1=sp:h1=(INT(3*RND(1))-1)*sp
- IF h1=0 OR h+h1>6 THEN h1=-sp
- END IF
- IF h=y AND g>x THEN
- g1=-sp:h1=(INT(3*RND(1))-1)*sp
- IF h1=0 OR h+h1>6 THEN h1=-sp
- END IF
- creaturecont:
- g=g+g1:h=h+h1
- PUT(50+g*15,13+(h-1)*26),q
- IF x=g AND y=h THEN
- GOSUB creaturerock
- IF k1=1 THEN gameover
- END IF
- GOTO checksquares
-
- move:
- GOSUB playerxy
- IF x<>INT(x) OR y<>INT(y) THEN movecont
- IF STICK(2)=1 AND STICK(3)=1 THEN x1=0.5:y1=0.5
- IF STICK(2)=-1 AND STICK(3)=1 THEN x1=-0.5:y1=0.5
- IF STICK(2)=1 AND STICK(3)=-1 THEN x1=0.5:y1=-0.5
- IF STICK(2)=-1 AND STICK(3)=-1 THEN x1=-0.5:y1=-0.5
- movecont:
- x=x+x1:y=y+y1
- IF x=INT(x) OR y=INT(y) THEN x1=0:y1=0
- IF x=INT(x) THEN SOUND 880,1 :ELSE SOUND 440,1
- IF x=INT(x) AND b(x,y)=1 THEN
- GOSUB rocky:PAINT(47+x*15,30+(y-1)*27),3,3
- sq=sq+1:b(x,y)=0:GOSUB rocky
- nn=1:GOSUB scorecalc
- END IF
- IF sq=21 THEN RETURN
- IF x=INT(x) AND y=INT(y) AND b(x,y)=4 THEN
- GOSUB rightelevator:nn=-1:GOSUB scorecalc
- END IF
- IF x=INT(x) AND y=INT(y) AND b(x,y)=5 THEN
- GOSUB leftelevator:nn=-1:GOSUB scorecalc
- END IF
- IF x=INT(x) AND y=INT(y) AND b(x,y)=3 THEN
- GOSUB edge:IF k1=1 THEN RETURN
- END IF
- IF (j=x AND k=y) OR (g=x AND h=y) THEN
- GOSUB creaturerock
- IF k1=1 THEN RETURN
- END IF
- IF y<1 THEN y=1:x=6:x1=0:y1=0
- GOSUB playerxy
- RETURN
-
- rocky:
- PUT(49+j*15,23+(k-1)*26),c
- PUT(50+g*15,13+(h-1)*26),q
- RETURN
-
- rightelevator:
- PUT(f1*15+56,5*26-3),f
- z1=5:FOR z=11 TO 7 STEP -0.25
- GOSUB playerzz1
- PUT(z*15+56,z1*26-3),f
- z3=6-z1
- SOUND z3*200,1
- GOSUB playerzz1
- PUT(z*15+56,z1*26-3),f
- z1=z1-0.25:NEXT
- PUT(f1*15+56,5*26-3),f
- x=6:y=1:RETURN
-
- leftelevator:
- PUT(27,5*26-3),f
- z1=5:FOR z=0 TO 4 STEP 0.25
- PUT(40+z*14,15+(z1-1)*26),a
- PUT(z*15+27,z1*26-3),f
- z3=6-z1
- SOUND z3*200,1
- PUT(40+z*14,15+(z1-1)*26),a
- PUT(z*15+27,z1*26-3),f
- z1=z1-0.25:NEXT
- PUT(27,5*26-3),f
- x=6:y=1:RETURN
-
- finished:
- CLS:FOR z2=3 TO 0 STEP -1
- z=13:z1=10
- FOR z3=1 TO 11
- LIST(155-z,100-z1)-(155+z,100+z1),z2,b
- z=z+13:z1=z1+8
- SOUND z*10,2
- NEXT:NEXT
- score=score+lev*1000:lev=lev+1
- IF lev>2 THEN sp=0.5
- IF lev>7 THEN sp=1
- sq=0:COLOR 3,0:ts=ts+21:GOTO readdata
-
- creaturerock:
- GOSUB playerxy:FOR z1=1 TO 20
- x=x+SIN(z1)/5:GOSUB playerxy
- SOUND 255,1
- GOSUB playerxy:x=x-SIN(z1)/5
- NEXT:k1=1:RETURN
-
- edge:
- z=y+0.4:y1=-0.2:IF x<6 THEN x1=-0.12 :ELSE x1=0.12
- edgecont:
- IF z>6 THEN z=6
- z=z+y1:x=x+x1:y1=y1+0.03
- PUT(52+x*14,11+(z-1)*26),a
- SOUND z*180,1
- PUT(52+x*14,11+(z-1)*26),a
- IF z>6 THEN k1=1:RETURN
- GOTO edgecont
-
- gameover:
- CLS:IF score>hs THEN hs=score
- ts=ts+sq:LOCATE 6,9:PRINT"High Score:"hs
- LOCATE 10,9:PRINT"You scored"score"points."
- LOCATE 12,9:PRINT"You filled"ts"squares."
- LOCATE 14,9:PRINT"You were on level "MID$(STR$(lev),2)"."
- LOCATE 20,4:PRINT"Do you wish to play again (Y/N)?"
- key3:
- z$=UCASE$(INKEY$)
- IF z$="" OR (z$<>"Y" AND z$<>"N") THEN key3
- IF z$="Y" THEN
- score=0:lev=1:sq=0:ts=0:sp=0.25:k1=0:GOTO readdata
- END IF
- GOTO quit
-
- playerxy:
- PUT(52+x*14,11+(y-1)*26),a:RETURN
-
- playerzz1:
- PUT(64+(z+1)*14,18+(z1-1)*26),a:RETURN
-
- scorecalc:
- score = score+nn*100*lev:RETURN
-
- griddata:
- DATA 3,3,3,3,3,3,1,3,3,3,3,3,3
- DATA 3,3,3,3,3,1,0,1,3,3,3,3,3
- DATA 3,3,3,3,1,0,1,0,1,3,3,3,3
- DATA 3,3,3,1,0,1,0,1,0,1,3,3,3
- DATA 5,3,1,0,1,0,1,0,1,0,1,3,4
- DATA 3,1,0,1,0,1,0,1,0,1,0,1,3
- DATA 3,3,3,3,3,3,3,3,3,3,3,3,3
-
- quit:
- WINDOW CLOSE 2
- WINDOW CLOSE 1
- WINDOW 1,"Pyramid Power",,31,-1
- CLEAR ,25000
- END
-
- player:
- DEFINT a,q:l=87:DIM a(l):RESTORE player
- FOR i=0 TO l:READ a$:a(i)=VAL("&h"+a$):NEXT:RETURN
- DATA 13,15,2,3f8,0,ffe,0,1fff
- DATA 0,3fff,8000,7fff,c000,e3f8,e000,ff1f
- DATA e000,ffff,e000,ffff,e000,ffbf,e000,ff1f
- DATA e000,ffff,e000,ffff,e000,fc07,e000,ffff
- DATA e000,7fff,c000,3fff,8000,404,0,404
- DATA 0,404,0,3c07,8000,0,0,0
- DATA 0,0,0,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,0
-
- creatureshape:
- l=87:DIM q(l):RESTORE creatureshape
- FOR i=0 TO l:READ a$:q(i)=VAL("&h"+a$):NEXT:RETURN
- DATA 11,15,2,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,0
- DATA 0,0,0,0,0,0,0,0
- DATA 380,0,fe0,0,fe0,0,47c4,0
- DATA 1ff0,0,3ff8,0,3ff8,0,3ffa,0
- DATA 3ffa,0,1fe0,0,2010,1c0,0,3e0
- DATA 0,7f0,0,7f0,0,7f0,0,3e0
- DATA 0,23e2,0,57f5,0,8ff8,8000,1ffc
- DATA 0,1ffc,0,1ffc,0,3ffe,0,5ffd
- DATA 0,9ffc,8000,9ffc,8000,8ff8,8000,ff8
- DATA 0,13e4,0,2002,0,2002,0,0
-
- button:
- LOCATE 22,6:PRINT "Hit the fire button to play."
- WHILE STRIG(3)=0:WEND
- RETURN
-
-
-
-
-
-
-