home *** CD-ROM | disk | FTP | other *** search
/ GameStar Special 2004 August / GSSH0804.iso / Geschicklichkeit / Enigma / Enigma-081.exe / data / levels / natmaze3.lua < prev    next >
Text File  |  2003-01-05  |  1KB  |  55 lines

  1. -- Gopher It
  2. -- A level for Enigma
  3. -- Copyright (c) 2002 Nat Pryce
  4. -- License: GPL v2.0 or above
  5.  
  6. dofile( enigma.FindDataFile("levels/natmaze.lua") )
  7.  
  8. originx = 1
  9. originy = 1
  10.  
  11. function cell_to_level( cellx, celly )
  12.     return %originx + cellx * 2, %originy + celly * 2
  13. end
  14.  
  15. function render_cell( maze, cellx, celly )
  16.     x,y = cell_to_level( cellx, celly )
  17.         
  18.     set_stone( "st-marble", x+1, y+1 )
  19.     
  20.     if not maze:can_go_south(cellx,celly) then
  21.         set_stone( "st-marble", x, y+1 )
  22.     elseif random() < 0.025 then
  23.         set_stone( "st-marble_hole", x, y+1 )
  24.     end
  25.     
  26.     if not maze:can_go_east(cellx,celly) then
  27.         set_stone( "st-marble", x+1, y )
  28.     elseif random() < 0.025 then
  29.         set_stone( "st-marble_hole", x+1, y )
  30.     end
  31. end
  32.  
  33.  
  34. do
  35.     local maze = new_kruskal_maze(38,24)
  36.     
  37.     create_world( maze.width*2 + 2, maze.height*2 + 2 )
  38.     draw_border( "st-marble" )
  39.     fill_floor( "fl-rough", 0, 0, level_width, level_height )
  40.     render_maze( maze, render_cell )
  41.     
  42.     oxyd(1,0)
  43.     oxyd(2*maze.width-1,2*maze.height)
  44.     oxyd(1,2*maze.height)
  45.     oxyd(2*maze.width-1,0)
  46.     oxyd_shuffle()
  47.     
  48.     local actorx, actory = cell_to_level( random(maze.width)-1, 
  49.                                           random(maze.height)-1 )
  50.     set_actor( "ac-blackball", actorx + 0.5, actory + 0.5,
  51.                { player=0 } )
  52. end
  53. display.SetFollowMode(display.FOLLOW_SCROLLING)
  54.  
  55.