Advertisement
Guest User

Untitled

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