Advertisement
Guest User

Untitled

a guest
Sep 17th, 2012
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.05 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. zmg.clear()
  404. if game then
  405. game = false
  406. zmg.fastCopy()
  407. else
  408. level = levelreached
  409. zmg.fastCopy()
  410. end
  411. end
  412. function onenterKey()
  413. if game then
  414. if done and win then
  415. level=level+1
  416. if level>levelreached then
  417. levelreached = level
  418. done = false
  419. win = false
  420. alpha = 384
  421. blockpos = floormap[level][13+floormap[level][12]]
  422. end
  423. --var.store("levelreached",levelreached)
  424. end
  425. if done and not win then
  426. --var.store("levelreached",levelreached)
  427. end
  428. zmg.fastCopy()
  429. else
  430. game = true
  431. zmg.fastCopy()
  432. end
  433. end
  434. function drawselector()
  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. end
  556. if up then
  557. blocktop = {5,74,11,84,26,82,20,72}
  558. blockfront = {11,84,11,108,26,106,26,82}
  559. blockleft = {5,74,5,98,11,108,11,84}
  560. elseif blockdir==1 then
  561. blocktop = {5,84,11,94,42,90,36,80}
  562. blockfront = {11,84,11,108,42,104,42,90}
  563. blockleft = {5,84,5,98,11,108,11,84}
  564. elseif blockdir==2 then
  565. blocktop = {5,84,18,105,33,103,20,82}
  566. blockfront = {18,105,18,119,33,117,33,103}
  567. blockleft = {5,84,5,98,18,119,18,105}
  568. end
  569.  
  570. for k=1,7,2 do
  571. blocktop[k] = blocktop[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
  572. blocktop[k+1] = blocktop[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
  573. blockfront[k] = blockfront[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
  574. blockfront[k+1] = blockfront[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
  575. blockleft[k] = blockleft[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
  576. blockleft[k+1] = blockleft[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
  577. end
  578. if done then
  579. --gc:setAlpha(alpha)
  580. end
  581. if alpha <= 0 then
  582. alpha = 384
  583. if win then
  584. level = level + 1
  585. if level>16 then
  586. level = 16
  587. finished = true
  588. end
  589. if level>levelreached then
  590. levelreached = level
  591. end
  592. --var.store("levelreached",levelreached)
  593. else
  594. done = false
  595. win = false
  596. alpha = 384
  597. blockpos = floormap[level][13+floormap[level][12]]
  598. end
  599. end
  600.  
  601. zmg.drawLine(blocktop[1],blocktop[2],blocktop[3],blocktop[4],zmg.makeColor(80,80,80))
  602. zmg.drawLine(blocktop[3],blocktop[4],blocktop[5],blocktop[6],zmg.makeColor(80,80,80))
  603. zmg.drawLine(blocktop[5],blocktop[6],blocktop[7],blocktop[8],zmg.makeColor(80,80,80))
  604. zmg.drawLine(blocktop[7],blocktop[8],blocktop[1],blocktop[2],zmg.makeColor(80,80,80))
  605. zmg.drawLine(blockfront[1],blockfront[2],blockfront[3],blockfront[4],zmg.makeColor(0,0,0))
  606. zmg.drawLine(blockfront[3],blockfront[4],blockfront[5],blockfront[6],zmg.makeColor(0,0,0))
  607. zmg.drawLine(blockfront[5],blockfront[6],blockfront[7],blockfront[8],zmg.makeColor(0,0,0))
  608. zmg.drawLine(blockfront[7],blockfront[8],blockfront[1],blockfront[2],zmg.makeColor(0,0,0))
  609. zmg.drawLine(blockleft[1],blockleft[2],blockleft[3],blockleft[4],zmg.makeColor(40,40,40))
  610. zmg.drawLine(blockleft[3],blockleft[4],blockleft[5],blockleft[6],zmg.makeColor(40,40,40))
  611. zmg.drawLine(blockleft[5],blockleft[6],blockleft[7],blockleft[8],zmg.makeColor(40,40,40))
  612. zmg.drawLine(blockleft[7],blockleft[8],blockleft[1],blockleft[2],zmg.makeColor(40,40,40))
  613. if done and not win then
  614. drawgame()
  615. end
  616. zmg.drawText(0,5,"Moves: "..moves,0x0000, 0xFFFF)
  617. zmg.fastCopy()
  618.  
  619. function onpaint()
  620. if game then
  621. drawgame()
  622. else
  623. drawselector()
  624. end
  625. if zmg.keyMenuFast()==31 then
  626. onenterKey()
  627. elseif zmg.keyMenuFast()==68 then
  628. ontabKey()
  629. elseif zmg.keyMenuFast()==38 or zmg.keyMenuFast()==37 or zmg.keyMenuFast()==28 or zmg.keyMenuFast()==27 then
  630. onarrowKey()
  631. end
  632. end
  633. if a==1 then
  634. onpaint()
  635. end
  636.  
  637. zmg.fastCopy()
  638. until zmg.keyMenuFast() == 47
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement