home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 426-450 / apd439 / jiji.amos / jiji.amosSourceCode
AMOS Source Code  |  1992-04-04  |  4KB  |  187 lines

  1. Dim ODER(16),POS(16),BEEN(6)
  2. Global ODER(),POS(),BLANK,A,TRN,SEC,HR,MN,SOND,BEEN(),STAGE,WON
  3. OPEN_SC
  4. NEW_GAME:
  5. SEC=0 : HR=0 : MN=0 : SOND=0 : WON=0
  6. _GET_SP
  7. SET_UP
  8. _ORDER
  9. DIS_BOB
  10. Timer=0
  11. TIME
  12. SOUND
  13. Do 
  14.    Repeat 
  15.       Repeat 
  16.          If Key State(80)=True Then SOUND
  17.          If Key State(95)=True Then Run "Harbinder_Ghag:main_menu.amos"
  18.          TIME
  19.          A=Mouse Zone
  20.       Until A>0
  21.       If Key State(80)=True Then SOUND
  22.       If Key State(95)=True Then Run "Harbinder_Ghag:main_menu.amos"
  23.       TIME
  24.       WAY=0
  25.       If X Bob(POS(A-1))=X Bob(POS(BLANK))-74 and Y Bob(POS(A-1))=Y Bob(POS(BLANK)) Then WAY=1
  26.       If X Bob(POS(A-1))=X Bob(POS(BLANK)) and Y Bob(POS(A-1))=Y Bob(POS(BLANK))-50 Then WAY=3
  27.       If X Bob(POS(A-1))=X Bob(POS(BLANK))+74 and Y Bob(POS(A-1))=Y Bob(POS(BLANK)) Then WAY=2
  28.       If X Bob(POS(A-1))=X Bob(POS(BLANK)) and Y Bob(POS(A-1))=Y Bob(POS(BLANK))+50 Then WAY=4
  29.    Until WAY>0 and Mouse Click=1
  30.    On WAY Proc LEFT,RIGHT,UP,DWN
  31.    TURN
  32.    CHECK
  33.    If WON=1 Then Goto NEW_GAME
  34. Loop 
  35. Procedure _ORDER
  36.    Randomize Timer
  37.    For Y=1 To 15
  38.       S:
  39.       G=Rnd(14)+1
  40.       For A=1 To 15 : If ODER(A)=G and P=0 Then Goto S
  41.       Next A
  42.       ODER(Y)=G
  43.    Next Y
  44.    ODER(16)=16
  45.    For H=0 To 16 : POS(H)=H : Next H
  46. End Proc
  47. Procedure SET_UP
  48.    Screen 1
  49.    Paper 0 : Curs Off : Cls 0
  50.    Pen 30
  51.    Locate 1,1 : Print "Turn : "
  52.    Pen 29
  53.    Locate 20,1 : Print "Puzzle :"
  54.    Ink 20
  55.    Box 70,20 To 170,50
  56.    Pen 23
  57.    Locate 1,4 : Print "Time :"
  58.    Locate 10,3 : Print "Hours :";HR
  59.    Locate 10,4 : Print "Mins  :";MN
  60.    Locate 10,5 : Print "Secs  :";SEC
  61.    Paste Bob 240,1,17
  62.    Get Sprite Palette 
  63.    Wait Vbl 
  64.    '************************************************* 
  65.    Screen 0
  66.    Curs Off : Flash Off : Paper 0 : Cls 0
  67.    Get Sprite Palette 
  68.    Double Buffer 
  69.    Get Sprite Palette 
  70.    For A=0 To 15 : Channel A To Bob A : Next A
  71.    STAGE=1
  72. End Proc
  73. Procedure LEFT
  74.    BL=A-1
  75.    Amal 15,"M -74,0,37" : Amal POS(A-1),"M 74,0,37" : Amal On 
  76.    Swap POS(A-1),POS(BLANK)
  77.    Swap ODER(A),ODER(BLANK+1)
  78.    BLANK=BL
  79.    Repeat 
  80.       TIME
  81.    Until Chanmv(POS(A-1))=False
  82.    Update 
  83. End Proc
  84. Procedure RIGHT
  85.    BL=A-1
  86.    Amal 15,"M 74,0,37" : Amal POS(A-1),"M -74,0,37" : Amal On 
  87.    Swap POS(A-1),POS(BLANK)
  88.    Swap ODER(A),ODER(BLANK+1)
  89.    BLANK=BL
  90.    Repeat 
  91.       TIME
  92.    Until Chanmv(POS(A-1))=False
  93.    Update 
  94. End Proc
  95. Procedure UP
  96.    BL=A-1
  97.    Amal 15,"M 0,-50,25" : Amal POS(A-1),"M 0,50,25" : Amal On 
  98.    Swap POS(A-1),POS(BLANK)
  99.    Swap ODER(A),ODER(BLANK+1)
  100.    BLANK=BL
  101.    Repeat 
  102.       TIME
  103.    Until Chanmv(POS(A-1))=False
  104.    Update 
  105. End Proc
  106. Procedure DWN
  107.    BL=A-1
  108.    Amal 15,"M 0,50,25" : Amal POS(A-1),"M 0,-50,25" : Amal On 
  109.    Swap POS(A-1),POS(BLANK)
  110.    Swap ODER(A),ODER(BLANK+1)
  111.    BLANK=BL
  112.    Repeat 
  113.       TIME
  114.    Until Chanmv(POS(A-1))=False
  115.    Update 
  116. End Proc
  117. Procedure TURN
  118.    Add TRN,1
  119.    Screen 1
  120.    Pen 19
  121.    Locate 7,1 : Print TRN
  122.    Screen 0
  123. End Proc
  124. Procedure DIS_BOB
  125.    Reserve Zone 16
  126.    E=-1 : TRN=-1
  127.    For B=1 To 4
  128.       For A=1 To 4
  129.          Add E,1
  130.          Set Zone E+1,(A*74)-74,(B*50)-50 To(A*74),(B*50)
  131.          Bob E,(A*74)-74,(B*50)-50,ODER(E+1)
  132.          Wait Vbl 
  133.       Next A
  134.    Next B
  135.    TURN
  136.    BLANK=15
  137. End Proc
  138. Procedure TIME
  139.    Screen 1
  140.    SEC=Timer/50
  141.    If SEC=60
  142.       SEC=0 : Timer=0 : Inc MN
  143.       If MN=60
  144.          MN=0 : Inc HR
  145.    End If : End If 
  146.    Pen 28
  147.    Locate 17,3 : Print HR
  148.    Locate 17,4 : Print MN;" "
  149.    Locate 17,5 : Print SEC;" "
  150.    Screen 0
  151. End Proc
  152. Procedure _GET_SP
  153.    If STAGE=6 or STAGE=1 : For A=1 To 6 : BEEN(A)=0 : Next A : STAGE=1 : End If 
  154.    Randomize Timer
  155.    Erase 1
  156.    BACK:
  157.    A=Rnd(5)+1
  158.    A$=Str$(A)-" "
  159.    For F=1 To 6 : If BEEN(F)=A Then Goto BACK
  160.    Next F
  161.    BEEN(STAGE)=A : Inc STAGE
  162.    Load "Harbinder_Ghag:sprites/sp"+A$+".abk",1
  163. End Proc
  164. Procedure SOUND
  165.    Add SOND,1,1 To 2
  166.    If SOND=2 Then Music Off Else Music 1
  167.    Wait 10
  168. End Proc
  169. Procedure CHECK
  170.    WON=0
  171.    For A=1 To 15
  172.       If ODER(A)<>A Then Pop Proc
  173.    Next A
  174.    Music 1
  175.    Pen 28 : Locate 0,8 : Centre "Well Done, puzzle complete"
  176.    Pen 19 : Locate 0,10 : Centre "Please wait, loading new puzzle"
  177.    WON=1
  178. End Proc
  179. Procedure OPEN_SC
  180.    Default 
  181.    Load "harbinder_ghag:music/harbinder_ghag.abk"
  182.    Screen Open 1,320,56,32,Lowres
  183.    Screen Display 1,,250,,
  184.    Cls 0
  185.    Screen Open 0,320,200,32,Lowres
  186.    Cls 0
  187. End Proc