home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 401-425 / apd425 / sources / puzzle.amos / puzzle.amosSourceCode
AMOS Source Code  |  1991-09-24  |  3KB  |  131 lines

  1. If Length(5)>0
  2.    Erase 5
  3. End If 
  4. Bob Update Off 
  5. Reserve As Work 5,15000
  6. Dim S(4,4)
  7. Dim T(16,2)
  8. Repeat 
  9.    F$=Fsel$("**.**","","Choose a picture","")
  10.    If Not(F$="")
  11.       If Exist(F$)
  12.          If Upper$(Right$(F$,3))="PCK"
  13.             Load F$,5
  14.             Unpack 5 To 0
  15.          Else 
  16.             Load Iff F$,0
  17.          End If 
  18.          Hide 
  19.          H=Screen Height
  20.          W=Screen Width
  21.          VDIV=H/4
  22.          HDIV=W/4
  23.          Reserve Zone 16
  24.          For Y=1 To 4
  25.             For X=1 To 4
  26.                Get Bob X+4*Y-4,(X-1)*HDIV,(Y-1)*VDIV To X*HDIV-1,Y*VDIV-1
  27.                Set Zone X+4*Y-4,(X-1)*HDIV,(Y-1)*VDIV To X*HDIV-1,Y*VDIV-1
  28.                Hot Spot X+4*Y-4,0,0
  29.                No Mask X+4*Y-4
  30.                S(X,Y)=X+4*Y-4
  31.             Next X
  32.          Next Y
  33.          Zoom 0,0,0,W,H To 0,3*HDIV+5,3*VDIV+5,4*HDIV-6,4*VDIV-6
  34.          Cls 0,0,0 To 3*HDIV+4,H
  35.          Cls 0,0,0 To W,3*VDIV+4
  36.          Cls 0,4*HDIV-5,0 To W,H
  37.          Cls 0,0,4*VDIV-5 To W,H
  38.          Get Bob 16,3*HDIV,3*VDIV To 4*HDIV-1,4*VDIV-1
  39.          No Mask 16
  40.          Cls 
  41.          Show 
  42.          X=4 : Y=4
  43.          Randomize Timer
  44.          For I=1 To 200
  45.             M=Rnd(3)
  46.             P=X
  47.             Q=Y
  48.             If M=0
  49.                Dec Q
  50.             Else 
  51.                If M=2
  52.                   Inc Q
  53.                Else 
  54.                   If M=1
  55.                      Inc P
  56.                   Else 
  57.                      If M=3
  58.                         Dec P
  59.                      End If 
  60.                   End If 
  61.                End If 
  62.             End If 
  63.             If P>4
  64.                Dec P
  65.             Else 
  66.                If P<1
  67.                   Inc P
  68.                End If 
  69.             End If 
  70.             If Q>4
  71.                Dec Q
  72.             Else 
  73.                If Q<1
  74.                   Inc Q
  75.                End If 
  76.             End If 
  77.             Swap S(X,Y),S(P,Q)
  78.             X=P
  79.             Y=Q
  80.          Next I
  81.          For Y=1 To 4
  82.             For X=1 To 4
  83.                Paste Bob(X-1)*HDIV,(Y-1)*VDIV,S(X,Y)
  84.                T(X+4*Y-4,1)=X+4*Y-4
  85.                T(X+4*Y-4,2)=S(X,Y)
  86.                If S(X,Y)=16
  87.                   SZ=X+4*Y-4
  88.                End If 
  89.             Next 
  90.          Next 
  91.          Repeat 
  92.             DNE=True
  93.             Repeat 
  94.                Repeat 
  95.                   Repeat 
  96.                      Z=Mouse Zone
  97.                   Until Not(Mouse Key=0)
  98.                Until Not(Z=0)
  99.                If Mouse Key=2
  100.                   Z=SZ-4
  101.                End If 
  102.             Until(Abs(Z-SZ)=4) or(Abs(Z-SZ)=1)
  103.             If Mouse Key=1
  104.                Paste Bob((SZ-1) mod 4)*HDIV,((SZ-1)/4)*VDIV,T(Z,2)
  105.                Paste Bob((Z-1) mod 4)*HDIV,((Z-1)/4)*VDIV,T(SZ,2)
  106.                Swap T(Z,2),T(SZ,2)
  107.                SZ=Z
  108.                For I=1 To 16
  109.                   If Not(T(I,2)=I)
  110.                      DNE=False
  111.                   End If 
  112.                Next I
  113.             Else 
  114.                DNE=True
  115.             End If 
  116.          Until DNE
  117.          Bell 
  118.          Repeat 
  119.          Until Mouse Key=0
  120.          Repeat 
  121.          Until Not(Mouse Key=0)
  122.       End If 
  123.    End If 
  124. Until F$=""
  125. If Length(1)>0
  126.    Erase 1
  127. End If 
  128. If Length(5)>0
  129.    Erase 5
  130. End If 
  131. Edit