Advertisement
Guest User

Untitled

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