home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 4: Demo 1
/
almathera_demo1.bin
/
amos
/
mazerv1.amos
/
mazerv1.amosSourceCode
Wrap
AMOS Source Code
|
1995-03-16
|
5KB
|
263 lines
'
' MAZER v1.0
'
' A Simple Maze Game!
'
' By Ben Ashley
'
' -------------------
' This program demonstrates how easy it is to create a playable game
' in AMOS, without flashy graphics and sound!
'
' * A Different maze every time!
' * You have bombs, to blow away parts of the maze!
' * Computer enemy! Try to avoid him!
'
Set Buffer 25
'
Dim MAZE$(80,30) : Dim MAZE(80,30)
Do
Screen Open 0,640,256,4,Hires
Colour 1,$FFF : Colour 2,$FF0
Curs Off : Flash Off : Hide On : Cls 0
'
WALL$=Paper$(2)+" "
SPAC$=Paper$(0)+" "
CH1$=Pen$(1)+Paper$(0)+"*"
BOMBS=3
'
'
N=0
Repeat
For F=0 To 79
If N=0 or N=29 or F=0 or F=79
MAZE$(F,N)=WALL$ : MAZE(F,N)=1
Else
R=Rnd(3)
If R=0
MAZE(F,N)=1 : MAZE$(F,N)=WALL$
Else
MAZE(F,N)=0 : MAZE$(F,N)=SPAC$
End If
End If
Print At(F,N);MAZE$(F,N)
Next F
Add N,1
Until N=30
'
Pen 0 : Paper 2
Print At(0,0);"MAZER - By Ben Ashley, 1992. Odyssey Software"
'
' Set START Position
'
For X=1 To 5
For Y=1 To 5
If MAZE(X,Y)=0
Goto STA
End If
Next Y
Next X
'
STA:
'
' Set END position
'
For EX=79 To 74 Step -1
For EY=29 To 25 Step -1
If MAZE(EX,EY)=0
Print At(EX,EY);Pen$(1)+Paper$(0)+"E"
Goto STAR
End If
Next EY
Next EX
'
STAR:
'
' Set up the ENEMY....
'
For XE=60 To 79
For YE=20 To 29
If MAZE(XE,YE)=0
Goto BEG
End If
Next YE
Next XE
'
BEG:
'
' And the other one...
'
For XE2=10 To 79
For YE2=6 To 29
If MAZE(XE2,YE2)=0
Goto BEGIN
End If
Next YE2
Next XE2
'
BEGIN:
'
EN=False
'
OX=X : OY=Y : Gosub NEW
OCX=XE : OCY=YE : Gosub NEW2
OCX2=XE2 : OCY2=YE2
'
Timer=0
'
Repeat
OX=X : OY=Y
OCX=XE : OCY=YE
OCX2=XE2 : OCY2=YE2
If Key State(78) and MAZE(X+1,Y)=0
Add X,1
Gosub NEW
Goto NEX
End If
If Key State(79) and MAZE(X-1,Y)=0
Add X,-1
Gosub NEW
Goto NEX
End If
If Key State(76) and MAZE(X,Y-1)=0
Add Y,-1
Gosub NEW
Goto NEX
End If
If Key State(77) and MAZE(X,Y+1)=0
Add Y,1
Gosub NEW
Goto NEX
End If
NEX:
A$=Lower$(Inkey$)
If A$="b" and BOMBS>0
Add BOMBS,-1
A1=0 : A2=0 : A3=0 : A4=0
If Not X=1
A1=X-1
Else
A1=X+2
End If
If Not X=78
A2=X+1
Else
A2=X-2
End If
If Not Y=1
A3=Y-1
Else
A3=Y+2
End If
If Not Y=28
A4=Y+1
Else
A4=Y-2
End If
MAZE(A1,Y)=0 : MAZE(A2,Y)=0 : MAZE(X,A3)=0 : MAZE(X,A4)=0
MAZE$(A1,Y)=SPAC$ : MAZE$(A2,Y)=SPAC$ : MAZE$(X,A3)=SPAC$ : MAZE$(X,A4)=SPAC$
For F=X-1 To X+1 : For G=Y-1 To Y+1
Print At(F,G);MAZE$(F,G)
Next G : Next F
Gosub NEW
End If
'
If X<XE and MAZE(XE-1,YE)=0
Add XE,-1
Gosub NEW2
Goto NEXLOOP
End If
If X>XE and MAZE(XE+1,YE)=0
Add XE,1
Gosub NEW2
Goto NEXLOOP
End If
If Y<YE and MAZE(XE,YE-1)=0
Add YE,-1
Gosub NEW2
Goto NEXLOOP
End If
If Y>YE and MAZE(XE,YE+1)=0
Add YE,1
Gosub NEW2
Goto NEXLOOP
End If
'
NEXLOOP:
'
If X<XE2 and MAZE(XE2-1,YE2)=0
Add XE2,-1
Gosub NEW3
Goto NEXLOOP2
End If
If X>XE2 and MAZE(XE2+1,YE2)=0
Add XE2,1
Gosub NEW3
Goto NEXLOOP2
End If
If Y<YE2 and MAZE(XE2,YE2-1)=0
Add YE2,-1
Gosub NEW3
Goto NEXLOOP2
End If
If Y>YE2 and MAZE(XE2,YE2+1)=0
Add YE2,1
Gosub NEW3
Goto NEXLOOP2
End If
'
NEXLOOP2:
'
If X=XE and Y=YE : EN=True : DEAD=True : End If
If X=XE2 and Y=YE2 : EN=True : DEAD=True : End If
If X=EX and Y=EY : EN=True : DEAD=False : End If
Wait 3
Until EN=True
'
Gosub SHATTER
Cls 0
'
If DEAD=True
Gosub LOSE
Else
Gosub WIN
End If
DEAD=False
EN=False
Centre At(,12)+"Press Any Key"
Clear Key
Repeat
Until Inkey$<>""
Loop
'
NEW:
Print At(OX,OY);SPAC$
Print At(X,Y);CH1$
Return
'
NEW2:
Print At(OCX,OCY);SPAC$
Print At(XE,YE);"O"
Return
'
NEW3:
Print At(OCX2,OCY2);SPAC$
Print At(XE2,YE2);"O"
Return
'
SHATTER:
For F=0 To 79 : For G=0 To 29
If MAZE(F,G)=1
Print At(F,G);SPAC$
End If
Next G
Next F
Return
'
WIN:
Centre At(,10)+"Maze completed in "+Str$(Timer/60)+" seconds!"
Return
'
LOSE:
Centre At(,10)+"Killed by the Maze Monster, after "+Str$(Timer/60)+" seconds!"
Return