Import mojo
Class maze
Field map:Bool[][]
Field w:Int,h:Int
Field dirx:Int[] = [0,1,0,-1]
Field diry:Int[] = [-1,0,1,0]
Field rd:Int
Field ds:int
Method New(w:Int,h:Int,rd:Int,ds:Int)
Self.w = w
Self.h = h
map = New Bool[w][]
For Local i = 0 Until w
map[i] = New Bool[h]
Next
Self.rd=rd
Self.ds=ds
makemaze
End Method
Method makemaze()
Local count:Int=0
For Local i=0 Until (w*h)/ds
Local x = 2 + (Int(((w - 2) * Rnd) / 2) * 2)
Local y = 2 + (Int(((h - 2) * Rnd) / 2) * 2)
If count=0 Then map[x][y] = True
Local dir:Int=Rnd(0,4)
While spacetaken(x+(dirx[dir]*2),y+(diry[dir]*2)) = False
If Rnd(rd)<10 Then dir=Rnd(0,4)
While spacetaken(x+(dirx[dir]*2),y+(diry[dir]*2)) = True
dir=Rnd(0,4)
Wend
map[x][y] = True
map[x+dirx[dir]][y+diry[dir]] = True
x+=dirx[dir]
y+=diry[dir]
Wend
Next
End Method
Method spacetaken:Bool(x:Int,y:Int)
If x>-1 And y>-1 And x<w And y<h
Return map[x][y]
End If
Return True
End Method
Method draw()
Local tw:Float=DeviceWidth()/Float(w)
Local th:Float=DeviceHeight()/Float(h)
For Local y=0 Until h
For Local x=0 Until w
If map[x][y] = True
SetColor 255,255,255
DrawRect x*tw,y*th,tw+1,th+1
End If
Next
Next
End Method
End Class
Global mymaze:maze = New maze( Rnd(15,60),
Rnd(15,60),
Rnd(0,100),
Rnd(1,20))
Class MyGame Extends App
Field time:Int=0
Field w:Int,h:Int
Field rd:Int
Field ds:Int
Method OnCreate()
SetUpdateRate(10)
Local date := GetDate()
' set the random seed to
' current second
Seed = date[5]
End Method
Method OnUpdate()
time+=1
If time>10
w = Rnd(15,60)
h = Rnd(15,60)
rd = Rnd(0,100)
ds = Rnd(1,20)
mymaze = New maze(w,h,rd,ds)
time=0
End If
End Method
Method OnRender()
Cls 0,0,0
mymaze.draw
SetColor 0,0,0
DrawRect 0,0,DeviceWidth(),15
SetColor 255,255,255
DrawText "Maze width :"+w+
" height "+h+
" and rdness "+
rd+" and ds "+ds,10,0
End Method
End Class
Function Main()
New MyGame()
End Function
Artificial intelligence/templates/examples/rts/rpg/strategy ect. in MonkeyX/CerberusX language. You can download the free version of MonkeyX from itch.io or Cerberus-x.com The Flash applets will stop working in around 2020.
Monday, December 14, 2015
Monkey-X - Another Map generator (failed maze generator) - code example
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.