'ON BREAK GOSUB breakie:BREAK ON
'FOR i=1 TO 9:MENU i,0,1,"":NEXT
'ON ERROR GOTO breakie2

DECLARE FUNCTION ldscr& LIBRARY
LIBRARY "ldscr.library"

DIM Arrow&(200,4),Dum&(300),LosOp(1000,2)
SCREEN 3,352,280,5,1:WINDOW 3,,,0,3:PALETTE 1,0,0,0:SCREEN 4,352,280,5,1
WINDOW 4,,,0,4:PALETTE 1,0,0,0:WINDOW 3:WINDOW OUTPUT 4
scherm$="dh0:Lo-res/Puzzel 00":GOSUB Main
GET (23, 20)-(48, 45),Arrow&(0,0):GET (23, 49)-(48, 74),Arrow&(0,1)
GET (23, 78)-(48,103),Arrow&(0,2):GET (23,107)-(48,132),Arrow&(0,3)
GET (23,136)-(48,161),Arrow&(0,4):CLS:Verwissel=15:GOSUB DataLezen

MenuStart:
WINDOW 3:WINDOW OUTPUT 4:CLS:WINDOW 4:WINDOW OUTPUT 3
scherm$="dh0:Lo-res/Puzzel 14":GOSUB Main:WINDOW 3:WHILE MOUSE(0)<>0:WEND

Muis:
File$="":IF MOUSE(0)=0 THEN Muis
mx=MOUSE(1):my=MOUSE(2)
IF mx>137 AND mx<140 AND my>158 AND my<160 THEN Extra1
IF mx> 19 AND mx<102 AND my> 86 AND my<109 THEN File$="dh0:Lo-res/Puzzel 01"
IF mx> 19 AND mx<102 AND my>114 AND my<137 THEN File$="dh0:Lo-res/Puzzel 02"
IF mx> 19 AND mx<102 AND my>142 AND my<165 THEN File$="dh0:Lo-res/Puzzel 03"
IF mx> 19 AND mx<102 AND my>170 AND my<193 THEN File$="dh0:Lo-res/Puzzel 04"
IF mx> 19 AND mx<102 AND my>198 AND my<221 THEN File$="dh0:Lo-res/Puzzel 05"
IF mx> 19 AND mx<102 AND my>226 AND my<249 THEN File$="dh0:Lo-res/Puzzel 06"
IF mx>244 AND mx<327 AND my> 86 AND my<109 THEN File$="dh0:Lo-res/Puzzel 07"
IF mx>244 AND mx<327 AND my>114 AND my<137 THEN File$="dh0:Lo-res/Puzzel 08"
IF mx>244 AND mx<327 AND my>142 AND my<165 THEN File$="dh0:Lo-res/Puzzel 09"
IF mx>244 AND mx<327 AND my>170 AND my<193 THEN File$="dh0:Lo-res/Puzzel 10"
IF mx>244 AND mx<327 AND my>198 AND my<221 THEN File$="dh0:Lo-res/Puzzel 11"
IF mx>244 AND mx<327 AND my>226 AND my<249 THEN File$="dh0:Lo-res/Puzzel 12"
IF File$="" THEN Muis
GOTO Game

Extra1:
WHILE MOUSE(0)<>0:WEND

Extra11:
IF MOUSE(0)=0 THEN Extra11
mx=MOUSE(1):my=MOUSE(2):IF mx>186 AND mx<189 AND my>127 AND my<130 THEN Extra2
GOTO Muis

Extra2:
WHILE MOUSE(0)<>0:WEND

Extra22:
IF MOUSE(0)=0 THEN Extra22
mx=MOUSE(1):my=MOUSE(2):IF mx>209 AND mx<214 AND my>181 AND my<184 THEN Extra3
GOTO Muis

Extra3:
File$="dh0:Lo-res/Puzzel 13":GOTO Game

Game:
WINDOW OUTPUT 4:scherm$=File$:GOSUB Main:WINDOW 4:WINDOW OUTPUT 3
scherm$=File$:GOSUB Main:WINDOW 4:WINDOW OUTPUT 4:Aantal=1:Po=1
WINDOW OUTPUT 3:PUT ( xpositie(Po), ypositie(Po)),Arrow&(0,Pijl(Po)),PSET
WINDOW OUTPUT 4:PUT ( xpositie(Po), ypositie(Po)),Arrow&(0,Pijl(Po)),PSET
GOSUB Random

Spel:
WHILE MOUSE(0)=0:WEND:mx=MOUSE(1):my=MOUSE(2)
IF mx<261 OR  mx>331 THEN Spel
IF my> 16 AND my< 42 THEN Po=Po-1:GOSUB Spel1
IF my> 42 AND my< 68 THEN Po=Po+1:GOSUB Spel2
IF my> 68 AND my< 94 THEN GOSUB Spel3:WHILE MOUSE(0)<>0:WEND
IF my> 94 AND my<120 THEN GOSUB Spel4:WHILE MOUSE(0)<>0:WEND
IF my>120 AND my<146 THEN GOSUB Spel5:WHILE MOUSE(0)<>0:WEND
IF my>146 AND my<172 THEN GOSUB Random:WHILE MOUSE(0)<>0:WEND
IF my>172 AND my<198 THEN MenuStart
GOTO Spel

