home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AMOS PD CD
/
amospdcd.iso
/
426-450
/
apd439
/
jiji.amos
/
jiji.amosSourceCode
Wrap
AMOS Source Code
|
1992-04-04
|
4KB
|
187 lines
Dim ODER(16),POS(16),BEEN(6)
Global ODER(),POS(),BLANK,A,TRN,SEC,HR,MN,SOND,BEEN(),STAGE,WON
OPEN_SC
NEW_GAME:
SEC=0 : HR=0 : MN=0 : SOND=0 : WON=0
_GET_SP
SET_UP
_ORDER
DIS_BOB
Timer=0
TIME
SOUND
Do
Repeat
Repeat
If Key State(80)=True Then SOUND
If Key State(95)=True Then Run "Harbinder_Ghag:main_menu.amos"
TIME
A=Mouse Zone
Until A>0
If Key State(80)=True Then SOUND
If Key State(95)=True Then Run "Harbinder_Ghag:main_menu.amos"
TIME
WAY=0
If X Bob(POS(A-1))=X Bob(POS(BLANK))-74 and Y Bob(POS(A-1))=Y Bob(POS(BLANK)) Then WAY=1
If X Bob(POS(A-1))=X Bob(POS(BLANK)) and Y Bob(POS(A-1))=Y Bob(POS(BLANK))-50 Then WAY=3
If X Bob(POS(A-1))=X Bob(POS(BLANK))+74 and Y Bob(POS(A-1))=Y Bob(POS(BLANK)) Then WAY=2
If X Bob(POS(A-1))=X Bob(POS(BLANK)) and Y Bob(POS(A-1))=Y Bob(POS(BLANK))+50 Then WAY=4
Until WAY>0 and Mouse Click=1
On WAY Proc LEFT,RIGHT,UP,DWN
TURN
CHECK
If WON=1 Then Goto NEW_GAME
Loop
Procedure _ORDER
Randomize Timer
For Y=1 To 15
S:
G=Rnd(14)+1
For A=1 To 15 : If ODER(A)=G and P=0 Then Goto S
Next A
ODER(Y)=G
Next Y
ODER(16)=16
For H=0 To 16 : POS(H)=H : Next H
End Proc
Procedure SET_UP
Screen 1
Paper 0 : Curs Off : Cls 0
Pen 30
Locate 1,1 : Print "Turn : "
Pen 29
Locate 20,1 : Print "Puzzle :"
Ink 20
Box 70,20 To 170,50
Pen 23
Locate 1,4 : Print "Time :"
Locate 10,3 : Print "Hours :";HR
Locate 10,4 : Print "Mins :";MN
Locate 10,5 : Print "Secs :";SEC
Paste Bob 240,1,17
Get Sprite Palette
Wait Vbl
'*************************************************
Screen 0
Curs Off : Flash Off : Paper 0 : Cls 0
Get Sprite Palette
Double Buffer
Get Sprite Palette
For A=0 To 15 : Channel A To Bob A : Next A
STAGE=1
End Proc
Procedure LEFT
BL=A-1
Amal 15,"M -74,0,37" : Amal POS(A-1),"M 74,0,37" : Amal On
Swap POS(A-1),POS(BLANK)
Swap ODER(A),ODER(BLANK+1)
BLANK=BL
Repeat
TIME
Until Chanmv(POS(A-1))=False
Update
End Proc
Procedure RIGHT
BL=A-1
Amal 15,"M 74,0,37" : Amal POS(A-1),"M -74,0,37" : Amal On
Swap POS(A-1),POS(BLANK)
Swap ODER(A),ODER(BLANK+1)
BLANK=BL
Repeat
TIME
Until Chanmv(POS(A-1))=False
Update
End Proc
Procedure UP
BL=A-1
Amal 15,"M 0,-50,25" : Amal POS(A-1),"M 0,50,25" : Amal On
Swap POS(A-1),POS(BLANK)
Swap ODER(A),ODER(BLANK+1)
BLANK=BL
Repeat
TIME
Until Chanmv(POS(A-1))=False
Update
End Proc
Procedure DWN
BL=A-1
Amal 15,"M 0,50,25" : Amal POS(A-1),"M 0,-50,25" : Amal On
Swap POS(A-1),POS(BLANK)
Swap ODER(A),ODER(BLANK+1)
BLANK=BL
Repeat
TIME
Until Chanmv(POS(A-1))=False
Update
End Proc
Procedure TURN
Add TRN,1
Screen 1
Pen 19
Locate 7,1 : Print TRN
Screen 0
End Proc
Procedure DIS_BOB
Reserve Zone 16
E=-1 : TRN=-1
For B=1 To 4
For A=1 To 4
Add E,1
Set Zone E+1,(A*74)-74,(B*50)-50 To(A*74),(B*50)
Bob E,(A*74)-74,(B*50)-50,ODER(E+1)
Wait Vbl
Next A
Next B
TURN
BLANK=15
End Proc
Procedure TIME
Screen 1
SEC=Timer/50
If SEC=60
SEC=0 : Timer=0 : Inc MN
If MN=60
MN=0 : Inc HR
End If : End If
Pen 28
Locate 17,3 : Print HR
Locate 17,4 : Print MN;" "
Locate 17,5 : Print SEC;" "
Screen 0
End Proc
Procedure _GET_SP
If STAGE=6 or STAGE=1 : For A=1 To 6 : BEEN(A)=0 : Next A : STAGE=1 : End If
Randomize Timer
Erase 1
BACK:
A=Rnd(5)+1
A$=Str$(A)-" "
For F=1 To 6 : If BEEN(F)=A Then Goto BACK
Next F
BEEN(STAGE)=A : Inc STAGE
Load "Harbinder_Ghag:sprites/sp"+A$+".abk",1
End Proc
Procedure SOUND
Add SOND,1,1 To 2
If SOND=2 Then Music Off Else Music 1
Wait 10
End Proc
Procedure CHECK
WON=0
For A=1 To 15
If ODER(A)<>A Then Pop Proc
Next A
Music 1
Pen 28 : Locate 0,8 : Centre "Well Done, puzzle complete"
Pen 19 : Locate 0,10 : Centre "Please wait, loading new puzzle"
WON=1
End Proc
Procedure OPEN_SC
Default
Load "harbinder_ghag:music/harbinder_ghag.abk"
Screen Open 1,320,56,32,Lowres
Screen Display 1,,250,,
Cls 0
Screen Open 0,320,200,32,Lowres
Cls 0
End Proc