Code archives/Miscellaneous/2d RPG scrolling final
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| issues with server, so here is the full blitzmax with loading saving and map editing, etc | |||||
strict
'window setup
global windowWidth:int = 640
global windowHeight:int = 480
Graphics windowWidth, windowHeight
const MAP_NONE = 0
const MAP_WALL = 1
const MAP_WATER = 2
const MAP_TREE = 3
const MAP_DEEPWATER = 4
const MAP_ROCK = 5
const MAP_ROAD = 6
const MAP_DOOR = 7
const MAP_KEY = 8
const MAP_GOLD = 9
const MAP_GRASS = 10
const MAP_STONE = 11
const MAP_BRIDGE = 12
const MAP_BRIDGEV = 13
const MAP_ROOF = 14
const MAP_DARKGRASS = 15
const MAP_TREE2 = 16
const MAP_FENCE = 17
const MAP_LADDER = 18
const MAP_CLIFF = 19
const MAP_FLOWERS = 20
const MAP_HOLE = 21
const MAP_GRAVE = 22
const MAP_WATERFALL = 23
const MAP_SWORD = 24
const MAP_SHIELD = 25
const MAP_HEART = 26
const MAP_BOULDER = 27
const MAP_WATERBOULDER = 28
Global editmode:int = False
Global edittile:int
Global mapEditmode:int = False
Global keys:int = 0
global totalKeys:int = 0
Global gold:int = 0
global totalgold:int = 0
' map variables
Global mapWidth:int = 40
Global mapHeight:int = 30
Global tileWidth:int = 32
Global tileHeight:int = 32
global displayWidth:int = windowWidth / tileWidth
global displayHeight:int = windowHeight / tileHeight
global xLevelMax:int = 5
global yLevelMax:int = 5
global totalLevels:int = xLevelMax * yLevelMax
print "totalLevels="+totalLevels
Global numlevels:int = 5
global map:int[totalLevels, mapWidth, mapHeight]
' player variables
Global pw = (tileWidth-5)
Global ph = (tileHeight-5)
Global px = GraphicsWidth()/2- tileWidth/2
Global py = GraphicsHeight()/2-tileHeight/2
' scrolling variables
Global mx
Global my
Global msx = 0
Global msy
'temporary vars for editing
Global tempmx
Global tempmy
Global tempmsx
Global tempmsy
Global tempmcx
Global tempmcy
global ignoreWalls:int = false
' for the multi map
'
' this is a mdimensional array
' the player location on the multi map
' is mcx (map cursor x)
' it starts at 1,1, the center of the
' multidimensional array
'
Global mcx=1
Global mcy=1
global ml:int[xLevelMax, yLevelMax]
setblend alphablend
readlevels()
'makemaps()
'.mainloop
While KeyDown(1) = False and not(AppTerminate())
Cls
If KeyHit(KEY_W) then
ignoreWalls = not(ignoreWalls)
end if
if keyhit(KEY_M) then
mapEditMode = not(mapEditMode)
if not(mapEditMode) then saveLevels()
end if
If KeyHit(KEY_E) then
If editmode = True Then
editmode = False
saveLevels()
mx = tempmx
my = tempmy
msx = tempmsx
msy = tempmsy
mcx = tempmcx
mcy = tempmcy
Else
editmode = True
tempmx = mx
tempmy = my
tempmsx = msx
tempmsy = msy
tempmcx = mcx
tempmcy = mcy
end if
EndIf
edit()
mapEdit()
If editmode = False and mapEditMode = false
local i:int
For i=0 To 4 'speed of movement
moveplayer
centermap
switchmap()
Next
drawmap(ml[mcx,mcy], msx,msy)
setalpha 0.2
setcolor 0,0,0
drawrect 0,0,640,30
setalpha 1
drawplayer()
setColor 0,0,0
drawText "Use cursors to move around",1,1
drawText "cursor : " + mcx +","+mcy+" on map : "+chr(ml[mcx,mcy]+65), 1,16
drawText "gold:"+gold+" of "+totalgold+" keys:"+keys+" of "+totalkeys+" w: ignore walls", 241,1
drawText "e: edit mode m: map overview", 241,16
setColor 240,240,150
drawText "Use cursors to move around",0,0
drawText "cursor : " + mcx +","+mcy+" on map : "+chr(ml[mcx,mcy]+65), 0,15
drawText "gold:"+gold+" of "+totalgold+" keys:"+keys+" of "+totalkeys+" w: ignore walls", 240,0
drawText "e: edit mode m: map overview", 240,15
End If
delay 10
Flip
Wend
saveLevels()
End
function saveLevels()
local file:TStream = writefile("default.map")
if not file then
print "failed to create default.map file"
else
local x:int
local y:int
local x1:int
local y1:int
for y = 0 to yLevelMax-1
for x = 0 to xLevelMax-1
writebyte file, ml[x,y] & 255
For y1 = 0 To mapHeight-1
For x1 = 0 To mapWidth-1
writebyte file, map[ml[x,y], x1,y1] & 255
Next
Next
next
next
closestream file
end if
end function
Function readlevels()
local file:TStream
file = openfile("default.map")
if file then
print "opening file"
local x:int
local y:int
local x1:int
local y1:int
for y = 0 to yLevelMax-1
for x = 0 to xLevelMax-1
ml[x, y] = readbyte(file)
For y1 = 0 To mapHeight-1
For x1 = 0 To mapWidth-1
map[ml[x,y], x1,y1] = readbyte(file)
Next
Next
next
next
closestream file
else
print "could not open file default.map"
local i:int
local x:int
local y:int
local tile:int
'read inbuilt map data
print numlevels
For i=0 To numlevels-1
For y=0 To mapHeight-1
For x=0 To mapWidth-1
Readdata tile
map[i, x,y] = tile
if tile = MAP_GOLD then totalgold :+ 1
if tile = MAP_KEY then totalkeys :+ 1
Next
Next
Next
'null all level data
For y=0 To yLevelMax-1
For x=0 To xLevelMax-1
ml[x, y] = -1
next
next
'create new level data
'corner maps -1 non existant
ml[0,0]=-1
ml[2,0]=-1
ml[0,2]=-1
ml[2,2]=-1
' the maps assigned
ml[1,0]=1
ml[1,1]=0
ml[1,2]=3
ml[2,1]=2
ml[0,1]=4
end if
End Function
Function drawmap(level:int, xo:int, yo:int)
local xs:int = -xo/mapWidth
local ys:int = (-yo/mapHeight)-1
if ys < 0 then ys = 0
if xs < 0 then xs = 0
local xe:int = xs+displayWidth + 4
local ye:int = ys+displayHeight + 1
if xe => mapWidth then xe = mapWidth-1
if ye => mapHeight then ye = mapHeight-1
local x:int
local y:int
For y = ys To ye
For x = xs To xe
drawtile(x,y, map[level,x,y], xo,yo)
Next
Next
End Function
Function drawplayer()
if ignoreWalls then
setColor 200,130,10
drawOval px,py,pw,ph
setcolor 250,250,250
drawtext "ignore", px, py
else
setColor 230,230,100
drawOval px,py,pw,ph
end if
End Function
'triangle must be clockwise. or it won't draw
Function DrawTriangle(x1:Float,y1:Float, x2:Float,y2:Float, x3:Float,y3:Float, r1:Float, g1:Float, b1:Float, alpha:float)
' glDisable(GL_TEXTURE_2D)
glColor4f(r1, g1, b1, alpha)
glBegin(GL_TRIANGLES)
glVertex2f(x1,y1)
glVertex2f(x2,y2)
glVertex2f(x3,y3)
glEnd()
' glEnable(GL_TEXTURE_2D)
End Function
function drawFlower(x:int, y:int)
setcolor 255,255,200
drawline x,y+1,x+2, y+1
drawline x+1,y,x+1, y+2
setColor 150,100,0
plot x+1, y+1
end function
function drawScreenTile(tile:int, x1:int, y1:int, Width:int, Height:int)
local x4:int = x1 + Width-1
local y4:int = y1 + Height-1
local drawWater:int = false
Select tile
Case MAP_NONE 'base grass
setColor 60,100,0
drawRect x1,y1,Width,Height
drawWater = true
case MAP_SWORD
setColor 60,100,0
drawRect x1,y1,Width,Height
local x2:int = x1 + (width * 0.5)
local h2:int = Height - 10
local y2:int = y1+h2
setcolor 160,160,160
drawline x2,y1, x2,y1+h2
setcolor 150,150,150
drawline x2-1,y1+2, x2-1,y1+h2
drawline x2-2,y1+6, x2-2,y1+h2
setcolor 130,130,130
drawline x2+1,y1+2, x2+1,y1+h2
drawline x2+2,y1+6, x2+2,y1+h2
setcolor 90,40,00
drawrect x2-2,y2+4, 5,4
setcolor 190,130,50
drawrect x2-6,y2, 13,4
setcolor 150,70,20
drawoval x2-2,y2+6, 4,4
case MAP_SHIELD
setColor 60,100,0
drawRect x1,y1,Width,Height
setcolor 150,150,150
case MAP_HEART
setColor 60,100,0
drawRect x1,y1,Width,Height
Case MAP_GRAVE
setColor 60,100,0
drawRect x1,y1,Width,Height
setcolor 150,150,150
drawoval x1+5, y1+2, 15,10
setcolor 130,130,130
drawoval x1+5, y1+4, 15,10
drawrect x1+5, y1+8, 15,6
setcolor 120,120,120
drawrect x1+5, y1+10, 15,6
setColor 114,42,10
drawrect x1+7, y1+16, 12,16
setColor 104,32,0
drawrect x1+13, y1+16, 6,16
Case MAP_HOLE
setColor 60,100,0
drawRect x1,y1,Width,Height
setColor 60,150,0
drawoval x1, y1+4, Width, Height*0.6
setColor 114,42,10
drawoval x1, y1+5, Width, Height*0.6
setColor 50,30,10
drawoval x1, y1+8, Width, Height*0.6
setColor 0,0,0
drawoval x1, y1+12, Width, Height*0.4
Case MAP_FLOWERS
setColor 60,100,0
drawRect x1,y1,Width,Height
setcolor 200,150,120
drawFlower(x1+3, y1+3)
drawFlower(x1+8, y4-15)
drawFlower(x1+12, y1+20)
drawFlower(x4-12, y4-17)
Case MAP_STONE
setColor 101,93,94
drawRect x1,y1,tileWidth,tileHeight
setColor 90,83,84
drawWater = true
Case MAP_ROOF
setColor 160,13,20
drawRect x1,y1,tileWidth,tileHeight
local xx:int
local yy:int
setColor 160,43,60
drawrect x1,y1,tileWidth, 2
setColor 100,0,0
drawrect x1,y4-2,tileWidth,2
setColor 140,0,0
for yy = y1 to y4 step 4
drawline x1, yy, x4, yy
next
setColor 80,50,20
for xx = x1 to x4 step 6
drawline xx,y1, xx, y4
next
Case MAP_BRIDGE
setColor 120,51,20
drawRect x1,y1,tileWidth,tileHeight
local x2:int = x1 + (tileWidth*0.3)
local x3:int = x1 + (tileWidth*0.7)
local y3:int = y1 + (tileHeight-2)
local xx:int
setColor 80,50,20
for xx = x1 to x4 step 6
drawline xx,y1, xx, y4
next
setColor 30,100,245
drawline x1,y1, x2,y1
drawline x3,y1, x4,y1
drawline x2,y4, x3,y4
setColor 00,50,200
drawline x1,y4, x2,y4
drawline x3,y4, x4,y4
drawline x2,y3, x3,y3
Case MAP_BRIDGEV
setColor 120,51,20
drawRect x1,y1,tileWidth,tileHeight
local yy:int
setColor 80,50,20
for yy = y1 to y4 step 6
drawline x1,yy, x4,yy
next
Case MAP_DARKGRASS
setColor 40,80,0
drawRect x1,y1,tileWidth,tileHeight
setColor 60,100,0
drawWater = true
Case MAP_FENCE
setColor 60,100,0
drawRect x1,y1,tileWidth,tileHeight
local y2:int = y1+(tileHeight* 0.25)
local y3:int = y1+(tileHeight* 0.5)
local y5:int = y1+(tileHeight* 0.75)
setcolor 180,180,180
drawRect x1,y2,tileWidth,4
drawRect x1,y3,tileWidth,4
drawRect x1,y5,tileWidth,4
setcolor 210,210,210
drawLine x1,y2, x4,y2
drawLine x1,y3, x4,y3
drawLine x1,y5, x4,y5
local x2:int = x1+(tileWidth* 0.23)
local x3:int = x1+(tileWidth* 0.68)
setcolor 150,150,150
drawRect x2+4,y1+2,1,tileHeight-4
drawRect x3+4,y1+2,1,tileHeight-4
setcolor 170,170,170
drawRect x2,y1+2,4,tileHeight-4
drawRect x3,y1+2,4,tileHeight-4
setcolor 210,210,210
drawRect x2,y1+2,5,2
drawRect x3,y1+2,5,2
Case MAP_LADDER
setColor 114,42,10
drawRect x1,y1,tileWidth,tileHeight
local x2:int = x1+(tileWidth* 0.23)
local x3:int = x1+(tileWidth* 0.68)
local y2:int = y1+1
setColor 104,42,10
drawRect x3,y1,10,tileHeight
setColor 124,42,10
drawRect x2,y1,5,tileHeight
setColor 60,100,0
drawLine x2,y1,x3,y1
drawLine x1,y4,x2,y4
drawLine x3,y4,x4,y4
setColor 60,150,0
drawLine x1,y1,x2,y1
drawLine x3,y1,x4,y1
drawLine x2,y2,x3,y2
setcolor 200,200,150
drawrect x2+2, y1, 2, tileHeight
drawrect x3-2, y1, 2, tileHeight
local yy:int
for yy = y1+3 to y4 step 5
drawrect x2, yy, 16, 2
next
Case MAP_CLIFF
setColor 114,42,10
drawRect x1,y1,tileWidth,tileHeight
local x2:int = x1+(tileWidth* 0.23)
local x3:int = x1+(tileWidth* 0.68)
local y2:int = y1+1
setColor 104,42,10
drawRect x3,y1,10,tileHeight
setColor 124,42,10
drawRect x2,y1,5,tileHeight
setColor 60,100,0
drawLine x2,y1,x3,y1
drawLine x1,y4,x2,y4
drawLine x3,y4,x4,y4
setColor 60,150,0
drawLine x1,y1,x2,y1
drawLine x3,y1,x4,y1
drawLine x2,y2,x3,y2
Case MAP_TREE2
setColor 60,100,0
drawRect x1,y1,tileWidth,tileHeight
local x2:int = x1 + (tileWidth * 0.3)
local x5:int = x1 + (tileWidth * 0.7)
local x3:int = x1 + (tileWidth * 0.5)
local y3:int = y1 - (tileHeight * 0.5)
local y5:int = y4 - 6
setColor 90,51,20
drawRect x3-3,y5,6,6
setColor 30,100,30
drawOval x1, y1-20, tileWidth, tileHeight+13
setColor 40,130,30
drawOval x1, y1-20, tileWidth-7, tileHeight+13
setColor 50,150,30
drawOval x1+(tilewidth*0.1), y1-15, tileWidth*0.4, tileHeight
Case MAP_TREE'tree
setColor 60,100,0
drawRect x1,y1,tileWidth,tileHeight
local x2:int = x1 + (tileWidth * 0.3)
local x5:int = x1 + (tileWidth * 0.7)
local x3:int = x1 + (tileWidth * 0.5)
local y3:int = y1 - (tileHeight * 0.5)
local y5:int = y4 - 3
drawTriangle(x1,y5, x3,y3, x4,y5, 0,0.5,0,1)
drawTriangle(x1,y5, x3,y3, x2,y5, 0.1,0.6,0.1,1)
drawTriangle(x5,y5, x3,y3, x4,y5, 0,0.4,0,1)
setColor 90,51,20
drawRect x3-3,y5,6,3
setColor 0,50,0
drawline x1,y5, x4, y5
drawline x1,y5, x3, y3
drawline x4,y5, x3, y3
Case MAP_GRASS
setColor 60,100,0
drawRect x1,y1,tileWidth,tileHeight
setColor 0,150,0
local xx:int
local yy:int
for yy = y1 to y4 step 8
for xx = x1 to x4 step 4
drawline xx,yy, xx, yy-5
next
next
Case MAP_WALL
setColor 140,140,140
drawRect x1,y1,tileWidth,tileHeight
setColor 100,100,100
local x2:int = x1 + (tileWidth * 0.3)
local x3:int = x1 + (tileWidth * 0.7)
local y2:int = y1 + (tileHeight * 0.5)
drawline x1,y1, x4,y1
drawline x1,y2, x4,y2
drawline x2,y1, x2,y2
drawline x3,y2, x3,y4
Case MAP_ROAD
setColor 176,146,73
drawRect x1,y1,tileWidth,tileHeight
setColor 156,126,63
drawWater = true
Case MAP_WATER'water
setColor 30,100,245
drawRect x1,y1,tileWidth,tileHeight
setColor 70,150,245
drawWater = true
Case MAP_WATERBOULDER
setColor 30,100,245
drawRect x1,y1,tileWidth,tileHeight
setalpha 0.2
setcolor 50,50,50
drawoval x1,y1,width,height-2
setalpha 1
y1 :+ 5
height :- 5
setColor 140,80,60
drawOval x1+2, y1, Width-6, Height-7
setColor 170,100,70
drawOval x1+2, y1, Width-10, Height-7
setColor 70,150,245
drawWater = true
Case MAP_WATERFALL
setColor 0,50,150
drawRect x1,y1,tileWidth,tileHeight
setColor 0,00,100
drawRect x1,y4-5,tileWidth,5
local x2:int = x1+(tileWidth* 0.23)
local x3:int = x1+(tileWidth* 0.68)
local y2:int = y1+1
setColor 0,50,220
drawRect x3,y1,10,tileHeight
setColor 0,50,180
drawRect x2,y1,5,tileHeight
setColor 0,0,150
drawLine x2,y1,x3,y1
drawLine x1,y4,x2,y4
drawLine x3,y4,x4,y4
setColor 100,150,200
drawLine x1,y1,x2,y1
drawLine x3,y1,x4,y1
drawLine x2,y2,x3,y2
setColor 100,150,200
drawLine x1+10,y1,x1+10,y1+10
drawLine x1+6,y1,x1+6,y1+3
drawLine x1+20,y1,x1+20,y1+5
drawLine x1+26,y1,x1+26,y1+3
drawLine x1+15,y1+10,x1+15,y1+20
setColor 0,50,150
drawLine x1+8,y4,x1+8,y4-10
drawLine x1+17,y4,x1+17,y4-3
drawLine x1+23,y4,x1+23,y4-5
' setColor 50,130,215
' drawWater = true
Case MAP_DEEPWATER'deepwater
setColor 00,50,200
drawRect x1,y1,tileWidth,tileHeight
setColor 50,130,215
drawWater = true
Case MAP_DOOR ' door
setColor 120,50,20
drawRect x1,y1,tileWidth,tileHeight
setColor 100,60,30
local xx:int
local yy:int
for xx = x1 to x4 step 4
drawline xx,y1, xx, y4
next
setColor 210,120,70
drawRect x1,y1,tileWidth,5
setColor 100,60,30
drawFrame(x1,y1,tileWidth-1,tileHeight-1)
drawLine x1,y1+5,x4,y1+5
Case MAP_KEY' key
setColor 60,100,0
drawRect x1,y1,tileWidth,tileHeight
setColor 180,150,50
drawrect x1,y1+15,tileWidth, 5
drawrect x4-4,y1+15, 4,10
setColor 140,110,30
drawrect x1,y1+19,tileWidth, 1
setColor 200,170,50
drawrect x1,y1+16,tileWidth, 1
setColor 140,110,30
drawOval x1,y1+12,tileWidth*0.3, tileHeight*0.5
setColor 200,170,50
drawOval x1,y1+10,tileWidth*0.3, tileHeight*0.5
setColor 60,100,0
drawOval x1+3,y1+15,tileWidth*0.12, tileHeight*0.25
Case MAP_ROCK
setColor 60,100,0
drawRect x1,y1,Width,Height
setColor 50,50,50
drawOval x1, y4-4, Width-4, 4
drawOval x1, y1, Width-4, Height-4
setColor 70,70,70
drawOval x1, y1, Width-8, Height-4
setColor 80,80,80
drawOval x1, y1, Width*0.5, Height-10
Case MAP_BOULDER
setColor 60,100,0
drawRect x1,y1,Width,Height
setColor 50,80,50
drawOval x1, y4-4, Width-4, 4
y1 :+ 5
height :- 5
setColor 140,80,60
drawOval x1, y1, Width-4, Height-4
setColor 170,100,70
drawOval x1, y1, Width-8, Height-4
setColor 190,120,90
drawOval x1+3, y1+2, Width*0.5, Height-12
Case MAP_GOLD ' gold
setColor 60,100,0
drawRect x1,y1,Width,Height
setColor 140,100,30
drawOval x1, y4-10, Width*0.5, Height*0.3
drawOval x1+15, y4-10, Width*0.5, Height*0.3
setColor 230,200,0
drawOval x1, y4-13, Width*0.5, Height*0.3
drawOval x1+15, y4-13, Width*0.5, Height*0.3
setColor 140,100,30
drawOval x1+7, y4-17, Width*0.5, Height*0.3
setColor 230,200,0
drawOval x1+7, y4-20, Width*0.5, Height*0.3
End Select
if drawWater then
local y2:int = y1 + (Height * 0.1)
local x2:int = x1 + (Width * 0.3)
drawline x1,y2,x2,y2
y2 = y1 + (Height * 0.3)
x2 = x1 + (Width * 0.4)
local x3:int = x1 + (Width * 0.6)
drawline x2,y2,x3,y2
y2 = y1 + (Height * 0.6)
x2 = x1 + (Width * 0.7)
x3 = x1 + (Width * 0.9)
drawline x2,y2,x3,y2
y2 = y1 + (Height * 0.8)
x2 = x1 + (Width * 0.2)
x3 = x1 + (Width * 0.6)
drawline x2,y2,x3,y2
end if
end function
Function drawtile(x,y,t, xo:int = 0, yo:int = 0)
local x1:int = (x*tileWidth) + xo
local y1:int = (y*tileHeight) + yo
drawScreenTile(t, x1, y1, tileWidth, tileHeight)
End Function
function rectsOverlap:int(x1,y1,w1,h1, x2,y2,w2,h2)
w1 :+ x1
h1 :+ y1
w2 :+ x2
h2 :+ y2
if w1 < x2 then return false
if x1 > w2 then return false
if h1 < y2 then return false
if y1 > h2 then return false
return true
end function
function drawFrame(x:int, y:int, width:int, height:int)
drawline x,y, x+width,y
drawline x+width,y, x+width,y+height
drawline x+width,y+height, x, y+height
drawline x,y+height, x,y
end function
function mapEdit()
If mapEditMode = false then return
local x:int
local y:int
local x1:int
local y1:int
local width:int = windowWidth / 27
setColor 240,240,150
drawText "Select level from below",5,windowHeight-56
drawText "Select map position from below, then select level from the bottom",5,70
For x = 0 To totalLevels-1
x1 = (x*Width)
if x = ml[mcx,mcy] then
setcolor 255,0,0
drawrect x1,windowHeight-tileHeight-8, Width-1,tileHeight+8
end if
setColor 240,240,150
if mousex()>x1 and mousex()<x1+width and mousey() > windowHeight-32 then
setcolor ((sin(millisecs()*0.4)*0.5)+0.75)*255,0,0
if mousedown(1) then ml[mcx,mcy] = x
end if
drawFrame(x1,windowHeight-tileHeight, Width-1,tileHeight-1)
setColor 240,240,240
drawtext chr(65+x), x1+6,windowHeight-tileHeight+10
next
for y = 0 to yLevelMax-1
y1 = (y*60)+90
for x = 0 to xLevelMax-1
x1 = (x*60)+10
if mcx = x and mcy = y then
setColor 250,0,0
drawrect x1,y1, 59,59
end if
setColor 240,240,150
if mouseX() > x1 and mousey() > y1 and mousex() < x1+60 and mousey() < y1+60 then
setcolor ((sin(millisecs()*0.4)*0.5)+0.75)*255,0,0
if mouseDown(1) then
mcx = x
mcy = y
end if
end if
drawFrame(x1,y1, 59,59)
if ml[x, y] = -1 then
else
drawtext chr(65+ml[x,y]), x1+20,y1+20
end if
next
next
end function
Function edit()
If editmode = false then return
local x:int
local x1:int
local width:int = windowWidth / 27
drawmap(ml[mcx,mcy], msx,msy)
'draw top black bg
setColor 20,20,20
drawRect 0,0,GraphicsWidth(),36
'draw bottom black bg
drawRect 0,windowHeight-36,GraphicsWidth(),36
setColor 240,240,150
drawText "Select tile from above",5,tileHeight+10
drawText "Select level from below",5,windowHeight-56
For x = 0 To totalLevels-1
x1 = (x*Width)
if x = ml[mcx,mcy] then
setcolor 255,0,0
drawrect x1,windowHeight-tileHeight-8, Width-1,tileHeight+8
end if
setColor 240,240,150
if mousex()>x1 and mousex()<x1+width and mousey() > windowHeight-32 then
setcolor ((sin(millisecs()*0.4)*0.5)+0.75)*255,0,0
if mousedown(1) then ml[mcx,mcy] = x
end if
drawFrame(x1,windowHeight-tileHeight, Width-1,tileHeight-1)
setColor 240,240,240
drawtext chr(65+x), x1+6,windowHeight-tileHeight+10
next
For x = 0 To 29
x1 = (x*Width)
drawScreenTile(x, x1, 0, Width, tileHeight)
If RectsOverlap(MouseX(),MouseY(),1,1,x* Width,0,32,32)
setColor 128+sin(millisecs())*128,0,0
drawFrame x* Width,0,width-1,31
If MouseDown(1) = True
edittile = x
End If
End If
If edittile = x
setColor 255,0,0
drawFrame(x* Width,0,width-1,31)
drawRect x* Width,32,width,8
End If
Next
'draw the map cursor
If RectsOverlap(MouseX(),MouseY(),1,1, 0,32,GraphicsWidth(),GraphicsHeight()-64)
local x1:int = (MouseX()-msx)/tileWidth
local y1:int = (MouseY()-msy)/tileHeight
If MouseDown(1) = True then
if x1 > -1 and y1 > -1 then
map[ml[mcx,mcy], x1,y1] = edittile
end if
End If
drawtile(x1,y1,edittile, msx, msy)
setColor 255,0,0
drawFrame x1* tileWidth +msx,y1* tileHeight +msy,31,31
drawFrame x1* tileWidth +msx-1,y1* tileHeight +msy-1,33,33
End If
setalpha (sin(millisecs()*0.4)*0.5)+0.75
drawplayer()
setalpha 1
If KeyDown(KEY_RIGHT) ' right
msx = msx-3
EndIf
If KeyDown(KEY_LEFT)'left
msx = msx+3
End If
If KeyDown(KEY_UP)'up
msy = msy+3
End If
If KeyDown(KEY_DOWN)'down
msy = msy-3
End If
End Function
' here we check if the player is
' at a border and if he can go to another map
' and set the start positions
Function switchmap()
' touches the top part of the screen
If py < 5 And mcy>0
If ml[mcx,mcy-1] <> -1
mcy = mcy-1
py = windowHeight-tileHeight-5
msy=-(mapHeight*tileHeight-GraphicsHeight())
End If
End If
' touches the left side of the screen
If px<5 And mcx>0
If ml[mcx-1,mcy] <>-1
mcx = mcx - 1
px = windowWidth-5-pw
msx = -(mapWidth*tileWidth - GraphicsWidth())
End If
End If
' touches the right side of the screen
If px+pw>GraphicsWidth()-4 And mcx<2
If ml[mcx+1,mcy] <> -1
mcx=mcx+1
px = 5
msx=0
End If
End If
' touches the bottom of the screen
If py+ph>GraphicsHeight()-5 And mcy<2
If ml[mcx,mcy+1] <>-1
mcy=mcy+1
py = 5
msy=0
End If
End If
End Function
Function centermap()
If px<GraphicsWidth()/3 And Abs(msx)>0 Then
msx=msx+1
px=px+1
end if
If py<GraphicsHeight()/3 And Abs(msy)>0 Then
msy=msy+1
py=py+1
end if
If px>GraphicsWidth()/100*66
If (Abs(msx)+GraphicsWidth()) < mapWidth*tileWidth then
msx=msx-1
px=px-1
End If
End If
If py>GraphicsHeight()/100*66
If (Abs(msy)+GraphicsHeight()) < mapHeight*tileHeight then
msy=msy-1
py=py-1
End If
End If
End Function
Function moveplayer()
Local x:int = 0
Local y:int = 0
If KeyDown(KEY_UP) ' up
y = -1
End If
If KeyDown(KEY_RIGHT) ' right
x = 1
End If
If KeyDown(KEY_DOWN) ' down
y = 1
End If
If KeyDown(KEY_LEFT) ' left
x = -1
End If
If px+x < 0 Then x = 0
If px+pw+x > GraphicsWidth() Then x = 0
If py+y < 0 Then y = 0
If py+ph+y > GraphicsHeight() Then y = 0
local nx:int
local ny:int
local collide:int
if x <> 0 then
nx = (px + Abs(msx)) + x
ny = (py + Abs(msy))
collide = playermapcollision(nx, ny, x,0)
if collide = MAP_NONE then
px = px+x
else if collide = MAP_WATER and rand(0,100) < 40 then
px = px+x
End If
end if
if y <> 0 then
nx = (px + Abs(msx))
ny = (py + Abs(msy)) + y
collide = playermapcollision(nx, ny, 0,y)
if collide = MAP_NONE then
py = py+y
else if collide = MAP_WATER and rand(0,100) < 40 then
py = py+y
End If
end if
End Function
function getTileHit:int(mapTile:int)
if mapTile = MAP_WALL or mapTile = MAP_DEEPWATER or mapTile = MAP_TREE or mapTile = MAP_ROCK or mapTile = MAP_WATERFALL or..
mapTile = MAP_ROOF or mapTile = MAP_TREE2 or mapTile = MAP_FENCE or mapTile = MAP_CLIFF then
if ignoreWalls then
return MAP_NONE
else
return MAP_WALL
end if
end if
if mapTile = MAP_WATER or mapTile = MAP_GRASS or mapTile = MAP_LADDER then return MAP_WATER
if mapTile = MAP_BOULDER then return MAP_BOULDER
if mapTile = MAP_WATERBOULDER then return MAP_WATERBOULDER
return MAP_NONE
end function
function checkBoulder:int(cx:int, cy:int, x:int, y:int)
local static:int = false
local mapHit:int = getTileHit(map[ml[mcx,mcy], cx,cy])
local nextHit:int = getTileHit(map[ml[mcx,mcy], cx+x,cy+y])
if mapHit = MAP_BOULDER then
if map[ml[mcx,mcy], cx+x,cy+y] = MAP_HOLE then
map[ml[mcx,mcy], cx+x,cy+y] = MAP_FLOWERS
else if map[ml[mcx,mcy], cx+x,cy+y] = MAP_WATER then
map[ml[mcx,mcy], cx+x,cy+y] = MAP_WATERBOULDER
else if map[ml[mcx,mcy], cx+x,cy+y] = MAP_WATERBOULDER then
return true
else
map[ml[mcx,mcy], cx+x,cy+y] = MAP_BOULDER
end if
map[ml[mcx,mcy], cx,cy] = MAP_NONE
if nextHit <> MAP_NONE then
return true
end if
end if
return static
end function
function positionCollide:int(x:int, y:int, xdir:int,ydir:int)
Local cx:int = x/tileWidth
Local cy:int = y/tileHeight
if cx >= mapWidth or cy >= mapHeight then return
local mapTile:int = map[ml[mcx,mcy], cx,cy]
local mapHit:int = getTileHit(mapTile)
'deal with pushing a boulder - we also check if it has hit something or changed here too
if mapHit = MAP_BOULDER then
local static:int = true
if xdir < 0 then
if cx > 0 then
static = checkBoulder(cx, cy, -1, 0)
end if
else if xdir > 0 then
if cx < mapWidth-2 then
static = checkBoulder(cx, cy, 1, 0)
end if
end if
if ydir < 0 then
if cy > 0 then
static = checkBoulder(cx, cy, 0, -1)
end if
else if ydir > 0 then
if cy < mapHeight-2 then
static = checkBoulder(cx, cy, 0, 1)
end if
end if
if static then
return MAP_WALL
else
return MAP_NONE
end if
else if mapHit <> MAP_NONE then
return mapHit
end if
If mapTile = MAP_GOLD then
gold :+ 1
map[ml[mcx,mcy], cx,cy] = MAP_NONE
else if mapTile = MAP_DOOR then
If keys > 0 then
keys :- 1
map[ml[mcx,mcy], cx,cy] = MAP_NONE
else
return MAP_WALL
End If
else if mapTile = MAP_KEY then
keys :+ 1
totalkeys :- 1
map[ml[mcx,mcy], cx,cy] = MAP_NONE
end if
' no collision occured
Return MAP_NONE
end function
Function playermapcollision(x:int, y:int, xd:int, yd:int)
local c1:int = positionCollide(x, y, xd,yd)
local c2:int = positionCollide(x+26, y, xd,yd)
local c3:int = positionCollide(x+26, y+26, xd,yd)
local c4:int = positionCollide(x, y+26, xd,yd)
if c1 = MAP_WALL or c2 = MAP_WALL or c3 = MAP_WALL or c4 = MAP_WALL then return MAP_WALL
if c1 = MAP_WATER or c2 = MAP_WATER or c3 = MAP_WATER or c4 = MAP_WATER then return MAP_WATER
return MAP_NONE
End Function
'map 0
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,2,2,4,2,2,2,0,0,0,0,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,2,2,0,0,0,0,0,0,3,3,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
defdata 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
defdata 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,2,2,4,2,2,2,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1
defdata 0,0,0,0,0,0,0,2,2,2,2,2,4,4,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1
defdata 0,0,0,0,0,0,2,4,4,4,4,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1
defdata 0,0,0,0,0,2,4,4,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1
defdata 0,0,0,2,2,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,8,0,1,1,1,1,1,1,1
defdata 2,2,2,4,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,1,1,1,1,1,1,1
defdata 4,4,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,1,0,1,1,1,1,1
defdata 2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,1,1,1,1,1
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,1,0,1,1,1
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,1,1,1,0
defdata 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,3,3,0,0,0,1,1,0,0
defdata 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0
defdata 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0
defdata 0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0
defdata 0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,9,9,9,1,0,0,0,0,3,3,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0
defdata 0,0,0,1,0,0,0,9,9,1,0,0,0,0,1,9,9,9,1,0,0,0,0,3,3,3,0,0,0,0,3,3,3,3,3,0,0,0,0,0
defdata 0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 0,0,0,1,0,0,0,0,0,1,0,0,1,1,1,1,1,7,1,0,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0
defdata 0,0,0,1,0,0,0,0,0,7,0,0,7,0,0,0,0,0,1,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0
defdata 0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,8,2,2,4,4,2,2,0,0,0,0
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,2,0,2,0,0,0,0
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,2,2,2,2,2,0,0,0,0
'map 1
defdata 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1
defdata 3,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1
defdata 3,3,1,0,9,9,1,0,0,0,3,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1
defdata 3,3,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1
defdata 3,0,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
defdata 3,0,1,1,7,1,0,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
defdata 0,0,0,0,0,0,0,0,0,0,2,2,2,4,4,2,2,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1
defdata 0,1,0,0,0,0,0,0,0,2,2,4,2,2,2,2,2,0,0,0,2,2,2,2,0,0,0,0,3,0,0,0,0,0,0,1,1,1,1,1
defdata 1,1,1,0,0,0,0,0,2,2,4,2,2,0,0,0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0
defdata 0,1,0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 0,0,0,0,0,2,4,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 0,1,0,0,0,2,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 1,1,1,0,0,2,2,4,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,2,2,2,2,2,0,0,0,0,0,3,3,3,0,0,0
defdata 0,1,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,4,2,2,2,2,0,0,0,0,0,0,3,3,0,0
defdata 0,0,0,2,4,4,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,4,2,0,2,0,0,0,0,0,0,3,0,0
defdata 0,0,0,2,4,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,4,4,4,4,2,2,2,0,0,0,0,0,0,0,0
defdata 0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,4,2,2,2,0,2,0,0,0,0,0,0,0,0
defdata 0,2,2,2,2,8,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0
defdata 2,2,2,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0
defdata 2,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0
defdata 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
defdata 0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,1,1
defdata 0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,1,1,1,1,1
defdata 0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1
'map 2
defdata 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
defdata 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
defdata 3,3,3,3,3,3,0,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,3,3,3
defdata 3,3,3,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,3,3,3,0,3,3,3,0,3,3,0,0,0,0,0,0,0,3,3,3
defdata 3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,3,3,3
defdata 3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,3,3
defdata 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,4,4,4,2,0,3,3,3
defdata 3,8,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,0,3,3,3
defdata 3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,3
defdata 3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 1,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,3,3
defdata 1,1,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,3,3
defdata 1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,3,3
defdata 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 0,0,1,0,0,0,0,0,0,0,0,0,0,1,7,1,1,1,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,1,9,9,9,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,0,0,0,0,0,3
defdata 0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0,0,0,0,3
defdata 0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3
defdata 0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 3,3,3,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3
defdata 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
'.level4
defdata 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3
defdata 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3
defdata 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3
defdata 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
defdata 3,0,0,1,1,1,7,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3
defdata 3,0,0,1,9,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 3,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,7,1,1,1,1,0,0,3
defdata 3,0,0,1,0,0,0,0,0,0,0,9,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,9,1,0,0,3
defdata 3,0,0,1,0,0,0,1,1,1,1,1,1,7,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,9,1,0,0,3
defdata 3,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,3
defdata 3,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,3
defdata 3,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,7,1,1,1,1,0,0,3
defdata 3,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 3,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3
defdata 3,0,0,7,0,0,1,1,1,1,0,0,0,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3
defdata 3,0,0,1,0,0,1,0,0,0,0,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3
defdata 3,0,0,1,0,9,1,0,0,0,3,3,3,3,3,3,3,8,0,0,0,3,3,3,0,3,0,0,0,0,0,0,3,3,3,3,3,3,3,3
defdata 3,0,0,1,1,1,1,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,3,3,8,3,3,3,3,3
defdata 3,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,3,3,3,3,3
defdata 3,0,0,0,0,0,0,0,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,3,3,3,3,3
defdata 3,0,0,0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,0,0,0,0,0,0,0,0,3,0,3,3
defdata 3,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3
defdata 3,3,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3
defdata 3,3,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3
defdata 3,3,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3
defdata 3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3
defdata 3,3,3,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,2
defdata 3,3,3,0,0,0,0,0,2,2,2,2,2,2,0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
defdata 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
'.level5
defdata 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0
defdata 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0
defdata 3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0
defdata 3,3,3,3,0,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,3,3,3,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0
defdata 3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0
defdata 3,3,3,3,3,3,0,3,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0
defdata 3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,0,3,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,3,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,0,0,0,0,1,1,1,0,0,0,0,0,3,0,0,0,0,7,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,0,0,0,0,7,0,1,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,0,0,0,0,1,9,1,0,0,0,0,3,0,0,0,0,0,1,0,0,0,0,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,1,9,9,8,8,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0
defdata 2,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 2,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 2,2,3,3,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
defdata 2,2,2,3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0,0
defdata 2,2,2,3,3,3,0,2,2,2,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0
defdata 2,2,2,3,3,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,3,3,3,0,0,0,0,0,0,0,0,0,0
defdata 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,0,0,3,3,0,0,3,3,3,3,0,0,0,0,0,0,0,0
defdata 2,2,4,4,4,4,4,4,2,2,2,2,2,2,4,4,4,2,2,2,2,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0
defdata 2,0,2,4,4,4,4,2,4,4,4,4,4,4,4,4,4,4,4,4,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0
defdata 2,2,4,4,4,4,4,4,4,4,2,2,4,4,4,4,4,4,4,4,4,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3
defdata 2,2,4,4,4,4,4,4,4,2,2,2,2,2,4,4,4,4,4,4,4,4,4,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 |
Comments
None.
Code Archives Forum