Advertisement
Guest User

Untitled

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