Import mojo Global screenwidth:Int=640 Global screenheight:Int=480 Class hill Field map:Int[][] Field mapwidth:Int Field mapheight:Int Field tilewidth:Float Field tileheight:Float Method New(width:Int=20,height:Int=20) mapwidth = width mapheight = height tilewidth=Float(screenwidth)/Float(mapwidth) tileheight=Float(screenheight)/Float(mapheight) map = New Int[mapwidth][] For Local i=0 Until mapwidth map[i] = New Int[mapheight] Next makehill End Method Method makehill() ' Here we draw rectangles on the map adding by +1 ' with the underlaying value. ' Local exitloop:Bool=False While exitloop = False Local x:Int=Rnd(-mapwidth/7,mapwidth) Local y:Int=Rnd(-mapheight/7,mapheight) Local w:Int=Rnd(1,mapwidth/5) Local h:Int=Rnd(1,mapheight/5) If Rnd(2)<1.8 w=1 h=1 End If ' if highest map value > 20 then stop drawing ' rectangles If addrect(x,y,w,h) > 24 Then exitloop = True Wend End Method Method addrect:Int(x:Int,y:Int,w:Int,h:Int) ' This function draws the rectangle and ' returns the highest value it makes in the map ' Local highestvalue:Int For Local y1=y To y+h For Local x1=x To x+w If x1>=0 And x1<mapwidth And y1>=0 And y1<mapheight Local a:Int = map[x1][y1] a+=1 If a>highestvalue Then highestvalue = a map[x1][y1] = a End If Next Next Return highestvalue End Method Method draw() ' world map ' This function draws the map For Local y=0 Until mapheight For Local x=0 Until mapwidth Local c:Int=map[x][y]*10 'water (low) If map[x][y] > 0 Then SetColor 0,0,100 If map[x][y] > 5 Then SetColor 0,0,200 If map[x][y] > 8 Then SetColor 0,0,250 'grass (higher) If map[x][y] >=10 Then SetColor 0,c,0 'hills (higher) If map[x][y] >=15 Then SetColor c,c/2,0 'mountains (highest) If map[x][y] >=20 Then SetColor c,c,c DrawRect Float(x)*tilewidth,Float(y)*tileheight,tilewidth+1,tileheight+1 Next Next 'heightmap SetScissor 320,0,320,480 For Local y=0 Until mapheight For Local x=0 Until mapwidth Local c:Int=map[x][y]*10 SetColor c,c,c DrawRect Float(x)*tilewidth,Float(y)*tileheight,tilewidth+1,tileheight+1 Next Next SetScissor 0,0,640,480 End Method End Class Global mymap:hill Class MyGame Extends App Field count:Int Method OnCreate() Seed = GetDate[5] SetUpdateRate(1) mymap = New hill(50,50) End Method Method OnUpdate() count+=1 If count>2 Then count=0 Local s:Int=Rnd(32,320) mymap = New hill(s,s) End If End Method Method OnRender() Cls 0,0,0 mymap.draw SetColor 255,255,255 DrawText "Hill Algorithm",0,0 DrawText "World Map",0,20 DrawText "Height map",320,20 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.
Tuesday, February 7, 2017
Monkey-X - Hill Algorithm - code example
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.