I converted it to 4.0 and pasted it below. On my dual core system, I get about 1 or 2 under CPU usage. You may need to adjust the framerate setting to your own needs or remove it.
Hint with this game, if you want to test usage and such, if you immediately move the bee to the upper-right hand corner, it should put the ladybug in a looped movement, so you can check CPU usage and such and not have to worry about the ladybug killing you.
Code: Select all
;==============================================
;= LADY'S GARDEN ©2001 Reel Media Productions =
;= programmed by Paul Leischow Sept.15 /2001 =
;==============================================
;= MODIFIED BY KAISER TO SHOW A MENU EXAMPLE =
;= =
;= I've added the Handle_Menu sub-routine to =
;= show how can you handle window events in =
;= the way you would do with any window. =
;= =
;= I added the sub-routine in every loop that =
;= needed a FlipBuffers(), because here were =
;= so many, but it can be used at the main =
;= loop so you won't have problems. =
;= =
;= Converted to PB 4.0 by Brice Manuel
;==============================================
;If InitSprite(99) = 0 Or InitKeyboard() = 0 | Removed due that it has no parameters now.
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 or later", 0)
End
EndIf
;If InitSound(10) = 0 | Removed due that it has no parameters now.
If InitSound() = 0
MessageRequester("Error", "Can't open DirectX 7 Or Sound Card is not present", 0)
End
EndIf
;========SYSTEM SPECS ARE OK
Procedure text(txtx.l,txty.l,txt.s) ;x/y screen coordinates are send along with a text string
For tmp=1 To Len(txt) ;loop for the length of the string
txtasc=Asc(Mid(txt,tmp,1)) ;get the ASCII value of each character in the string
If txtasc<>32 ;if its not a space, display the sprite on the screen
DisplayTransparentSprite(txtasc+5,txtx,txty)
EndIf
txtx=txtx+16 ;move the width of the sprite so we can display the next one
Next
txty=txty+25 ;move down to the next line
EndProcedure
Structure ladybug ;create a structure to hold all Lady's info
lpx.w ;x position of Lady
lpy.w ;y position of Lady
lpxpos.w ;x position in the lookup table
lpypos.w ;y position in the lookup table
ldir.w ;direction Lady is moving
lmove.w ;counter for movement to next tile
lx.w ;x speed of Lady
ly.w ;y speed of Lady
EndStructure
;ADDED BY KAISER
;===========================================
Global DoQuit
;===========================================
Global txtx.l ;x position of text
Global txty.l ;y position of text
Global txt.s ;string that hold text
#mazewidth=12 ;width of maze (12 tiles)
#mazeheight=13 ;hight of maze (13 tiles)
level=1 ;current game level
bugs=1 ;number of Lady bugs in the maze
frmbee=0 ;what frame of Bee to display
score.l=0 ;current score
Global Dim lady.ladybug(4) ;set up 4 Lady bugs
Global Dim maze(#mazewidth,#mazeheight) ;set up an array to hold maze tiles
Global Dim track(#mazewidth,#mazeheight) ;set up an array to hold Lady movement data
OpenWindow(100,0,0,640,480,"Lady's Garden",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If OpenWindowedScreen(WindowID(100),0,0,640,480,0,0,0)
;If OpenScreen(640,480,16,"Lady's Garden") ;open a 640x480 graphic window | We don't need this, it's gonna be windowed.
;=============================
;Add menus (By Kaiser)
;=============================
CreateMenu(1,WindowID(100))
MenuTitle("Game")
MenuItem(1,"New Game")
MenuItem(2,"Load Game")
MenuItem(3,"Save Game")
MenuItem(4,"About")
MenuBar()
MenuItem(5,"Exit")
;=============================
;=============================
LoadSprite(1,"data\bush1.bmp",0) ;load all the game sprites
LoadSprite(2,"data\bush2.bmp",0)
LoadSprite(3,"data\black.bmp",0)
LoadSprite(4,"data\clear.bmp",0)
LoadSprite(5,"data\flower.bmp",0)
LoadSprite(6,"data\ladyl.bmp",0)
LoadSprite(7,"data\ladyr.bmp",0)
LoadSprite(8,"data\ladyu.bmp",0)
LoadSprite(9,"data\ladyd.bmp",0)
LoadSprite(10,"data\level.bmp",0)
LoadSprite(11,"data\over.bmp",0)
LoadSprite(12,"data\diz1.bmp",0)
LoadSprite(13,"data\diz2.bmp",0)
LoadSprite(14,"data\diz3.bmp",0)
For tmp=20 To 59
LoadSprite(tmp,"data\bee"+Str(tmp)+".bmp",0) ;load all the Bee sprites
Next
For tmp=60 To 69
LoadSprite(tmp,"data\num"+Str(tmp)+".bmp",0) ;load all the number sprites for score
Next
For tmp=70 To 95
LoadSprite(tmp,"data\a"+Str(tmp)+".bmp",0) ;load all the alphabet sprites for text
Next
LoadSound(1,"data\blip.wav") ;load all the sound effects
LoadSound(2,"data\catch.wav")
LoadSound(3,"data\level.wav")
LoadSound(4,"data\intro.wav")
;===========================MAINLOOP
mainloop:
Gosub init_data ;initialize game data / all starting positions
Gosub load_maze ;load the first maze
Gosub load_data ;load the first movement table
If level=1 And bugs=1 ;if we're on level 1 and there is 1 Lady bug
hold=0
While hold=0 ;display instructions until space is pressed
Gosub Handle_Menu
DisplaySprite(4,0,0)
text(80,90,"GUIDE BUMBLE THROUGH")
text(80,115,"THE HEDGE MAZE AND")
text(80,140,"PICK ALL THE FLOWERS")
text(80,215,"IF LADY CATCHES YOU")
text(80,240,"ITS GAME OVER")
text(130,350,"PRESS SPACEBAR")
frmbee=frmbee+1
If frmbee>9:frmbee=0:EndIf ;cycle through all 9 frames of Bee flying
DisplayTransparentSprite(frmbee+50,30,90) ;display Bee sprite
DisplayTransparentSprite(8,30,220) ;display Lady sprite
FlipBuffers() ;Flip screen buffer into view
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Space) Or KeyboardPushed(#PB_Key_Escape):hold=1:EndIf
Wend
EndIf
;PlaySound(4) ;play starting tune
SetFrameRate(60) ; Change this or rem it out
While quit=0
Gosub Handle_Menu
If flower=0:quit=1:EndIf ;loop until all flowers have been collected
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape):Gosub draw_credits:End:EndIf ;if ESC is pressed show credits and end
If KeyboardPushed(#PB_Key_Left):mm=1:EndIf ;check for left/right/up/down arrows keys
If KeyboardPushed(#PB_Key_Right):mm=2:EndIf
If KeyboardPushed(#PB_Key_Up):mm=3:EndIf
If KeyboardPushed(#PB_Key_Down):mm=4:EndIf
Select mm
Case 1
If mve=0 And maze(cpxpos-1,cpypos)>2 ;move Bee according to the direction you've selected
cx=-2:cy=0:cpdir=1:cpxpos=cpxpos-1:mve=32
Gosub check_flower ;check if you've plucked any flowers along the way
EndIf
Case 2
If mve=0 And maze(cpxpos+1,cpypos)>2
cx=2:cy=0:cpdir=3:cpxpos=cpxpos+1:mve=32
Gosub check_flower
EndIf
Case 3
If mve=0 And maze(cpxpos,cpypos-1)>2
cx=0:cy=-2:cpdir=2:cpypos=cpypos-1:mve=32
Gosub check_flower
EndIf
Case 4
If mve=0 And maze(cpxpos,cpypos+1)>2
cx=0:cy=2:cpdir=4:cpypos=cpypos+1:mve=32
Gosub check_flower
EndIf
EndSelect
If mve<>0:cpx=cpx+cx:cpy=cpy+cy:mve=mve-2:EndIf
Gosub move_lady ;Ladybug movement routine and AI
Gosub draw_board ;draw the maze on the screen
Gosub draw_bugs ;draw the Lady bugs on the screen
Gosub set_score ;draw the score on the screen
If quit>0
If quit=1 ;if quit=1 then we've finished the level
tmpy=480 ;place the 'level' sign at the bottom of screen
;PlaySound(3)
For nextlevel=0 To 190
Gosub Handle_Menu
Gosub draw_board ;draw the maze on the screen
Gosub set_score ;draw the score on the screen
DisplaySprite(10,134,tmpy) ;draw the 'level complete' sign
FlipBuffers() ;flip screen buffer into view
tmpy=tmpy-3 ;move the sign up 3 pixels
Next
EndIf
If quit=2:PlaySound(2):EndIf ;if quit=2 then Lady gottcha / play gottcha sound
EndIf
; WaitWindowEvent()
Delay(16) ; 16 gives the best results
FlipBuffers() ;flip screen buffer into view
Wend
Else
MessageRequester("Error","Could Not Initialize 640x480x16 Display",0)
End
EndIf
If quit=2 ;Lady gottcha
diz=0 ;current frame of dizzy bee
Restore level1 ;reset the maze data to load level 1
For hold=1 To 400 ;hold this screen till we count to 400
Gosub Handle_Menu
Gosub draw_board ;draw the maze on the screen
Gosub set_score ;draw the score on the screen
Gosub draw_diz ;draw the dizzy bee on the screen
DisplaySprite(11,134,110) ;draw the game over sign
Delay(50) ;small delay so bee doesn't flap to fast
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Space):hold=400:Delay(500):EndIf ;press space to start again
If KeyboardPushed(#PB_Key_Escape):Gosub draw_credits:End:EndIf ;press ESC to display credits and end
FlipBuffers() ;flip screen buffer into view
Next
level=0 ;reset all data
bugs=0
score=0
EndIf
level=level+1 ;advance level
bugs=bugs+1 ;add another Lady bug to screen
If bugs>4:bugs=4:EndIf ;if we have 4 Lady bugs, then that's enough
If level>4:level=1:Restore level1:EndIf ;if we've finished level 4 then start over again at level 1
Goto mainloop
;=============SPECIAL ROUTINES
init_data:
cpx=32*2 ;position Bee on the screen
cpy=32*2 ;tiles are 32x32 so we need to multiply maze data by 32
cpxpos=2 ;position Bee in the maze array
cpypos=2
cpdir=1
cpmve=0
cx=0
cy=0
quit=0
mve=0
mm=0
For tmp=1 To 4 ;reset data for all 4 Lady bugs
lady(tmp)\ldir=4
lady(tmp)\lmove=0
lady(tmp)\lx=0
lady(tmp)\ly=0
Next
lady(1)\lpx=32*11 ;place all 4 Lady bugs in their starting positions
lady(1)\lpy=32*12
lady(1)\lpxpos=11
lady(1)\lpypos=12
lady(2)\lpx=32*11
lady(2)\lpy=32*6
lady(2)\lpxpos=11
lady(2)\lpypos=6
lady(3)\lpx=32*11
lady(3)\lpy=32*8
lady(3)\lpxpos=11
lady(3)\lpypos=8
lady(4)\lpx=32*11
lady(4)\lpy=32*4
lady(4)\lpxpos=11
lady(4)\lpypos=4
Return
load_maze:
For y=1 To #mazeheight ;load the maze tile data into an array
For x=1 To #mazewidth
Read maze(x,y)
Next
Next
Read flower ;see how many flowers we need to pluck
Return
load_data:
For y=1 To #mazeheight ;load Lady's movement lookup table into an array
For x=1 To #mazewidth
Read track(x,y)
Next
Next
Return
check_flower:
If maze(cpxpos,cpypos)=5 ;if we've reached a flower (5)
maze(cpxpos,cpypos)=3 ;then change it to a blank (3)
flower=flower-1 ;decrement flower counter by 1
score=score+5 ;increment score by 5 points
;PlaySound(1) ;play the flower plucking sound
EndIf
Return
set_score:
tempscore$=Str(score)
If Len(tempscore$)=1:newscore$="0000"+tempscore$:EndIf ;place leading zeros in the score
If Len(tempscore$)=2:newscore$="000"+tempscore$:EndIf
If Len(tempscore$)=3:newscore$="00"+tempscore$:EndIf
If Len(tempscore$)=4:newscore$="0"+tempscore$:EndIf
If Len(tempscore$)=5:newscore$=tempscore$:EndIf
xscore=448 ;x position to start drawing score
For tmp=1 To Len(newscore$) ;break apart score 1 character at a time
DisplayTransparentSprite(Val(Mid(newscore$,tmp,1))+60,xscore,200) ;and display correct sprite
xscore=xscore+30 ;move right to draw next character
Next
Return
move_lady:
For bug=1 To bugs ;for an explaination of how this all works
lbx.l=lady(bug)\lpxpos ;check out Paul Gerfen's tutorial at
lby.l=lady(bug)\lpypos ;www.openrpgs.com/articles/showarticle.php?article=2001/apr/pacman
check.l=track(lbx,lby)
If lady(bug)\lmove=0
Select check
Case 1:If lady(bug)\ldir=2:lady(bug)\ldir=3:Else:lady(bug)\ldir=4:EndIf
Case 2:If lady(bug)\ldir=3:lady(bug)\ldir=4:Else:lady(bug)\ldir=1:EndIf
Case 3:If lady(bug)\ldir=4:lady(bug)\ldir=1:Else:lady(bug)\ldir=2:EndIf
Case 4:If lady(bug)\ldir=1:lady(bug)\ldir=2:Else:lady(bug)\ldir=3:EndIf
EndSelect
EndIf
If lady(bug)\lmove=0 And check=5
Select lady(bug)\ldir
Case 3:If cpypos<lady(bug)\lpypos:lady(bug)\ldir=2:Else:lady(bug)\ldir=4:EndIf
Case 2:If cpxpos<lady(bug)\lpxpos:lady(bug)\ldir=1:Else:lady(bug)\ldir=2:EndIf
Case 4:If cpypos>lady(bug)\lpypos:lady(bug)\ldir=4:Else:lady(bug)\ldir=1:EndIf
EndSelect
EndIf
If lady(bug)\lmove=0 And check=6
Select lady(bug)\ldir
Case 4:If cpxpos<lady(bug)\lpxpos:lady(bug)\ldir=1:Else:lady(bug)\ldir=3:EndIf
Case 3:If cpypos<lady(bug)\lpypos:lady(bug)\ldir=2:Else:lady(bug)\ldir=3:EndIf
Case 1:If cpxpos<lady(bug)\lpxpos:lady(bug)\ldir=1:Else:lady(bug)\ldir=2:EndIf
EndSelect
EndIf
If lady(bug)\lmove=0 And check=7
Select lady(bug)\ldir
Case 4:If cpxpos>lady(bug)\lpxpos:lady(bug)\ldir=3:Else:lady(bug)\ldir=4:EndIf
Case 1:If cpypos<lady(bug)\lpypos:lady(bug)\ldir=2:Else:lady(bug)\ldir=4:EndIf
Case 2:If cpypos<lady(bug)\lpypos:lady(bug)\ldir=2:Else:lady(bug)\ldir=3:EndIf
EndSelect
EndIf
If lady(bug)\lmove=0 And check=8
Select lady(bug)\ldir
Case 2:If cpxpos>lady(bug)\lpxpos:lady(bug)\ldir=3:Else:lady(bug)\ldir=1:EndIf
Case 3:If cpypos>lady(bug)\lpypos:lady(bug)\ldir=4:Else:lady(bug)\ldir=3:EndIf
Case 1:If cpypos>lady(bug)\lpypos:lady(bug)\ldir=4:Else:lady(bug)\ldir=1:EndIf
EndSelect
EndIf
Select lady(bug)\ldir
Case 1:lady(bug)\lx=-1:lady(bug)\ly=0
Case 2:lady(bug)\lx=0:lady(bug)\ly=-1
Case 3:lady(bug)\lx=1:lady(bug)\ly=0
Case 4:lady(bug)\lx=0:lady(bug)\ly=1
EndSelect
If lady(bug)\lmove=0
lady(bug)\lpxpos=lady(bug)\lpxpos+lady(bug)\lx
lady(bug)\lpypos=lady(bug)\lpypos+lady(bug)\ly
lady(bug)\lmove=32
EndIf
If lady(bug)\lmove<>0
lady(bug)\lpx=lady(bug)\lpx+lady(bug)\lx
lady(bug)\lpy=lady(bug)\lpy+lady(bug)\ly
lady(bug)\lmove=lady(bug)\lmove-1
EndIf
If cpxpos=lady(bug)\lpxpos And cpypos=lady(bug)\lpypos:quit=2:EndIf
Next
Return
draw_board:
DisplaySprite(4,0,0) ;draw background to clear the screen
For y=1 To 13
For x=1 To 12
bl=maze(x,y)
DisplaySprite(bl,x*32,y*32) ;display the maze tiles on the screen
Next
Next
Return
draw_bugs: ;draw Lady bug depending on the direction she's moving
For bug=1 To bugs
If lady(bug)\lx=-1:DisplayTransparentSprite(6,lady(bug)\lpx,lady(bug)\lpy):EndIf
If lady(bug)\lx=1:DisplayTransparentSprite(7,lady(bug)\lpx,lady(bug)\lpy):EndIf
If lady(bug)\ly=-1:DisplayTransparentSprite(8,lady(bug)\lpx,lady(bug)\lpy):EndIf
If lady(bug)\ly=1:DisplayTransparentSprite(9,lady(bug)\lpx,lady(bug)\lpy):EndIf
Next
frmbee=frmbee+1 ;draw Bee depending on the direction he's moving
If frmbee>9:frmbee=0:EndIf
If mm=1:DisplayTransparentSprite(frmbee+30,cpx,cpy):EndIf
If mm=2:DisplayTransparentSprite(frmbee+40,cpx,cpy):EndIf
If mm=3:DisplayTransparentSprite(frmbee+50,cpx,cpy):EndIf
If mm=4 Or mm=0:DisplayTransparentSprite(frmbee+20,cpx,cpy):EndIf
Return
draw_diz: ;draw dizzy bee looping through all 3 frames
diz=diz+1
If diz>3:diz=1:EndIf
DisplayTransparentSprite(11+diz,cpx-16,cpy-16)
Return
draw_credits: ;draw final credits on the screen
For tmp=0 To 480 ;have bee fly from top to bottom
Gosub Handle_Menu
DisplaySprite(4,0,0)
text(40,45,"PROGRAMMER")
text(40,70,"PAUL LEISCHOW")
text(40,120,"GRAPHICS")
text(40,145,"PAUL LEISCHOW")
text(40,195,"AUDIO")
text(40,220,"PETE ZILINSKI")
text(40,270,"THANKS TO")
text(40,295,"PAUL GERFEN")
text(40,320,"FRED LABOUREUR")
text(40,370,"COPYRIGHT")
text(40,395,"REEL MEDIA PRODUCTIONS")
frmbee=frmbee+1
If frmbee>9:frmbee=0:EndIf ;loop through the 9 frames while he flys
DisplayTransparentSprite(frmbee+20,15,tmp) ;(looks like he's flapping)
FlipBuffers() ;flip screen buffer into view so we can see it
Next
Return
Handle_Menu:
Event=WindowEvent()
If Event=#PB_Event_Menu
If EventMenu()=1
MessageRequester("Lady's Garden","New game")
EndIf
If EventMenu()=2
MessageRequester("Lady's Garden","Load Game")
EndIf
If EventMenu()=3
MessageRequester("Lady's Garden","Save Game")
EndIf
If EventMenu()=4
MessageRequester("Lady's Garden","PureBASIC Example by Paul Leischow. Adapted to Windowed mode + a sample menu by: Kaiser")
EndIf
If EventMenu()=5 ; Quit
If quit<>2 : PlaySound(4) : EndIf
Gosub draw_credits:End
EndIf
EndIf
Return
DataSection ;maze data and movement data for Lady
level1: ;each level has 2 sets of maze data
Data.l 1,1,1,1,1,1,1,1,1,1,1,1
Data.l 1,3,5,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,2,5,1,1,5,2,2,5,1 ;1 = bush1
Data.l 1,5,2,5,5,5,5,5,5,2,5,1 ;2 = bush2
Data.l 1,5,2,5,2,2,2,2,5,2,5,1 ;3 = no flower (space)
Data.l 1,5,5,5,5,5,5,5,5,5,5,1 ;5 = flower
Data.l 1,5,1,1,5,1,1,5,1,1,1,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,5,2,2,2,2,5,2,5,1
Data.l 1,5,2,5,5,5,5,5,5,2,5,1
Data.l 1,5,2,2,5,1,1,5,2,2,5,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,1,1,1,1,1,1,1,1,1,1,1
Data.l 74 ;number of flowers to collect
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,1,0,0,8,0,0,8,0,0,2,0 ;movement data for Lady
Data.l 0,0,0,0,0,0,0,0,0,0,0,0 ;0 = no movement decision to be made
Data.l 0,0,0,1,6,0,0,6,2,0,0,0 ;1 = lady can move down or right
Data.l 0,0,0,0,0,0,0,0,0,0,0,0 ;2 = lady can move down or left
Data.l 0,7,0,6,8,0,0,8,6,0,3,0 ;3 = lady can move up or left
Data.l 0,0,0,0,0,0,0,0,0,0,0,0 ;4 = lady can move up or right
Data.l 0,7,0,8,6,0,0,6,8,0,2,0 ;5 = lady can move left or up or down
Data.l 0,0,0,0,0,0,0,0,0,0,0,0 ;6 = lady can move up or left or right
Data.l 0,0,0,4,8,0,0,8,3,0,0,0 ;7 = lady can move right or up or down
Data.l 0,0,0,0,0,0,0,0,0,0,0,0 ;8 = lady can move down or left or right
Data.l 0,4,0,0,6,0,0,6,0,0,3,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
;level 2
Data.l 1,1,1,1,1,1,1,1,1,1,1,1
Data.l 1,3,5,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,5,1,1,1,1,5,2,5,1
Data.l 1,5,2,5,5,5,5,5,5,2,5,1
Data.l 1,5,2,2,2,2,2,2,5,2,5,1
Data.l 1,5,5,5,5,5,5,2,5,5,5,1
Data.l 1,1,1,5,2,5,5,2,5,1,1,1
Data.l 1,5,5,5,2,5,5,5,5,5,5,1
Data.l 1,5,2,5,2,2,2,2,2,2,5,1
Data.l 1,5,2,5,5,5,5,5,5,2,5,1
Data.l 1,5,2,5,1,1,1,1,5,2,5,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,1,1,1,1,1,1,1,1,1,1,1
Data.l 71
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,1,0,8,0,0,0,0,8,0,2,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,0,0,4,0,0,0,0,5,0,0,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,4,0,8,0,8,2,0,7,0,3,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,1,0,5,0,4,6,0,6,0,2,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,0,0,7,0,0,0,0,2,0,0,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,4,0,6,0,0,0,0,6,0,3,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
;level 3
Data.l 1,1,1,1,1,3,3,1,1,1,1,1
Data.l 1,3,5,5,1,3,3,1,5,5,5,1
Data.l 1,5,2,5,1,1,1,1,5,2,5,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,2,2,2,5,1,1,1,1,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,2,5,2,2,2,5,2,5,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,1,1,1,1,5,2,2,2,2,5,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,5,1,1,1,1,5,2,5,1
Data.l 1,5,5,5,1,3,3,1,5,5,5,1
Data.l 1,1,1,1,1,3,3,1,1,1,1,1
Data.l 67
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,1,0,2,0,0,0,0,1,0,2,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,7,0,6,0,0,8,0,6,0,3,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,7,0,0,8,0,6,0,8,0,2,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,4,0,0,6,8,0,0,6,0,5,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,1,0,8,0,6,0,0,8,0,5,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,4,0,3,0,0,0,0,4,0,3,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
;level 4
Data.l 1,1,1,1,1,1,1,1,1,1,1,1
Data.l 1,3,5,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,5,2,2,2,2,2,2,5,1
Data.l 1,5,2,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,5,1,5,1,1,5,2,5,1
Data.l 1,5,2,5,1,5,5,1,5,5,5,1
Data.l 1,5,5,5,1,1,5,5,5,2,5,1
Data.l 1,5,2,5,1,5,5,1,5,5,5,1
Data.l 1,5,2,5,1,5,1,1,5,2,5,1
Data.l 1,5,2,5,5,5,5,5,5,5,5,1
Data.l 1,5,2,5,2,2,2,2,2,2,5,1
Data.l 1,5,5,5,5,5,5,5,5,5,5,1
Data.l 1,1,1,1,1,1,1,1,1,1,1,1
Data.l 74
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,1,0,8,0,0,0,0,0,0,2,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,0,0,7,0,8,0,0,8,0,5,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,0,0,0,0,4,2,0,7,0,5,0
Data.l 0,7,0,5,0,0,7,0,5,0,0,0
Data.l 0,0,0,0,0,1,3,0,7,0,5,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,0,0,7,0,6,0,0,6,0,5,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
Data.l 0,4,0,6,0,0,0,0,0,0,3,0
Data.l 0,0,0,0,0,0,0,0,0,0,0,0
EndDataSection