View difference between Paste ID: wwM28kek and YTpzhx89
SHOW: | | - or go back to the newest paste.
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-
		--gc:setAlpha(alpha)
579+
580
			level = level + 1
581-
	if alpha <= 0 then
581+
582-
		alpha = 384
582+
583-
		if win then
583+
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-
 else
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-
	if done and not win then
613+
614-
drawgame()
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