Spel1:
weg=Po+1:IF Po=0 THEN Po=24:weg=1
GOTO Spel12

Spel2:
weg=Po-1:IF Po=25 THEN Po=1:weg=24
GOTO Spel12

Spel12:
WINDOW OUTPUT 3:PUT (xpositie(weg),ypositie(weg)),Arrow&(0,4),PSET
WINDOW OUTPUT 4:PUT (xpositie(weg),ypositie(weg)),Arrow&(0,4),PSET
WINDOW OUTPUT 3:PUT ( xpositie(Po), ypositie(Po)),Arrow&(0,Pijl(Po)),PSET
WINDOW OUTPUT 4:PUT ( xpositie(Po), ypositie(Po)),Arrow&(0,Pijl(Po)),PSET:RETURN

Spel3:
x=xbeweging(Po):y=ybeweging(Po)
ON richting(Po)+1 GOSUB RolOmlaag,RolOmhoog,Rollinks,Rolrechts
LosOp(Aantal,0)=x:LosOp(Aantal,1)=y:LosOp(Aantal,2)=richting(Po):Aantal=Aantal+1
RETURN

Spel4:
WINDOW 3:FOR i=0 TO 1000:NEXT:WINDOW 4:RETURN

Spel5:
FOR iii=Aantal-1 TO 1 STEP-1:x=LosOp(iii,0):y=LosOp(iii,1):w=LosOp(iii,2)
ON w+1 GOSUB RolOmhoog,RolOmlaag,Rolrechts,Rollinks
NEXT:Aantal=1:RETURN

DataLezen:
DIM xpositie(24),ypositie(24),Pijl(24),xbeweging(24),ybeweging(24),richting(24)
RESTORE Lezen:FOR i=1 TO 24:READ xpositie(i),ypositie(i),Pijl(i)
READ xbeweging(i),ybeweging(i),richting(i):NEXT:RETURN

Lezen:
DATA  55, 23,3,0,0,0, 82, 23,3,1,0,0,109, 23,3,2,0,0,136, 23,3,3,0,0
DATA 163, 23,3,4,0,0,190, 23,3,5,0,0,223, 56,0,0,0,2,223, 83,0,0,1,2
DATA 223,110,0,0,2,2,223,137,0,0,3,2,223,164,0,0,4,2,223,191,0,0,5,2
DATA 190,225,1,5,0,1,163,225,1,4,0,1,136,225,1,3,0,1,109,225,1,2,0,1
DATA  82,225,1,1,0,1, 55,225,1,0,0,1, 21,191,2,0,5,3, 21,164,2,0,4,3
DATA  21,137,2,0,3,3, 21,110,2,0,2,3, 21, 83,2,0,1,3, 21, 56,2,0,0,3 

Random:
FOR aan=1 TO Verwissel
R1: x=INT(RND*6):IF x<0 OR x>5 THEN R1
R2: y=INT(RND*6):IF y<0 OR y>5 THEN R2
R3: w=INT(RND*4):IF w<0 OR w>3 THEN R3
ON w+1 GOSUB RolOmlaag,RolOmhoog,Rollinks,Rolrechts
LosOp(Aantal,0)=x:LosOp(Aantal,1)=y:LosOp(Aantal,2)=w:Aantal=Aantal+1:NEXT:RETURN

RolOmlaag:
FOR i=1 TO 9:GET (54+x*27,215)-(80+x*27,217),Dum&
SCROLL (54+x*27,56)-(80+x*27,217),0,3 :PUT (54+x*27,56),Dum&,PSET:NEXT:RETURN

RolOmhoog:
FOR i=1 TO 9:GET (54+x*27,56)-(80+x*27,58),Dum&
SCROLL (54+x*27,56)-(80+x*27,217),0,-3:PUT (54+x*27,215),Dum&,PSET:NEXT:RETURN

Rollinks:
FOR ii=1 TO 9:GET (54,56+y*27)-(56,82+y*27),Dum&
SCROLL (54,56+y*27)-(215,82+y*27),-3,0:PUT (213,56+y*27),Dum&,PSET:NEXT:RETURN

Rolrechts:
FOR ii=1 TO 9:GET (213,56+y*27)-(215,82+y*27),Dum&
SCROLL (54,56+y*27)-(215,82+y*27),3,0 :PUT (54,56+y*27),Dum&,PSET:NEXT :RETURN

Breakie:
RETURN

Breakie2:
SYSTEM

Main:
scherm$=scherm$+CHR$(0):sch&=ldscr& (SADD(scherm$),WINDOW(7)):RETURN
