Advertisement
xerpi

Untitled

Apr 17th, 2011
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.03 KB | None | 0 0
  1. dofile("niveles.lua")
  2.  
  3. empty = image.load("imagenes/empty.png")
  4. azul = image.load("imagenes/azul.png")
  5. sonido={}
  6. jugador = {img=image.load("imagenes/player.png"),posx=0,posy=0}
  7. size=30  --tamaño de los bloques
  8. cnv = 1 --nivel actual
  9. middlex = 480/2
  10. middley = 272/2
  11. tiles=0 --tiles que faltan
  12. posjugador = true
  13. moved = 0 --veces movidas
  14.  
  15. --sonido.mover=sound.load("sonidos/mover.mp3")
  16.  
  17.  
  18.  
  19. function cargar()
  20. moved=0
  21. tiles=0
  22. map=nil
  23. nivelactual=nil
  24. jugador.posx=0
  25. jugador.posy=0
  26. map={img = image.create(size*#nivel[cnv][1],size*#nivel[cnv]),x=middlex-(#nivel[cnv][1]*size)/2,y=middley-(#nivel[cnv]*size)/2}
  27. nivelactual={}
  28.  
  29. for q=1,#nivel[cnv] do
  30.     table.insert(nivelactual,q,{})
  31.     for t=1,#nivel[cnv][q] do
  32.         table.insert(nivelactual[q],t,{})
  33.     end
  34. end
  35.  
  36. for y = 1, #nivel[cnv] do
  37.   for x = 1, #nivel[cnv][y] do
  38.     if nivel[cnv][y][x] == "e" then
  39.         map.img:blit((x-1)*30,(y-1)*30,empty)
  40.         nivelactual[y][x]= "e"     
  41.     elseif nivel[cnv][y][x] == "a" then
  42.         map.img:blit((x-1)*30,(y-1)*30,empty)  
  43.         nivelactual[y][x]= "a"
  44.         tiles = tiles+1
  45.     elseif nivel[cnv][y][x] == "p" then
  46.         map.img:blit((x-1)*30,(y-1)*30,empty)  
  47.         nivelactual[y][x]= "a"
  48.         jugador.posx=x
  49.         jugador.posy=y
  50.         tiles = tiles+1    
  51.     end
  52.  end
  53. end
  54.  
  55. end
  56.  
  57. function mover(dir,n)
  58. local originalx = jugador.posx
  59. local originaly = jugador.posy
  60.  
  61. if dir == "down" then
  62.     originaly=originaly+(1*n)
  63.     jugador.posy=jugador.posy+0.5
  64.     jugador.posx=jugador.posx+0.5
  65. elseif dir == "up" then
  66.     originaly=originaly-1*n
  67.     jugador.posy=jugador.posy+0.5
  68.     jugador.posx=jugador.posx+0.5
  69. elseif dir == "left" then
  70.     originalx=originalx-1*n
  71.     jugador.posy=jugador.posy+0.5
  72.     jugador.posx=jugador.posx+0.5
  73. elseif dir == "right" then
  74.     originalx=originalx+1*n
  75.     jugador.posy=jugador.posy+0.5
  76.     jugador.posx=jugador.posx+0.5
  77. end
  78. for i=1,30 do
  79.     if dir == "down" then
  80.         jugador.img:resize(30+i/3,30+i/3)
  81.         jugador.img:center(jugador.img:width()/2,jugador.img:height()/2)
  82.         jugador.posy=jugador.posy+(1*n)/60
  83.     elseif dir == "right" then
  84.         jugador.img:resize(30+i/3,30+i/3)
  85.         jugador.img:center(jugador.img:width()/2,jugador.img:height()/2)
  86.         jugador.posx=jugador.posx+(1*n)/60
  87.     elseif dir == "up" then
  88.         jugador.img:resize(30+i/3,30+i/3)
  89.         jugador.img:center(jugador.img:width()/2,jugador.img:height()/2)   
  90.         jugador.posy=jugador.posy-(1*n)/60
  91.     elseif dir == "left" then
  92.         jugador.img:resize(30+i/3,30+i/3)
  93.         jugador.img:center(jugador.img:width()/2,jugador.img:height()/2)
  94.         jugador.posx=jugador.posx-(1*n)/60
  95.     end
  96.     blitmainthings()
  97.     screen.flip()
  98. end
  99. for i=1,30 do
  100.     if dir == "down" then
  101.         jugador.img:resize(40-i/3,40-i/3)
  102.         jugador.img:center(jugador.img:width()/2,jugador.img:height()/2)
  103.         jugador.posy=jugador.posy+(1*n)/60
  104.     elseif dir == "right" then
  105.         jugador.img:resize(40-i/3,40-i/3)
  106.         jugador.img:center(jugador.img:width()/2,jugador.img:height()/2)
  107.         jugador.posx=jugador.posx+(1*n)/60
  108.     elseif dir == "up" then
  109.         jugador.img:resize(40-i/3,40-i/3)
  110.         jugador.img:center(jugador.img:width()/2,jugador.img:height()/2)
  111.         jugador.posy=jugador.posy-(1*n)/60
  112.     elseif dir == "left" then
  113.         jugador.img:resize(40-i/3,40-i/3)
  114.         jugador.img:center(jugador.img:width()/2,jugador.img:height()/2)
  115.         jugador.posx=jugador.posx-(1*n)/60
  116.     end
  117.     blitmainthings()
  118.     screen.flip()
  119. end
  120. jugador.img:reset()
  121. jugador.posy=originaly
  122. jugador.posx=originalx
  123. end
  124.  
  125. function comprobar(dir,n)
  126.     if nivelactual[jugador.posy][jugador.posx] == "e" or jugador.posy <1 or jugador.posx <1 then
  127.         morir()
  128.     elseif nivelactual[jugador.posy][jugador.posx] == "a" then
  129.         if dir == "right" then
  130.             if nivelactual[jugador.posy][jugador.posx-(1*n)] == "a" then
  131.                 nivelactual[jugador.posy][jugador.posx-(1*n)] = "e"
  132.                 tiles=tiles-1
  133.             end
  134.         elseif dir == "left" then
  135.             if nivelactual[jugador.posy][jugador.posx+(1*n)] == "a" then
  136.                 nivelactual[jugador.posy][jugador.posx+(1*n)] = "e"
  137.                 tiles=tiles-1
  138.             end
  139.         elseif dir == "up" then
  140.             if nivelactual[jugador.posy+(1*n)][jugador.posx] == "a" then
  141.                 nivelactual[jugador.posy+(1*n)][jugador.posx] = "e"
  142.                 tiles=tiles-1
  143.             end
  144.         elseif dir == "down" then
  145.             if nivelactual[jugador.posy-(1*n)][jugador.posx] == "a" then
  146.                 nivelactual[jugador.posy-(1*n)][jugador.posx] = "e"
  147.                 tiles=tiles-1
  148.             end
  149.         end
  150.  
  151.     end
  152. end
  153.  
  154. function morir()
  155.         jugador.posy=jugador.posy+0.5
  156.         jugador.posx=jugador.posx+0.5
  157.     for i= 1, 30 do
  158.         jugador.img:resize(30-i,30-i)
  159.         jugador.img:center(jugador.img:width()/2,jugador.img:height()/2)
  160.         blitmainthings()
  161.         screen.flip()
  162.         jugador.img:reset()
  163.     end
  164.     jugador.img:reset()
  165.     cargar()
  166. end
  167.  
  168. function blitblocks()
  169.     for y = 1, #nivelactual do
  170.       for x = 1, #nivelactual[y] do
  171.          --nivel
  172.          if nivelactual[y][x] == "a" then
  173.             azul:blit(map.x+(x-1)*size,map.y+(y-1)*size)
  174.          end
  175.        end
  176.     end
  177. end
  178.  
  179.  
  180. function perder()
  181. blitmainthings()
  182. screen.flip()
  183. os.message("Has perdido...") cargar()
  184. end
  185.  
  186. function moverjugador()
  187.     if controls.down() then
  188.         if controls.cross() then
  189.             mover("down",2)
  190.             comprobar("down",2)
  191.         else
  192.             mover("down",1)
  193.             comprobar("down",1)
  194.         end
  195.     elseif controls.up() then
  196.         if controls.cross() then
  197.             mover("up",2)
  198.             comprobar("up",2)
  199.         else
  200.             mover("up",1)
  201.             comprobar("up",1)
  202.         end
  203.     elseif controls.right() then
  204.         if controls.cross() then
  205.             mover("right",2)
  206.             comprobar("right",2)
  207.         else
  208.             mover("right",1)
  209.             comprobar("right",1)
  210.         end
  211.     elseif controls.left() then
  212.         if controls.cross() then
  213.             mover("left",2)
  214.             comprobar("left",2)
  215.         else
  216.             mover("left",1)
  217.             comprobar("left",1)
  218.         end
  219.     end
  220. end
  221.  
  222. function blitmainthings()
  223. map.img:blit(map.x,map.y)
  224. blitblocks()
  225. jugador.img:blit(map.x+(jugador.posx-1)*size,map.y+(jugador.posy-1)*size)
  226. screen.print(10,5,"PosX: "..math.floor(jugador.posx).." Posy: "..math.floor(jugador.posy))
  227. screen.print(150,5,"Tiles: "..tiles)
  228. screen.print(300,5,"Movidas: "..moved)
  229. end
  230.  
  231.  
  232. cargar()
  233.  
  234. while true do
  235. controls.read()
  236.  
  237.  
  238. moverjugador()
  239.  
  240. blitmainthings()
  241.  
  242.  
  243. if tiles==1 then
  244.     blitmainthings()
  245.     screen.flip()
  246.     os.message("Has ganado...")
  247.     cnv=cnv+1
  248.     cargar()
  249. end
  250.  
  251. screen.flip()
  252. if controls.select() then a() end
  253. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement