home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
015.lha
/
StoneageV1.1
(
.txt
)
< prev
next >
Wrap
AmigaBASIC Source Code
|
1986-11-10
|
13KB
|
409 lines
CLS : WINDOW 2,,(0,0)-(631,186),0
WINDOW OUTPUT 2
PALETTE 0,0,0,0 : PALETTE 1,1,1,1
PALETTE 2,1,0,0 :PALETTE 3,0,0,0
COLOR 0,1 : COLOR 2,3
PRINT CHR$(13)+CHR$(13)
PRINT SPC(30)"S T O N E - A G E"
PRINT CHR$(13)
PRINT SPC(24)"Copyright 1986 by Klaus Kramer"
PRINT CHR$(13)+CHR$(13): TTTE$= "STONE-AGE V1.1 was written by THE TWILIGHT & THE ENEMYS"
PRINT SPC(11) TTTE$:PRINT
PRINT SPC(25)"Use the ESC key for suicide"
PRINT CHR$(13)+CHR$(13)+CHR$(13)+CHR$(13)
PRINT SPC(23)"Press the SPACE key to continue"
Key: a$=INKEY$ : IF a$=" " THEN Stoneage
GOTO Key
Stoneage:
GOSUB init:GOSUB bild1
LINE (0,160)-(19,169),0,bf
wx=1:wy=17
IF stone(wx,wy)=3 THEN ko=ko-1
PUT (0,160),willi%:stone(wx,wy)=2
neu: zeit=TIMER
LINE(0,180)-(640,180),1:LINE(620,0)-(621,200),1,b
Hauptprog:
jy=STICK(3):jx=STICK(2) : esc$ = INKEY$
IF esc$ =CHR$(27) THEN GOTO itsovernowbabyblue
IF ABS(jy)=1 OR ABS(jx)=1 THEN
IF wy+jy<19 AND wy+jy>0 AND wx+jx<32 AND wx+jx>0 THEN
IF stone(wx+jx,wy+jy)=4 THEN GOTO Hauptprog
IF ABS(jx)=1 AND ABS(jy)=1 AND stone(wx+jx,wy)<>0 AND stone(wx,wy+jy)<>0 THEN
IF stone(wx+jx,wy)<>-2 AND stone(wx,wy+jy)<>-2 THEN GOTO Hauptprog
END IF
IF stone(wx+jx,wy+jy)<>1 THEN
IF stone(wx+jx,wy+jy)=3 THEN ko=ko-1:IF ko=0 THEN GOTO weiter
wy=wy+jy:wx=wx+jx:x=(wx-1)*20:y=(wy-1)*10:stone(wx,wy)=2
LINE (x,y)-(x+19,y+9),0,bf:SOUND 200,0.2,255 :SOUND 200,0.2,255,1
LINE (x-20*jx,y-10*jy)-(x-20*jx+19,y-10*jy+9),0,bf
PUT (x,y),willi%:stone(wx-jx,wy-jy)=-2
IF stone(wx-jx,wy-jy-1)=1 THEN sx=wx-jx:sy=wy-jy-1:GOSUB steinschlag
ELSE
IF ABS(jy)=0 AND stone(wx+2*jx,wy+2*jy)=-2 THEN GOTO schieben
END IF
END IF
END IF
GOTO Hauptprog
steinschlag: a=1
za:IF stone(sx,sy-a)=1 THEN a=a+1:GOTO za
sz=sy:sw=sx
FOR i=1 TO a:sy=sz-i+1:sx=sw:GOSUB s:NEXT i :RETURN
s:
IF stone(sx,sy+1)=-2 THEN
x=(sx-1)*20:y=(sy-1)*10
LINE(x,y)-(x+19,y+9),0,bf
stone(sx,sy)=-2:sy=sy+1:stone(sx,sy)=1
PUT (x,y+10),rock%:GOTO s
ELSE
IF stone(sx,sy+1)=0 OR stone(sx,sy+1)=3 OR stone(sx,sy+1)=4 THEN
SOUND 100,0.8,255:SOUND 100,0.8,255,1:RETURN
ELSE
IF stone(sx,sy+1)=2 THEN
st=0:GOTO itsovernowbabyblue
ELSE
IF ABS(stone(sx-1,sy+1))=2 AND ABS(stone(sx+1,sy+1))=2 AND stone(sx-1,sy)=-2 AND stone(sx+1,sy)=-2 THEN
st=SGN(RND*10-5):GOTO u
ELSE
IF ABS(stone(sx-1,sy+1))=2 AND stone(sx-1,sy)=-2 THEN st=-1: GOTO u
IF ABS(stone(sx+1,sy+1))=2 AND stone(sx+1,sy)=-2 THEN st=1 : GOTO u
SOUND 100,0.8,255:SOUND 100,0.8,255,1:RETURN
END IF
END IF
END IF
END IF
u: stone(sx,sy)=-2
IF stone(sx+st,sy+1)=2 THEN GOTO itsovernowbabyblue
x=(sx-1)*20:y=(sy-1)*10
LINE(x,y)-(x+19,y+9),0,bf
sy=sy+1:sx=sx+st:stone(sx,sy)=1
PUT(x+20*SGN(st),y+10),rock%:SOUND 200,0.1,255:SOUND 200,0.1,255,1:GOTO s
schieben:
stone(wx,wy)=-2:stone(wx+jx,wy+jy)=2:wx=wx+jx:wy=wy+jy
x=(wx-1)*20:y=(wy-1)*10:stone(wx+jx,wy+jy)=1
LINE(x-jx*20,y-jy*20)-(x-jx*20+19,y-jy*10+9),0,bf
LINE(x,y)-(x+19,y+9),0,bf:SOUND 700,0.2,255:SOUND 700,0.2,255,1
PUT (x,y),willi%:PUT (x+jx*20,y+jy*10),rock%
IF stone(wx+jx,wy+jy+1)=-2 THEN sx=wx+jx:sy=wy+jy:GOSUB steinschlag
IF stone(wx-jx,wy-jy-1)=1 THEN sx=wx-jx:sy=wy-jy-1:GOSUB steinschlag
GOTO Hauptprog
bild1: ko=0
FOR y=0 TO 170STEP 10
FOR x=0TO 600STEP 20
stone(x/20+1,y/10+1)=0
IF RND<0.7THEN pul
IF RND<0.5 THEN
PUT (x,y),rock%
stone(x/20+1,y/10+1)=1:GOTO pul2
ELSE
IF RND<0.2THEN
PUT (x,y),kohl%:stone(x/20+1,y/10+1)=3:ko=ko+1
ELSE
IF RND<0.5THEN
PUT (x,y),mauer%:stone(x/20+1,y/10+1)=4
ELSE
pul: PUT (x,y),erde%
pul2: END IF
END IF
END IF
NEXT x,y
RETURN
weiter:
zeit2=TIMER:CLS:punkte=punkte+zeit2-zeit
PRINT "Du benoetigtest ";zeit2-zeit;" Sekunden fuer Screen ";na$
PRINT:PRINT "Insgesamt ";punkte;" Sekunden."
FOR i=1TO 5000:NEXT i
CLS:bild=bild+1:ko=0:IF bild=7 GOTO freak
'bitte bei eigenen Bildern oben "bild=7" anpassen!
w: ko=0:f1=FNr:f2=FNr:f3=FNr
PALETTE 13,f1,f2,f3:PALETTE 14,FNt(f1),FNt(f2),FNt(f3)
PALETTE 15,FNt(FNt(f1)),FNt(FNt(f2)),FNt(FNt(f3))
PALETTE 3,1,FNF,FNF:PALETTE 5,FNF,1,0.1
PALETTE 10,FNr,FNF,0:PALETTE 12,1,FNr,0
IF bild=1THEN RESTORE bilder
IF bild=2 THEN RESTORE bild2
IF bild=3 THEN RESTORE bild3
IF bild=4 THEN RESTORE bild4
IF bild=5 THEN RESTORE bild5
IF bild=6 THEN RESTORE bild6
' Hier bei eigenen Screens "IF bild= ..." ergaenzen
READ na$:b$=" Stone Screen"+STR$(bild+1)+" : "+na$:WINDOW 2,b$,,8,1
FOR i=1TO 18:READ b$
FOR j=1TO 31:stone(j,i)=VAL(MID$(b$,j,1))
x=(j-1)*20:y=(i-1)*10
ON stone(j,i) GOTO fa1,fa2,fa3,fa4,fa5
PUT (x,y),erde%:GOTO fa
fa1: PUT (x,y),rock%:GOTO fa
fa2: PUT (x,y),willi%:wx=j:wy=i:GOTO fa
fa3: PUT (x,y),kohl%:ko=ko+1:GOTO fa
fa4: PUT (x,y),mauer%:GOTO fa
fa5: stone(j,i)=-2:LINE(x,y)-(x+19,y+9),0,bf
fa: NEXT j,i
GOTO neu
itsovernowbabyblue: FOR i = 0 TO 40 STEP 2:x=(wx-1)*20:y=(wy-1)*10
PUT (x,y),rock%:PUT (x,y),willi%
PUT (x-st*20,y-10),rock%:LINE(x-st*20,y-10)-(x-st*20+19,y-1),0,bf
SOUND i*100,0.2,255:SOUND i*100,0.2,255,1:NEXT i
FOR j=0 TO 9:FOR i=0+j TO 200 STEP 10:LINE(0,i)-(640,i),0:NEXT i,j
COLOR 2
PRINT " --------------------------------"
PRINT " Bedaure. Das war wohl nichts... "
PRINT " --------------------------------":PRINT:man=man+1:IF man = 10 THEN PRINT "GAME OVER":FOR i =1 TO 9000 : NEXT i : RUN
PRINT :PRINT " Du hast noch ";10-man;" Leben."
PRINT :PRINT " Weiter: Joystick hoch.":PRINT:PRINT " Ende: Joystick runter."
FOR i = 0 TO 600 STEP 30 :PUT (i,25),willi%:NEXT i:PRINT :PRINT
F:IF STICK(3)=-1 THEN
IF bild=0 THEN
ERASE stone,rock%,willi%,erde%,mauer%,kohl%
GOTO Stoneage
ELSE
GOTO w
END IF
ELSE
IF STICK(3)=1 THEN
WINDOW CLOSE 2
WINDOW OUTPUT 1
SCREEN CLOSE 1
END
ELSE
GOTO F
END IF
END IF
freak: WINDOW 2," Geschafft",,8,1
CLS:FOR i =1 TO 15 :COLOR i
PRINT INT(punkte);"Sekunden. Sieg! Doch weitere Screens warten..."
NEXT i
FOR i= 1 TO 333: PUT (RND*620,RND*190),willi%
PUT (RND*620,RND*190),rock%: NEXT i
RUN
init:
DIM stone(32,19):sch=40
SCREEN 1,640,200,4,2: RANDOMIZE(TIMER/100)
WINDOW 2,"Stone Screen 1 : Zufall",,8,1
WINDOW OUTPUT 2:WAVE 0,SIN:na$="Zufall"
FOR i=1 TO LEN(TTTE$):ttte1=ttte1+ASC(LEFT$(TTTE$,i)):NEXT i:IF ttte1<>4565 THEN SYSTEM
DEF FNF=RND*15/16: DEF FNr=(RND*7+8)/16:ttte1=0
RESTORE farben:DEF FNt(x)=(x-0.3)*(SGN(x-0.3)/2+0.5)
FOR i=0 TO 15: READ r,g,b
PALETTE i,r/15,g/15,b/15
NEXT i
farben:
DATA 0, 0, 0,15,15,15,12 , 0, 0,15, 6, 0
DATA 0, 9, 0, 3,15, 1,0, 0,15, 2,12,13
DATA 15,0,12,10, 0,15,9, 5, 0,15,12,10
DATA 15,14, 0,12,12,12,8, 8, 8, 4, 4, 4
DIM rock%(83)
FOR i=0 TO 83: READ rock%(i)
NEXT i
DATA 20,10,4,1022,0,7993,-16384,32766
DATA -8192,-6336,0,-9216,0,-32753,-8192,16495
DATA 8192,892,0,1484,-32768&,3003,0,0
DATA 0,198,0,1,0,6329,-20480,9215
DATA -20480,32767,-4096,-20481,12288,31740,8192,16332
DATA -16384,4091,0,1022,0,8191,-16384,32767
DATA -8192,-7,-20480,-1,-20480,-1,-4096,-4097
DATA 12288,31740,8192,16332,-16384,4091,0,1022
DATA 0,8191,-16384,32767,-8192,-7,-20480,-1
DATA -20480,-1,-4096,-4097,12288,31740,8192,16332
DATA -16384,4091,0,0
DIM erde%(83)
FOR i=0 TO 83:READ erde%(i):NEXT i
DATA 20,10,4,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,-8423,-24576,-19721,-4096,-84
DATA 8192,-26501,-4096,30670,28672,-26309,-16384,28655
DATA 28672,-4008,-16384,8127,28672,-21023,-24576,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,-10983,8192,-27933,-4096,-116
DATA 8192,-26503,20480,21966,16384,-26318,-16384,28335
DATA 28672,-20392,-16384,4797,28672,-31263,8192,0
DIM willi%(83)
FOR i=0 TO 83:READ willi%(i):NEXT i
DATA 20,10,4,8095,-32768,30817,-8192,14433
DATA -16384,32767,-8192,-32768,4096,-29306,4096,-32768
DATA 4096,-12874,12288,24576,-8192,8191,-32768,0,0,0,0,0
DATA 0,0,0,32767,-8192,0,0,16384
DATA 8192,12289,-16384,8191,0,0,0,0
DATA 0,0,0,4097,0,520,16384,0
DATA 4096,0,0,0,0,16384,4096,0
DATA -16384,4095,-32768,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DIM kohl%(83)
FOR i=0TO 83:READ kohl%(i):NEXT i
DATA 20,10,4,9418,16384,-2944,28672,168
DATA -16384,-9271,8192,2509,-32768,-15763,-20480,26307
DATA -16384,14269,-4096,-6913,-8192,15507,-32768,0
DATA 0,1024,0,136,-32768,6272,0,2048
DATA 0,0,0,0,0,0,0,0,0,0,0,10186
DATA 16384,-1,-4096,16383,-8192,-1,-4096,32767
DATA -16384,-1,-4096,32767,-8192,16383,-4096,-1
DATA -8192,16275,-32768,768,0,2927,-32768,16215
DATA 8192,1078,20480,28690,16384,14738,16384,6204
DATA 0,0,0,0,0,0,0,0
DIM mauer%(83)
FOR i=0 TO 83:READ mauer%(i):NEXT i
DATA 20,10,4,0,0,-1793,4096,0,0,0,0,8079
DATA -4096,0,0,0,0,-15368,28672,-14343
DATA -4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,0,0,-1025,28672,-1025,28672,0,0,32703,-4096,32703
DATA -4096,0,0,-8197,-4096,-8197,-4096,-8197
DATA -4096,0,0,0
bilder:
DATA "Logik-Horror"
DATA 1301005500400500000010005500001
DATA 1430431440441540044000440010101
DATA 1555400410400454141404445010101
DATA 0555410045400454143004555010103
DATA 0010410445441041140400440010105
DATA 0404445005000001100050000011115
DATA 0404144444400004444400111011115
DATA 5404140500401015555510111011105
DATA 5434140440401041555140131011055
DATA 5444140140401044500440111010551
DATA 0111145045401004500410000015511
DATA 1000145040401004343410000015111
DATA 1111141340001004444400040045000
DATA 4444144441000001155100040455000
DATA 4000300001040404440440044555555
DATA 4000000041040404545404044555555
DATA 4000000041043404545414045455555
DATA 4200000000004004443414145043433
bild2:
DATA "Jeder Schritt kann Falsch sein"
DATA 3105430004001003000055500000000
DATA 0140444414103000444444444444445
DATA 0140100005100300145555555155550
DATA 5140051055100003045444445444440
DATA 0141500551100100045551345555540
DATA 0141105511030001040103041555540
DATA 0141055114000111044444441151140
DATA 0140551144103011140055000131140
DATA 3145511440000012140444444444440
DATA 0145114431030000040400100110000
DATA 0145144133010010140444444444440
DATA 5145443313130003040004011400540
DATA 5140433333130003044404000404540
DATA 5140431313331033044404055454040
DATA 5145413331333333041104045454040
DATA 0140433133333133041000045454040
DATA 0140433333133333141511045454040
DATA 1000413333331313143511045554000
bild3:
DATA "Fallenstellers Nachtgebet"
DATA 1101111000444144443044444444444
DATA 0114013411555515555504111115534
DATA 5140010041040414454004111105504
DATA 1003010550104414440004111111114
DATA 1404414404101414100404444414444
DATA 1400111004101414101404300100004
DATA 1401010104101414100404444144404
DATA 1410010014101414100400000000004
DATA 0100510001001414110444444044444
DATA 4110010011401414100014000000000
DATA 4001111100401414130404000000101
DATA 4400444004401414100004110444444
DATA 0001003000001414100404111414301
DATA 3100010000101414101004444414400
DATA 3331000101001414100004441113401
DATA 1333300000001414100400500000401
DATA 3313333001001414100004444444410
DATA 3333333330000020004000005550000
bild4:
DATA "Unloesbar?"
DATA 0000400000000011100000000000000
DATA 1000400044444441444444400000000
DATA 0000400000040001100400000000000
DATA 0400400100040001100400000000000
DATA 0433400000040001100400411114444
DATA 0433400000040001100400400000003
DATA 0444400010040001100400404444444
DATA 0000000000000001000000004000000
DATA 4000000000000001000000000000000
DATA 0000011111111001000000001000000
DATA 0000113333331101000000001110000
DATA 0000011111111301444000000000000
DATA 0000011111111301004000000000000
DATA 0000011111111301004000000000000
DATA 0000033333333301004000000000000
DATA 0000000000000001004000044411000
DATA 0000000000000001004000040000000
DATA 2000000000000001554000043104003
bild5:
DATA "Willi's Brueder"
DATA 1111111111111111111111144444444
DATA 0055555555500000000000340000000
DATA 0455555555442444444444440000000
DATA 0455555555444400000000000000000
DATA 5455555555555555555555555555555
DATA 5455555555555555555555555555555
DATA 5455555555555444544455555555555
DATA 5455555555555545554555555555555
DATA 5455555555555545554555555555555
DATA 5455555555555545554555555555555
DATA 5455555555555555555555555555555
DATA 5455555555555555555555555555555
DATA 5455555555555555555555555555555
DATA 5455555555555555555555555555555
DATA 5455555555555555555555555555555
DATA 5455555555555555555555555555555
DATA 5422222222222222222222220000000
DATA 2400000000000000000000000000000
bild6:
DATA "Fred lebt! Lupo auch"
DATA 3410000000000000000041100000000
DATA 1010000000000000000043140000000
DATA 1110000000000000000044140000000
DATA 0110011111110111110000140000000
DATA 4010001111101111111000140001111
DATA 0010000313000000000000140001331
DATA 0410000010001111000000140001111
DATA 0000000010000034000000140001331
DATA 0044000010001111111000140001111
DATA 0000000010000111110000140004004
DATA 0000000030000000000000140000033
DATA 0000000000000000000000140000033
DATA 0000000000000000000000140000033
DATA 0000004444400000000000140000000
DATA 0000000000000010010000140000000
DATA 0000000000044444410000140444430
DATA 0000000000040100510000100400000
DATA 0000000000043005510020015430045
RETURN