home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
401-425
/
apd425
/
sources
/
puzzle.amos
/
puzzle.amosSourceCode
Wrap
AMOS Source Code
|
1991-09-24
|
3KB
|
131 lines
If Length(5)>0
Erase 5
End If
Bob Update Off
Reserve As Work 5,15000
Dim S(4,4)
Dim T(16,2)
Repeat
F$=Fsel$("**.**","","Choose a picture","")
If Not(F$="")
If Exist(F$)
If Upper$(Right$(F$,3))="PCK"
Load F$,5
Unpack 5 To 0
Else
Load Iff F$,0
End If
Hide
H=Screen Height
W=Screen Width
VDIV=H/4
HDIV=W/4
Reserve Zone 16
For Y=1 To 4
For X=1 To 4
Get Bob X+4*Y-4,(X-1)*HDIV,(Y-1)*VDIV To X*HDIV-1,Y*VDIV-1
Set Zone X+4*Y-4,(X-1)*HDIV,(Y-1)*VDIV To X*HDIV-1,Y*VDIV-1
Hot Spot X+4*Y-4,0,0
No Mask X+4*Y-4
S(X,Y)=X+4*Y-4
Next X
Next Y
Zoom 0,0,0,W,H To 0,3*HDIV+5,3*VDIV+5,4*HDIV-6,4*VDIV-6
Cls 0,0,0 To 3*HDIV+4,H
Cls 0,0,0 To W,3*VDIV+4
Cls 0,4*HDIV-5,0 To W,H
Cls 0,0,4*VDIV-5 To W,H
Get Bob 16,3*HDIV,3*VDIV To 4*HDIV-1,4*VDIV-1
No Mask 16
Cls
Show
X=4 : Y=4
Randomize Timer
For I=1 To 200
M=Rnd(3)
P=X
Q=Y
If M=0
Dec Q
Else
If M=2
Inc Q
Else
If M=1
Inc P
Else
If M=3
Dec P
End If
End If
End If
End If
If P>4
Dec P
Else
If P<1
Inc P
End If
End If
If Q>4
Dec Q
Else
If Q<1
Inc Q
End If
End If
Swap S(X,Y),S(P,Q)
X=P
Y=Q
Next I
For Y=1 To 4
For X=1 To 4
Paste Bob(X-1)*HDIV,(Y-1)*VDIV,S(X,Y)
T(X+4*Y-4,1)=X+4*Y-4
T(X+4*Y-4,2)=S(X,Y)
If S(X,Y)=16
SZ=X+4*Y-4
End If
Next
Next
Repeat
DNE=True
Repeat
Repeat
Repeat
Z=Mouse Zone
Until Not(Mouse Key=0)
Until Not(Z=0)
If Mouse Key=2
Z=SZ-4
End If
Until(Abs(Z-SZ)=4) or(Abs(Z-SZ)=1)
If Mouse Key=1
Paste Bob((SZ-1) mod 4)*HDIV,((SZ-1)/4)*VDIV,T(Z,2)
Paste Bob((Z-1) mod 4)*HDIV,((Z-1)/4)*VDIV,T(SZ,2)
Swap T(Z,2),T(SZ,2)
SZ=Z
For I=1 To 16
If Not(T(I,2)=I)
DNE=False
End If
Next I
Else
DNE=True
End If
Until DNE
Bell
Repeat
Until Mouse Key=0
Repeat
Until Not(Mouse Key=0)
End If
End If
Until F$=""
If Length(1)>0
Erase 1
End If
If Length(5)>0
Erase 5
End If
Edit