Advertisement
Guest User

Untitled

a guest
Sep 21st, 2012
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. a = 1
  2. level = 1
  3. levelreached = 1
  4. moves = 0
  5. totalmoves = 0
  6. game = false
  7. finished = false
  8. alpha = 216
  9. levelreached = 1
  10. scroll = 90
  11. leftscroll = false
  12. rightscroll = false
  13.  
  14. --tile = {0,4,5,10,20,6,14,0}
  15. tile = {0,84,6,94,21,92,15,82}
  16. tilechange = {0,84,6,94,21,92,15,82}
  17. tilesel = {0,42,3,47,10,46,7,41}
  18. tilechangesel = {0,42,3,47,10,46,7,41}
  19.  
  20. floormap = {
  21.     --level 1
  22.     {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  23.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  24.     {1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
  25.     {1,1,1,1,1,1,0,0,0,0,0,0,0,0,0},
  26.     {1,1,1,1,1,1,1,1,1,0,0,0,0,0,0},
  27.     {0,1,1,1,1,1,1,1,1,1,0,0,0,0,0},
  28.     {0,0,0,0,0,1,1,2,1,1,0,0,0,0,0},
  29.     {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0},
  30.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  31.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  32.     {8,7},1,{1,1,1,1,1,1,1},{2,4,2,4}},
  33.     --level 2
  34.     {{0,0,0,0,0,0,1,1,1,1,0,0,1,1,1},
  35.     {1,1,1,1,0,0,1,1,4,1,0,0,1,2,1},
  36.     {1,1,3,1,0,0,1,1,1,1,0,0,1,1,1},
  37.     {1,1,1,1,0,0,1,1,1,1,0,0,1,1,1},
  38.     {1,1,1,1,0,0,1,1,1,1,0,0,1,1,1},
  39.     {1,1,1,1,0,0,1,1,1,1,0,0,0,0,0},
  40.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  41.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  42.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  43.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  44.     {14,2},2,{3,3,2,5,5,5,6,1},{9,2,2,5,11,5,12,1},{2,5,2,5}},
  45.     --level 3
  46.     {{0,0,0,0,0,0,1,1,1,1,1,1,1,0,0},
  47.     {1,1,1,1,0,0,1,1,1,0,0,1,1,0,0},
  48.     {1,1,1,1,1,1,1,1,1,0,0,1,1,1,1},
  49.     {1,1,1,1,0,0,0,0,0,0,0,1,1,2,1},
  50.     {1,1,1,1,0,0,0,0,0,0,0,1,1,1,1},
  51.     {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1},
  52.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  53.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  54.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  55.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  56.     {14,4},1,{1,1,1,1,1,1,1,1},{2,4,2,4}},
  57.     --level 4
  58.     {{0,0,0,5,5,5,5,5,5,5,0,0,0,0,0},
  59.     {0,0,0,5,5,5,5,5,5,5,0,0,0,0,0},
  60.     {1,1,1,1,0,0,0,0,0,1,1,1,0,0,0},
  61.     {1,1,1,0,0,0,0,0,0,0,1,1,0,0,0},
  62.     {1,1,1,0,0,0,0,0,0,0,1,1,0,0,0},
  63.     {1,1,1,0,0,1,1,1,1,5,5,5,5,5,0},
  64.     {1,1,1,0,0,1,1,1,1,5,5,5,5,5,0},
  65.     {0,0,0,0,0,1,2,1,0,0,5,5,1,5,0},
  66.     {0,0,0,0,0,1,1,1,0,0,5,5,5,5,0},
  67.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  68.     {7,8},1,{1,1,1,1,1,1,1,1},{2,6,2,6}},
  69.     --level 5
  70.     {{0,0,0,0,0,0,0,0,0,0,0,1,1,1,1},
  71.     {0,1,1,1,1,1,1,1,3,1,1,1,1,1,1},
  72.     {0,1,1,1,1,0,0,0,0,0,0,0,1,1,1},
  73.     {0,1,1,3,1,0,0,0,0,0,0,0,0,0,0},
  74.     {0,1,1,1,1,0,0,0,0,0,0,0,0,0,0},
  75.     {0,0,0,1,1,1,3,1,1,1,1,1,1,0,0},
  76.     {0,0,0,0,0,0,0,0,0,0,1,1,1,1,3},
  77.     {1,1,1,0,0,0,0,0,0,0,1,1,1,1,1},
  78.     {1,2,1,1,1,1,1,1,1,1,1,1,1,0,0},
  79.     {1,1,1,1,0,0,0,0,0,0,0,0,0,0,0},
  80.     {2,9},4,{9,2,2,2,6,2,7,2},{4,4,2,9,6,9,7,1},{7,6,2,9,6,9,7,0},{15,7,2,9,6,9,7,2},{14,2,14,2}},
  81.     --level 6
  82.     {{0,0,0,0,0,1,1,1,1,1,1,0,0,0,0},
  83.     {0,0,0,0,0,1,0,0,1,1,1,0,0,0,0},
  84.     {0,0,0,0,0,1,0,0,1,1,1,1,1,0,0},
  85.     {1,1,1,1,1,1,0,0,0,0,0,1,1,1,1},
  86.     {0,0,0,0,1,1,1,0,0,0,0,1,1,2,1},
  87.     {0,0,0,0,1,1,1,0,0,0,0,0,1,1,1},
  88.     {0,0,0,0,0,0,1,0,0,1,1,0,0,0,0},
  89.     {0,0,0,0,0,0,1,1,1,1,1,0,0,0,0},
  90.     {0,0,0,0,0,0,1,1,1,1,1,0,0,0,0},
  91.     {0,0,0,0,0,0,0,1,1,1,0,0,0,0,0},
  92.     {14,5},1,{1,1,1,1,1,1,1,1},{1,4,1,4}},
  93.     --level 7
  94.     {{0,0,0,0,0,0,0,0,1,1,1,1,0,0,0},
  95.     {0,0,0,0,0,0,0,0,1,1,1,1,0,0,0},
  96.     {1,1,1,0,0,0,0,0,1,0,0,1,1,1,1},
  97.     {1,1,1,1,1,1,1,1,1,0,0,0,1,2,1},
  98.     {1,1,1,0,0,0,0,1,1,4,0,0,1,1,1},
  99.     {1,1,1,0,0,0,0,1,1,1,0,0,1,1,1},
  100.     {0,1,1,0,0,0,0,1,0,0,0,0,0,0,0},
  101.     {0,0,1,1,1,1,1,1,0,0,0,0,0,0,0},
  102.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  103.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  104.     {14,4},1,{10,5,1,7,4,1},{2,4,2,4}},
  105.     --level 8
  106.     {{0,0,1,1,1,1,0,0,0,0,0,0,0,0,0},
  107.     {0,0,1,2,1,1,0,0,0,0,0,0,0,0,0},
  108.     {0,0,1,1,1,0,0,0,0,0,0,0,0,0,0},
  109.     {0,0,1,0,0,0,1,1,1,1,1,1,0,0,0},
  110.     {0,0,1,0,0,0,1,1,0,0,1,1,0,0,0},
  111.     {0,1,1,1,1,1,1,1,0,0,1,1,1,0,0},
  112.     {0,0,0,0,0,0,1,3,0,0,0,0,1,0,0},
  113.     {0,0,0,0,0,0,1,1,1,1,0,0,1,0,0},
  114.     {0,0,0,0,0,0,1,1,1,1,1,1,1,0,0},
  115.     {0,0,0,0,0,0,0,0,0,1,1,1,0,0,0},
  116.     {4,2},1,{8,7,2,1,6,2,6,0},{2,6,2,6}},
  117.     --level 9
  118.     {{0,0,0,0,0,0,0,0,0,0,0,0,0,4,0},
  119.     {0,0,0,0,0,0,1,1,1,0,0,1,1,1,0},
  120.     {0,0,0,0,0,0,1,4,1,1,1,1,1,0,0},
  121.     {0,0,0,0,1,1,1,1,1,0,0,1,1,0,0},
  122.     {0,0,0,0,1,2,1,0,0,0,0,1,1,0,0},
  123.     {0,1,1,1,1,1,1,0,0,0,1,1,1,1,0},
  124.     {0,1,1,1,1,0,0,0,0,0,1,1,1,1,0},
  125.     {0,1,1,1,1,0,0,1,1,1,1,1,0,0,0},
  126.     {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0},
  127.     {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0},
  128.     {6,5},2,{14,1,1,5,8,1,2},{8,3,1,3,14,1,2},{4,7,4,7}},
  129.     --level 10
  130.     {{1,1,1,5,1,1,1,1,5,1,1,1,1,0,0},
  131.     {1,1,0,0,0,0,0,0,0,0,1,1,1,0,0},
  132.     {1,1,0,0,0,0,0,0,0,0,0,1,1,1,0},
  133.     {1,1,1,0,0,0,1,1,1,0,0,1,1,1,0},
  134.     {1,1,1,5,5,5,1,2,1,0,0,1,1,1,0},
  135.     {1,1,1,0,0,5,1,1,1,0,0,1,1,1,0},
  136.     {0,0,1,0,0,5,5,5,5,5,1,1,0,0,0},
  137.     {0,0,1,1,1,5,5,1,5,5,5,0,0,0,0},
  138.     {0,0,0,1,1,5,5,5,5,5,5,0,0,0,0},
  139.     {0,0,0,1,1,1,0,0,1,1,0,0,0,0,0},
  140.     {8,5},1,{1,1,1,1,1,1},{13,4,13,4}},
  141.     --level 11
  142.     {{0,0,0,0,0,0,0,0,1,1,1,0,0,0,0},
  143.     {0,0,0,1,1,1,0,0,1,1,1,0,0,0,0},
  144.     {1,0,0,1,1,1,1,1,1,1,1,1,1,1,0},
  145.     {1,0,0,1,1,1,0,0,0,0,0,0,4,1,0},
  146.     {1,0,0,0,0,0,0,0,0,0,0,0,1,1,0},
  147.     {1,0,0,0,0,0,0,0,0,0,0,0,1,1,0},
  148.     {1,0,0,0,0,0,0,0,1,1,1,1,1,1,0},
  149.     {1,1,1,1,1,0,0,0,1,1,1,0,0,0,0},
  150.     {0,1,1,2,1,0,0,0,1,1,1,0,0,0,0},
  151.     {0,0,1,1,1,0,0,0,1,1,1,1,1,4,0},
  152.     {4,9},2,{13,4,2,3,2,3,3,2},{14,10,2,4,2,4,3,2},{5,3,5,3}},
  153.     --level 12
  154.     {{1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
  155.     {1,1,1,1,1,1,1,1,1,0,0,0,1,1,1},
  156.     {1,1,1,0,0,0,0,0,1,1,1,1,1,2,1},
  157.     {1,1,1,0,0,0,0,0,0,0,0,0,4,4,1},
  158.     {1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
  159.     {1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
  160.     {1,1,1,0,0,0,0,1,1,1,1,1,4,0,0},
  161.     {1,1,1,1,1,1,1,1,0,0,0,1,1,0,0},
  162.     {1,3,1,0,0,0,0,0,0,0,0,1,1,0,0},
  163.     {1,1,1,0,0,0,0,0,0,0,0,1,4,0,0},
  164.     {14,3},5,{13,4,1,7,7,0},{14,4,1,7,7,1},{13,7,1,3,8,1},{2,9,1,8,9,2},{13,10,2,2,10,8,10,2},{2,2,2,2}},
  165.     --level 13
  166.     {{0,0,0,0,0,0,0,3,0,0,0,0,0,0,0},
  167.     {1,1,3,1,0,0,0,1,0,0,0,0,0,0,0},
  168.     {1,1,1,1,1,0,0,1,0,0,0,0,0,0,0},
  169.     {1,3,1,1,1,1,1,1,0,0,1,1,0,0,1},
  170.     {1,1,1,1,1,0,0,0,1,0,0,0,1,0,0},
  171.     {1,1,3,1,0,0,0,0,1,0,0,0,1,0,0},
  172.     {1,0,0,0,0,0,0,0,3,0,0,1,1,1,0},
  173.     {1,0,0,0,0,0,0,0,0,0,1,1,2,1,0},
  174.     {1,0,0,4,0,0,0,0,0,0,1,1,1,1,0},
  175.     {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  176.     {13,8},6,{2,4,2,4,9,4,10,0},{3,6,4,9,2,9,3,4,13,4,14,0},{3,2,4,9,2,9,3,4,13,4,14,0},{8,1,2,4,9,4,10,1},{9,7,4,9,2,9,3,4,13,4,14,1},{4,9,1,5,6,2},{3,4,3,4}},
  177.     --level 14
  178.     {{0,1,1,1,1,1,1,1,1,1,3,1,1,1,1},
  179.     {0,0,0,0,0,1,1,0,0,0,0,0,0,1,1},
  180.     {0,0,0,0,0,1,1,0,0,0,0,0,0,1,1},
  181.     {0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
  182.     {0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
  183.     {1,1,1,0,0,1,1,0,0,1,3,1,1,1,1},
  184.     {1,2,1,0,0,1,1,0,0,0,0,0,0,0,0},
  185.     {1,1,1,0,0,1,1,0,0,0,0,0,0,0,0},
  186.     {0,1,1,0,0,1,1,0,0,0,0,0,0,0,0},
  187.     {0,1,1,1,1,1,1,1,1,1,3,1,1,1,0},
  188.     {2,7},3,{11,1,2,6,8,6,9,2},{11,6,2,10,3,10,4,0},{11,10,2,10,3,10,4,1},{2,1,2,1}},
  189.     --level 15
  190.     {{0,0,0,0,0,0,0,0,1,1,0,0,0,0,0},
  191.     {0,0,0,0,0,0,0,1,1,1,0,0,0,0,0},
  192.     {1,1,0,0,1,1,1,1,1,1,0,0,0,0,0},
  193.     {1,1,1,1,1,1,0,0,1,0,0,0,0,0,0},
  194.     {1,1,1,1,0,0,0,0,1,0,0,0,1,1,1},
  195.     {0,1,1,0,0,0,0,0,4,1,1,1,1,2,1},
  196.     {0,0,1,0,0,0,0,0,4,1,0,0,1,1,1},
  197.     {0,0,1,1,1,0,0,0,1,1,0,0,0,0,0},
  198.     {0,0,0,1,1,1,0,0,1,1,0,0,0,0,0},
  199.     {0,0,0,0,1,1,1,1,1,1,0,0,0,0,0},
  200.     {14,6},2,{9,6,1,10,4,2},{9,7,1,8,6,2},{2,4,2,4}},
  201.     --level 16
  202.     {{0,0,0,0,0,1,1,0,0,0,0,1,1,1,0},
  203.     {0,0,0,1,1,1,1,1,1,0,0,1,2,1,0},
  204.     {1,1,1,1,1,1,3,1,1,1,1,1,1,1,0},
  205.     {1,1,1,1,3,0,0,1,1,1,1,1,0,0,0},
  206.     {1,1,1,0,0,0,0,0,0,1,1,1,0,0,0},
  207.     {0,1,0,0,0,0,0,0,0,0,1,0,0,0,0},
  208.     {0,1,0,0,0,0,0,0,0,0,1,0,0,0,0},
  209.     {0,1,0,0,0,0,0,0,0,1,1,0,0,0,0},
  210.     {0,1,1,0,0,0,0,0,0,1,1,0,0,0,0},
  211.     {0,0,4,0,0,0,0,0,0,4,0,0,0,0,0},
  212.     {13,2},4,{5,4,2,8,3,4,13,0},{7,3,2,8,3,4,13,0},{3,10,1,4,13,2},{10,10,1,8,3,2},{2,4,2,4}}
  213. }
  214.  
  215.     colormap = {{170,170,170},{194,41,0},{100,100,100},{50,50,50},{194,141,0}}
  216.     --1=tile, 2=finish, 3=button, 4=hard button, 5=orange (weight)
  217.     --button:x,y hardbutton:y,x orange:x,y finish:x,y
  218.     --floormap{{{0,84,6,94,21,92,15,82s},{finish},nrofbridges,{button1coord,nrof0,84,6,94,21,92,15,82stobridge,bridge1coord,bridge2coord},{butto...},{startcoord,startcoord}}
  219. function onNewLevel()
  220.     blockpos = floormap[level][13+floormap[level][12]]
  221.     blockdir = 1
  222.     --blockdir 1=hor, 2=vert
  223.     up = true
  224.     done = false
  225.     win = false
  226.     falling = false
  227.     button = false
  228.     totalmoves = totalmoves + moves
  229.     moves = 0
  230.     alpha = 216
  231.     m=0
  232. end
  233.  
  234. function onarrowKey()
  235.  
  236.     if game then
  237.         if not done then
  238.         if zmg.keyMenuFast()==27 then
  239.             blockpos[1] = blockpos[1] + 1
  240.             blockpos[3] = blockpos[3] + 1
  241.             moves = moves+1
  242.             if up then
  243.                 up = false
  244.                 blockdir=1
  245.                 blockpos[3]=blockpos[1]+1
  246.                 blockpos[4]=blockpos[2]
  247.             elseif blockdir==1 then
  248.                 up = true
  249.                 blockpos[1] = blockpos[1] + 1
  250.                 blockpos[3]=blockpos[1]
  251.                 blockpos[4]=blockpos[2]
  252.             end
  253.             if floormap[level][blockpos[2]][blockpos[1]]==0 or floormap[level][blockpos[4]][blockpos[3]]==0 or not floormap[level][blockpos[4]][blockpos[3]] or not floormap[level][blockpos[2]][blockpos[1]]then
  254.                 done = true
  255.                 win = false
  256.             end
  257.         elseif zmg.keyMenuFast()==38 then
  258.             blockpos[1] = blockpos[1] - 1
  259.             blockpos[3]=blockpos[3] - 1
  260.             moves = moves+1
  261.             if up then
  262.                 up = false
  263.                 blockdir=1
  264.                 blockpos[1]=blockpos[1] - 1
  265.                 blockpos[3]=blockpos[1] + 1
  266.                 blockpos[4]=blockpos[2]
  267.             elseif blockdir==1 then
  268.                 up = true
  269.                 blockpos[3]=blockpos[1]
  270.                 blockpos[4]=blockpos[2]
  271.             end
  272.             if floormap[level][blockpos[2]][blockpos[1]]==0 or floormap[level][blockpos[4]][blockpos[3]]==0 or not floormap[level][blockpos[4]][blockpos[3]] or not floormap[level][blockpos[2]][blockpos[1]] then
  273.                 done = true
  274.                 win = false
  275.             end
  276.         elseif zmg.keyMenuFast()==28 then
  277.             blockpos[2] = blockpos[2] - 1
  278.             blockpos[4] = blockpos[4] - 1
  279.             moves = moves+1
  280.             if up then
  281.                 up = false
  282.                 blockdir=2
  283.                 blockpos[2] = blockpos[2] - 1
  284.                 blockpos[3]=blockpos[1]
  285.                 blockpos[4]=blockpos[2]+1
  286.             elseif blockdir==2 then
  287.                 up = true
  288.                 blockpos[3]=blockpos[1]
  289.                 blockpos[4]=blockpos[2]
  290.             end
  291.             if blockpos[1]<16 and blockpos[1]>0 and blockpos[2]<11 and blockpos[2]>0 then
  292.             if floormap[level][blockpos[2]][blockpos[1]]==0 or floormap[level][blockpos[4]][blockpos[3]]==0 or not floormap[level][blockpos[4]][blockpos[3]] or not floormap[level][blockpos[2]][blockpos[1]] then
  293.                 done = true
  294.                 win = false
  295.             end
  296.             else
  297.                 done = true
  298.                 win=false
  299.             end
  300.         elseif zmg.keyMenuFast()==37 then
  301.             blockpos[2] = blockpos[2] + 1
  302.             blockpos[4] = blockpos[4] + 1
  303.             moves = moves+1
  304.             if up then
  305.                 up = false
  306.                 blockdir=2
  307.                 blockpos[3]=blockpos[1]
  308.                 blockpos[4]=blockpos[2]+1
  309.             elseif blockdir==2 then
  310.                 up = true
  311.                 blockpos[2] = blockpos[2] + 1
  312.                 blockpos[3]=blockpos[1]
  313.                 blockpos[4]=blockpos[2]
  314.             end
  315.             if blockpos[2]>10 or blockpos[4]>10 then
  316.                 gmeover = true
  317.             else
  318.             if floormap[level][blockpos[2]][blockpos[1]]==0 or floormap[level][blockpos[4]][blockpos[3]]==0 or not floormap[level][blockpos[4]][blockpos[3]] or not floormap[level][blockpos[2]][blockpos[1]] then
  319.                 done = true
  320.                 win = false
  321.                 falling = true
  322.             end
  323.             end
  324.         end
  325.         if blockpos[1]<16 and blockpos[1]>0 and blockpos[2]<11 and blockpos[2]>0 then
  326.         for m=0,floormap[level][12]-1 do
  327.             if floormap[level][floormap[level][13+m][2]][floormap[level][13+m][1]]==3 then
  328.                 if blockpos[1]==floormap[level][13+m][1] and blockpos[2]==floormap[level][13+m][2] or blockpos[3]==floormap[level][13+m][1] and blockpos[4]==floormap[level][13+m][2] then
  329.                     button = true
  330.                     for l=1,floormap[level][13+m][3] do
  331.                         if     floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==0 and floormap[level][13+m][4+2*floormap[level][13+m][3]]==1 then
  332.                             floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
  333.                         elseif floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==0 and floormap[level][13+m][4+2*floormap[level][13+m][3]]==0 then
  334.                             floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=0
  335.                         elseif floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==0 and floormap[level][13+m][4+2*floormap[level][13+m][3]]==2 then
  336.                             floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
  337.                         elseif floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==1 and floormap[level][13+m][4+2*floormap[level][13+m][3]]==2 then
  338.                             floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=0
  339.                         elseif floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==1 and floormap[level][13+m][4+2*floormap[level][13+m][3]]==0 then
  340.                             floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=0
  341.                         elseif floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==1 and floormap[level][13+m][4+2*floormap[level][13+m][3]]==1 then
  342.                             floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
  343.                         elseif floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==0 and floormap[level][13+m][4+2*floormap[level][13+m][3]]==1 then
  344.                             floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
  345.                         end
  346.                         --veld = 1, knop = 0 ==> veld = 0 OK
  347.                         --veld = 1, knop = 1 ==> veld = 1 OK
  348.                         --veld = 1, knop = 2 ==> veld = 0 OK
  349.                         --veld = 0, knop = 0 ==> veld = 0 OK
  350.                         --veld = 0, knop = 1 ==> veld = 1 OK
  351.                         --veld = 0, knop = 2 ==> veld = 1 OK
  352.                     end
  353.                 end
  354.             elseif floormap[level][floormap[level][13+m][2]][floormap[level][13+m][1]]==4 then
  355.                 if blockpos[1]==floormap[level][13+m][1] and blockpos[2]==floormap[level][13+m][2] and blockpos[3]==floormap[level][13+m][1] and blockpos[4]==floormap[level][13+m][2] then
  356.                     for l=1,floormap[level][13+m][3] do
  357.                         if floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==0 then
  358.                             floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
  359.                         else
  360.                             floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=0
  361.                         end
  362.                     end
  363.                 end
  364.             end
  365.             if floormap[level][blockpos[2]][blockpos[1]]==5 and floormap[level][blockpos[4]][blockpos[3]]==5 and blockpos[1]==blockpos[3] and blockpos[2]==blockpos[4] then
  366.                 done=true
  367.                 win=false
  368.                 falling=true
  369.             end
  370.         end
  371.         if blockpos[1]==floormap[level][11][1] and blockpos[2]==floormap[level][11][2] and up then
  372.             done=true
  373.             win=true
  374.         end
  375.         else
  376.             done = true
  377.             win = false
  378.        
  379.         moves = moves + 1
  380.         end
  381.     else
  382.         if zmg.keyMenuFast()==38 then
  383.             if not leftscroll then
  384.                 leftscroll = true
  385.             elseif level>2 and leftscroll then
  386.                 leftscroll = false
  387.             end
  388.         end
  389.         if zmg.keyMenuFast()==27 then
  390.             if not rightscroll then
  391.                 rightscroll = true
  392.             elseif level<=14 and rightscroll then
  393.                 rightscroll = false
  394.             end
  395.         end
  396.     end
  397. end
  398. end
  399. function ontabKey()
  400. zmg.clear()
  401.     if game then
  402.         game = false
  403.         zmg.fastCopy()
  404.     else
  405.         level = levelreached
  406.         zmg.fastCopy()
  407.     end
  408. end
  409. function onenterKey()
  410.     if game then
  411.         if done and win then
  412.             level=level+1
  413.             if level>levelreached then
  414.                 levelreached = level
  415.             end
  416.             onNewLevel()
  417.             --var.store("levelreached",levelreached)
  418.         end
  419.         if done and not win then
  420.             --var.store("levelreached",levelreached)
  421.         end
  422.         zmg.fastCopy()
  423.     else
  424.         game = true
  425.         zmg.fastCopy()
  426.     end
  427. end
  428. function drawselector()
  429. zmg.clear()
  430.     -- zmg.drawText(0,0,"levelreached = "..levelreached,0x0000, 0xFFFF)
  431.     zmg.makeColor(0,0,0)
  432.     zmg.drawText(130,5,"Level "..level,0x0000, 0xFFFF)
  433.     for i=1,10 do
  434.         for j=1,15 do
  435.             zmg.makeColor(170,170,170)
  436.             for k=1,7,2 do
  437.                 --tilechange[k]=0,84,6,94,21,92,15,82[k]+i*7+j*8-18
  438.                 --tilechange[k+1]=0,84,6,94,21,92,15,82[k+1]+i*5-j*1+5
  439.                 tilechangesel[k]=tilechangesel[k]+i*3+j*8+scroll
  440.                 tilechangesel[k+1]=tilechangesel[k+1]+i*6-j*1+40
  441.             end
  442.             if floormap[level][i][j] == 1 then 
  443.                 zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],0x0000)
  444.                 zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],0x0000)
  445.                 zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],0x0000)
  446.                 zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],0x0000)
  447.             elseif floormap[level][i][j]==2 then
  448.                 zmg.makeColor(194,41,0)
  449.                 zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],zmg.makeColor(194,41,0))
  450.                 zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],zmg.makeColor(194,41,0))
  451.                 zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],zmg.makeColor(194,41,0))
  452.                 zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],zmg.makeColor(194,41,0))
  453.                 zmg.makeColor(170,170,170)
  454.             elseif floormap[level][i][j]==3 then
  455.                 zmg.makeColor(100,100,100)
  456.                 zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],zmg.makeColor(100,100,100))
  457.                 zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],zmg.makeColor(100,100,100))
  458.                 zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],zmg.makeColor(100,100,100))
  459.                 zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],zmg.makeColor(100,100,100))
  460.                 zmg.makeColor(170,170,170)
  461.             elseif floormap[level][i][j]==4 then
  462.                 zmg.makeColor(50,50,50)
  463.                 zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],zmg.makeColor(50,50,50))
  464.                 zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],zmg.makeColor(50,50,50))
  465.                 zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],zmg.makeColor(50,50,50))
  466.                 zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],zmg.makeColor(50,50,50))
  467.                 zmg.makeColor(170,170,170)
  468.             elseif floormap[level][i][j]==5 then
  469.                 zmg.makeColor(194,141,0)
  470.                 zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],zmg.makeColor(194,141,0))
  471.                 zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],zmg.makeColor(194,141,0))
  472.                 zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],zmg.makeColor(194,141,0))
  473.                 zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],zmg.makeColor(194,141,0))
  474.                 zmg.makeColor(170,170,170)
  475.             end
  476.             --zmg.makeColor(unpack(colormap[floormap[level][i][j]]))
  477.             --zmg.drawLine(0,84,6,94,21,92,15,82)
  478.             tilechangesel = {0,42,3,47,10,46,8,41}
  479.         end
  480.     end
  481. if levelreached > 1 then
  482. if level < levelreached then
  483. if zmg.keyMenuFast()==27 then
  484. zmg.clear()
  485. level = level+1
  486. end
  487. end
  488. if level > 1 then
  489. if zmg.keyMenuFast()==38 then
  490. zmg.clear()
  491. level = level-1
  492. end
  493. end
  494. end
  495. end
  496. function drawgame()
  497.     zmg.clear()
  498.     if finished then
  499.         zmg.drawText(60,25,"Game finished (last level reached)",0x0000, 0xFFFF)
  500.     end
  501.     zmg.drawText(130,5,"Level "..level,0x0000, 0xFFFF)
  502.     -- zmg.drawText(0,0,"levelreached = "..levelreached,0x0000, 0xFFFF)
  503.     zmg.makeColor(170,170,170)
  504.     for i=1,10 do
  505.         for j=1,15 do
  506.             for k=1,7,2 do
  507.                 tilechange[k]=tilechange[k]+i*7+j*16-18
  508.                 tilechange[k+1]=tilechange[k+1]+i*11-j*2+5
  509.             end
  510.             if floormap[level][i][j]==1 then   
  511.                 zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],0x0000)
  512.                 zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],0x0000)
  513.                 zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],0x0000)
  514.                 zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],0x0000)
  515.             elseif floormap[level][i][j]==2 then
  516.                 zmg.makeColor(194,41,0)
  517.                 zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(194,41,0))
  518.                 zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(194,41,0))
  519.                 zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(194,41,0))
  520.                 zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(194,41,0))
  521.                 zmg.makeColor(170,170,170)
  522.             elseif floormap[level][i][j]==3 then
  523.                 zmg.makeColor(100,100,100)
  524.                 zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(100,100,100))
  525.                 zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(100,100,100))
  526.                 zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(100,100,100))
  527.                 zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(100,100,100))
  528.                 zmg.makeColor(170,170,170)
  529.             elseif floormap[level][i][j]==4 then
  530.                 zmg.makeColor(50,50,50)
  531.                 zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(50,50,50))
  532.                 zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(50,50,50))
  533.                 zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(50,50,50))
  534.                 zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(50,50,50))
  535.                 zmg.makeColor(170,170,170)
  536.             elseif floormap[level][i][j]==5 then
  537.                 zmg.makeColor(194,141,0)
  538.                 zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(194,141,0))
  539.                 zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(194,141,0))
  540.                 zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(194,141,0))
  541.                 zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(194,141,0))
  542.                 zmg.makeColor(170,170,170)
  543.             end
  544.             --zmg.makeColor(unpack(colormap[floormap[level][i][j]]))
  545.             --zmg.drawLine(0,84,6,94,21,92,15,82)
  546.             tilechange = {0,84,6,94,21,92,15,82}
  547.         end
  548.     end
  549.     if up then
  550.         blocktop = {5,74,11,84,26,82,20,72}
  551.         blockfront = {11,84,11,108,26,106,26,82}
  552.         blockleft = {5,74,5,98,11,108,11,84}
  553.     elseif blockdir==1 then
  554.         blocktop = {5,84,11,94,42,90,36,80}
  555.         blockfront = {11,84,11,108,42,104,42,90}
  556.         blockleft = {5,84,5,98,11,108,11,84}
  557.     elseif blockdir==2 then
  558.         blocktop = {5,84,18,105,33,103,20,82}
  559.         blockfront = {18,105,18,119,33,117,33,103}
  560.         blockleft = {5,84,5,98,18,119,18,105}
  561.     end
  562.  
  563.     -- HERE
  564.     if done and not win then
  565.         alpha = alpha - 24
  566.         if alpha >= 0 then
  567.             zmg.drawRectFill(0,alpha,384,216-alpha,zmg.makeColor("crimson"))
  568.             zmg.fastCopy()
  569.         else
  570.             onNewLevel()
  571.             drawgame()
  572.         end
  573.         return
  574.         --zmg.clear()
  575.     end
  576.     for k=1,7,2 do
  577.         blocktop[k] = blocktop[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
  578.         blocktop[k+1] = blocktop[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
  579.         blockfront[k] = blockfront[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
  580.         blockfront[k+1] = blockfront[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
  581.         blockleft[k] = blockleft[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
  582.         blockleft[k+1] = blockleft[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
  583.     end
  584.     if done and win then
  585.         level = level + 1
  586.         if level>16 then
  587.             level = 16
  588.             finished = true
  589.         end
  590.         if level>levelreached then
  591.             levelreached = level
  592.         end
  593.         --var.store("levelreached",levelreached)
  594.         onNewLevel()
  595.     end
  596.     zmg.drawLine(blocktop[1],blocktop[2],blocktop[3],blocktop[4],zmg.makeColor(80,80,80))
  597.     zmg.drawLine(blocktop[3],blocktop[4],blocktop[5],blocktop[6],zmg.makeColor(80,80,80))
  598.     zmg.drawLine(blocktop[5],blocktop[6],blocktop[7],blocktop[8],zmg.makeColor(80,80,80))
  599.     zmg.drawLine(blocktop[7],blocktop[8],blocktop[1],blocktop[2],zmg.makeColor(80,80,80))
  600.     zmg.drawLine(blockfront[1],blockfront[2],blockfront[3],blockfront[4],zmg.makeColor(0,0,0))
  601.     zmg.drawLine(blockfront[3],blockfront[4],blockfront[5],blockfront[6],zmg.makeColor(0,0,0))
  602.     zmg.drawLine(blockfront[5],blockfront[6],blockfront[7],blockfront[8],zmg.makeColor(0,0,0))
  603.     zmg.drawLine(blockfront[7],blockfront[8],blockfront[1],blockfront[2],zmg.makeColor(0,0,0))
  604.     zmg.drawLine(blockleft[1],blockleft[2],blockleft[3],blockleft[4],zmg.makeColor(40,40,40))
  605.     zmg.drawLine(blockleft[3],blockleft[4],blockleft[5],blockleft[6],zmg.makeColor(40,40,40))
  606.     zmg.drawLine(blockleft[5],blockleft[6],blockleft[7],blockleft[8],zmg.makeColor(40,40,40))
  607.     zmg.drawLine(blockleft[7],blockleft[8],blockleft[1],blockleft[2],zmg.makeColor(40,40,40))
  608.     zmg.drawText(0,5,"Moves: "..moves,0x0000, 0xFFFF)
  609.     zmg.fastCopy()
  610. end
  611.  
  612. function onpaint()
  613.     if game then
  614.         drawgame()
  615.     else
  616.         drawselector()
  617.     end
  618.     if zmg.keyMenuFast()==31 then
  619.         onenterKey()
  620.     elseif zmg.keyMenuFast()==68 then
  621.         ontabKey()
  622.     elseif zmg.keyMenuFast()==38 or zmg.keyMenuFast()==37 or zmg.keyMenuFast()==28 or zmg.keyMenuFast()==27 then
  623.         onarrowKey()
  624.     end
  625. end
  626. zmg.clear()
  627. repeat
  628.     if levelreached<16 then
  629.         finished = false
  630.     else
  631.         finished = true
  632.     end
  633. if a==1 then
  634.     onpaint()
  635. end
  636.  
  637. zmg.fastCopy()
  638. until zmg.keyMenuFast() == 47
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement