Advertisement
Guest User

Untitled

a guest
Sep 17th, 2012
66
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 = 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. colormap = {{170,170,170},{194,41,0},{100,100,100},{50,50,50},{194,141,0}}
  214. --1=0,84,6,94,21,92,15,82, 2=finish, 3=button, 4=hard button, 5=orange (weight)
  215. --button:x,y hardbutton:y,x orange:x,y finish:x,y
  216. --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}}
  217. blockpos = floormap[level][13+floormap[level][12]]
  218. blockdir = 1
  219. --blockdir 1=hor, 2=vert
  220. up = true
  221. done = false
  222. win = false
  223. falling = false
  224. button = false
  225. totalmoves = totalmoves + moves
  226. moves = 0
  227. alpha = 384
  228. m=0
  229. zmg.clear()
  230. repeat
  231. if levelreached<16 then
  232. finished = false
  233. else
  234. finished = true
  235. end
  236. function onarrowKey()
  237.  
  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. moves = moves+1
  244. if up then
  245. up = false
  246. blockdir=1
  247. blockpos[3]=blockpos[1]+1
  248. blockpos[4]=blockpos[2]
  249. elseif blockdir==1 then
  250. up = true
  251. blockpos[1] = blockpos[1] + 1
  252. blockpos[3]=blockpos[1]
  253. blockpos[4]=blockpos[2]
  254. end
  255. 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
  256. done = true
  257. win = false
  258. end
  259. elseif zmg.keyMenuFast()==38 then
  260. blockpos[1] = blockpos[1] - 1
  261. blockpos[3]=blockpos[3] - 1
  262. moves = moves+1
  263. if up then
  264. up = false
  265. blockdir=1
  266. blockpos[1]=blockpos[1] - 1
  267. blockpos[3]=blockpos[1] + 1
  268. blockpos[4]=blockpos[2]
  269. elseif blockdir==1 then
  270. up = true
  271. blockpos[3]=blockpos[1]
  272. blockpos[4]=blockpos[2]
  273. end
  274. 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
  275. done = true
  276. win = false
  277. end
  278. elseif zmg.keyMenuFast()==28 then
  279. blockpos[2] = blockpos[2] - 1
  280. blockpos[4] = blockpos[4] - 1
  281. moves = moves+1
  282. if up then
  283. up = false
  284. blockdir=2
  285. blockpos[2] = blockpos[2] - 1
  286. blockpos[3]=blockpos[1]
  287. blockpos[4]=blockpos[2]+1
  288. elseif blockdir==2 then
  289. up = true
  290. blockpos[3]=blockpos[1]
  291. blockpos[4]=blockpos[2]
  292. end
  293. if blockpos[1]<16 and blockpos[1]>0 and blockpos[2]<11 and blockpos[2]>0 then
  294. 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
  295. done = true
  296. win = false
  297. end
  298. else
  299. done = true
  300. win=false
  301. end
  302. elseif zmg.keyMenuFast()==37 then
  303. blockpos[2] = blockpos[2] + 1
  304. blockpos[4] = blockpos[4] + 1
  305. moves = moves+1
  306. if up then
  307. up = false
  308. blockdir=2
  309. blockpos[3]=blockpos[1]
  310. blockpos[4]=blockpos[2]+1
  311. elseif blockdir==2 then
  312. up = true
  313. blockpos[2] = blockpos[2] + 1
  314. blockpos[3]=blockpos[1]
  315. blockpos[4]=blockpos[2]
  316. end
  317. if blockpos[2]>10 or blockpos[4]>10 then
  318. gmeover = true
  319. else
  320. 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
  321. done = true
  322. win = false
  323. falling = true
  324. end
  325. end
  326. end
  327. if blockpos[1]<16 and blockpos[1]>0 and blockpos[2]<11 and blockpos[2]>0 then
  328. for m=0,floormap[level][12]-1 do
  329. if floormap[level][floormap[level][13+m][2]][floormap[level][13+m][1]]==3 then
  330. 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
  331. button = true
  332. for l=1,floormap[level][13+m][3] do
  333. 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
  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]]==0 and floormap[level][13+m][4+2*floormap[level][13+m][3]]==0 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]]==0 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]]=1
  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]]==2 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]]==0 then
  342. floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=0
  343. 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
  344. floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
  345. 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
  346. floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
  347. end
  348. --veld = 1, knop = 0 ==> veld = 0 OK
  349. --veld = 1, knop = 1 ==> veld = 1 OK
  350. --veld = 1, knop = 2 ==> veld = 0 OK
  351. --veld = 0, knop = 0 ==> veld = 0 OK
  352. --veld = 0, knop = 1 ==> veld = 1 OK
  353. --veld = 0, knop = 2 ==> veld = 1 OK
  354. end
  355. end
  356. elseif floormap[level][floormap[level][13+m][2]][floormap[level][13+m][1]]==4 then
  357. 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
  358. for l=1,floormap[level][13+m][3] do
  359. if floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==0 then
  360. floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
  361. else
  362. floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=0
  363. end
  364. end
  365. end
  366. end
  367. 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
  368. done=true
  369. win=false
  370. falling=true
  371. end
  372. end
  373. if blockpos[1]==floormap[level][11][1] and blockpos[2]==floormap[level][11][2] and up then
  374. done=true
  375. win=true
  376. end
  377. else
  378. done = true
  379. win = false
  380.  
  381. moves = moves + 1
  382. end
  383. else
  384. if zmg.keyMenuFast()==38 then
  385. if not leftscroll then
  386. leftscroll = true
  387. elseif level>2 and leftscroll then
  388. leftscroll = false
  389. end
  390. end
  391. if zmg.keyMenuFast()==27 then
  392. if not rightscroll then
  393. rightscroll = true
  394. elseif level<=14 and rightscroll then
  395. rightscroll = false
  396. end
  397. end
  398. end
  399. end
  400. end
  401. function ontabKey()
  402. zmg.clear()
  403. if game then
  404. game = false
  405. zmg.fastCopy()
  406. else
  407. level = levelreached
  408. zmg.fastCopy()
  409. end
  410. end
  411. function onenterKey()
  412. if game then
  413. if done and win then
  414. level=level+1
  415. if level>levelreached then
  416. levelreached = level
  417. done = false
  418. win = false
  419. alpha = 384
  420. blockpos = floormap[level][13+floormap[level][12]]
  421. end
  422. --var.store("levelreached",levelreached)
  423. end
  424. if done and not win then
  425. --var.store("levelreached",levelreached)
  426. end
  427. zmg.fastCopy()
  428. else
  429. game = true
  430. zmg.fastCopy()
  431. end
  432. end
  433. function drawselector()
  434. zmg.clear()
  435. -- zmg.drawText(0,0,"levelreached = "..levelreached,0x0000, 0xFFFF)
  436. zmg.makeColor(0,0,0)
  437. zmg.drawText(130,5,"Level "..level,0x0000, 0xFFFF)
  438. for i=1,10 do
  439. for j=1,15 do
  440. zmg.makeColor(170,170,170)
  441. for k=1,7,2 do
  442. --tilechange[k]=0,84,6,94,21,92,15,82[k]+i*7+j*8-18
  443. --tilechange[k+1]=0,84,6,94,21,92,15,82[k+1]+i*5-j*1+5
  444. tilechangesel[k]=tilechangesel[k]+i*3+j*8+scroll
  445. tilechangesel[k+1]=tilechangesel[k+1]+i*6-j*1+40
  446. end
  447. if floormap[level][i][j] == 1 then
  448. zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],0x0000)
  449. zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],0x0000)
  450. zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],0x0000)
  451. zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],0x0000)
  452. elseif floormap[level][i][j]==2 then
  453. zmg.makeColor(194,41,0)
  454. zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],zmg.makeColor(194,41,0))
  455. zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],zmg.makeColor(194,41,0))
  456. zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],zmg.makeColor(194,41,0))
  457. zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],zmg.makeColor(194,41,0))
  458. zmg.makeColor(170,170,170)
  459. elseif floormap[level][i][j]==3 then
  460. zmg.makeColor(100,100,100)
  461. zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],zmg.makeColor(100,100,100))
  462. zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],zmg.makeColor(100,100,100))
  463. zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],zmg.makeColor(100,100,100))
  464. zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],zmg.makeColor(100,100,100))
  465. zmg.makeColor(170,170,170)
  466. elseif floormap[level][i][j]==4 then
  467. zmg.makeColor(50,50,50)
  468. zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],zmg.makeColor(50,50,50))
  469. zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],zmg.makeColor(50,50,50))
  470. zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],zmg.makeColor(50,50,50))
  471. zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],zmg.makeColor(50,50,50))
  472. zmg.makeColor(170,170,170)
  473. elseif floormap[level][i][j]==5 then
  474. zmg.makeColor(194,141,0)
  475. zmg.drawLine(tilechangesel[1],tilechangesel[2],tilechangesel[3],tilechangesel[4],zmg.makeColor(194,141,0))
  476. zmg.drawLine(tilechangesel[3],tilechangesel[4],tilechangesel[5],tilechangesel[6],zmg.makeColor(194,141,0))
  477. zmg.drawLine(tilechangesel[5],tilechangesel[6],tilechangesel[7],tilechangesel[8],zmg.makeColor(194,141,0))
  478. zmg.drawLine(tilechangesel[7],tilechangesel[8],tilechangesel[1],tilechangesel[2],zmg.makeColor(194,141,0))
  479. zmg.makeColor(170,170,170)
  480. end
  481. --zmg.makeColor(unpack(colormap[floormap[level][i][j]]))
  482. --zmg.drawLine(0,84,6,94,21,92,15,82)
  483. tilechangesel = {0,42,3,47,10,46,8,41}
  484. end
  485. end
  486. if levelreached > 1 then
  487. if level < levelreached then
  488. if zmg.keyMenuFast()==27 then
  489. zmg.clear()
  490. level = level+1
  491. end
  492. end
  493. if level > 1 then
  494. if zmg.keyMenuFast()==38 then
  495. zmg.clear()
  496. level = level-1
  497. end
  498. end
  499. end
  500. end
  501. function drawgame()
  502.  
  503. zmg.clear()
  504. if finished then
  505. zmg.drawText(60,25,"Game finished (last level reached)",0x0000, 0xFFFF)
  506. end
  507. zmg.drawText(130,5,"Level "..level,0x0000, 0xFFFF)
  508. -- zmg.drawText(0,0,"levelreached = "..levelreached,0x0000, 0xFFFF)
  509. zmg.makeColor(170,170,170)
  510. for i=1,10 do
  511. for j=1,15 do
  512. for k=1,7,2 do
  513. tilechange[k]=tilechange[k]+i*7+j*16-18
  514. tilechange[k+1]=tilechange[k+1]+i*11-j*2+5
  515. end
  516. if floormap[level][i][j]==1 then
  517. zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],0x0000)
  518. zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],0x0000)
  519. zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],0x0000)
  520. zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],0x0000)
  521. elseif floormap[level][i][j]==2 then
  522. zmg.makeColor(194,41,0)
  523. zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(194,41,0))
  524. zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(194,41,0))
  525. zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(194,41,0))
  526. zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(194,41,0))
  527. zmg.makeColor(170,170,170)
  528. elseif floormap[level][i][j]==3 then
  529. zmg.makeColor(100,100,100)
  530. zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(100,100,100))
  531. zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(100,100,100))
  532. zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(100,100,100))
  533. zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(100,100,100))
  534. zmg.makeColor(170,170,170)
  535. elseif floormap[level][i][j]==4 then
  536. zmg.makeColor(50,50,50)
  537. zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(50,50,50))
  538. zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(50,50,50))
  539. zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(50,50,50))
  540. zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(50,50,50))
  541. zmg.makeColor(170,170,170)
  542. elseif floormap[level][i][j]==5 then
  543. zmg.makeColor(194,141,0)
  544. zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(194,141,0))
  545. zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(194,141,0))
  546. zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(194,141,0))
  547. zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(194,141,0))
  548. zmg.makeColor(170,170,170)
  549. end
  550. --zmg.makeColor(unpack(colormap[floormap[level][i][j]]))
  551. --zmg.drawLine(0,84,6,94,21,92,15,82)
  552. tilechange = {0,84,6,94,21,92,15,82}
  553. end
  554. end
  555. if up then
  556. blocktop = {5,74,11,84,26,82,20,72}
  557. blockfront = {11,84,11,108,26,106,26,82}
  558. blockleft = {5,74,5,98,11,108,11,84}
  559. elseif blockdir==1 then
  560. blocktop = {5,84,11,94,42,90,36,80}
  561. blockfront = {11,84,11,108,42,104,42,90}
  562. blockleft = {5,84,5,98,11,108,11,84}
  563. elseif blockdir==2 then
  564. blocktop = {5,84,18,105,33,103,20,82}
  565. blockfront = {18,105,18,119,33,117,33,103}
  566. blockleft = {5,84,5,98,18,119,18,105}
  567. end
  568.  
  569. for k=1,7,2 do
  570. blocktop[k] = blocktop[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
  571. blocktop[k+1] = blocktop[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
  572. blockfront[k] = blockfront[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
  573. blockfront[k+1] = blockfront[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
  574. blockleft[k] = blockleft[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
  575. blockleft[k+1] = blockleft[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
  576. end
  577. if done then
  578. end
  579. if done and win then
  580. level = level + 1
  581. if level>16 then
  582. level = 16
  583. finished = true
  584. end
  585. if level>levelreached then
  586. levelreached = level
  587. end
  588. --var.store("levelreached",levelreached)
  589. totalmoves = moves
  590. win = false
  591. elseif done and not win then
  592. moves = totalmoves
  593. done = false
  594. win = false
  595. alpha = 384
  596. blockpos = floormap[level][13+floormap[level][12]]
  597. end
  598.  
  599. zmg.drawLine(blocktop[1],blocktop[2],blocktop[3],blocktop[4],zmg.makeColor(80,80,80))
  600. zmg.drawLine(blocktop[3],blocktop[4],blocktop[5],blocktop[6],zmg.makeColor(80,80,80))
  601. zmg.drawLine(blocktop[5],blocktop[6],blocktop[7],blocktop[8],zmg.makeColor(80,80,80))
  602. zmg.drawLine(blocktop[7],blocktop[8],blocktop[1],blocktop[2],zmg.makeColor(80,80,80))
  603. zmg.drawLine(blockfront[1],blockfront[2],blockfront[3],blockfront[4],zmg.makeColor(0,0,0))
  604. zmg.drawLine(blockfront[3],blockfront[4],blockfront[5],blockfront[6],zmg.makeColor(0,0,0))
  605. zmg.drawLine(blockfront[5],blockfront[6],blockfront[7],blockfront[8],zmg.makeColor(0,0,0))
  606. zmg.drawLine(blockfront[7],blockfront[8],blockfront[1],blockfront[2],zmg.makeColor(0,0,0))
  607. zmg.drawLine(blockleft[1],blockleft[2],blockleft[3],blockleft[4],zmg.makeColor(40,40,40))
  608. zmg.drawLine(blockleft[3],blockleft[4],blockleft[5],blockleft[6],zmg.makeColor(40,40,40))
  609. zmg.drawLine(blockleft[5],blockleft[6],blockleft[7],blockleft[8],zmg.makeColor(40,40,40))
  610. zmg.drawLine(blockleft[7],blockleft[8],blockleft[1],blockleft[2],zmg.makeColor(40,40,40))
  611. zmg.drawText(0,5,"Moves: "..moves,0x0000, 0xFFFF)
  612. zmg.fastCopy()
  613. end
  614.  
  615. function onpaint()
  616. if game then
  617. drawgame()
  618. else
  619. drawselector()
  620. end
  621. if zmg.keyMenuFast()==31 then
  622. onenterKey()
  623. elseif zmg.keyMenuFast()==68 then
  624. ontabKey()
  625. elseif zmg.keyMenuFast()==38 or zmg.keyMenuFast()==37 or zmg.keyMenuFast()==28 or zmg.keyMenuFast()==27 then
  626. onarrowKey()
  627. end
  628. end
  629. if a==1 then
  630. onpaint()
  631. end
  632.  
  633. zmg.fastCopy()
  634. until zmg.keyMenuFast() == 47
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement