View difference between Paste ID: 2YK6sTfU and hA2GFTXX
SHOW: | | - or go back to the newest paste.
1
key = zmg.keyMenuFast()
2
a = 1
3
level = 1
4
levelreached = 1
5
moves = 0
6
totalmoves = 0
7
game = false
8
finished = false
9
	alpha = 384
10
	levelreached = 1
11
	scroll = 90
12
	alpha = 384
13
	leftscroll = false
14
	rightscroll = false
15
	--tile = {0,4,5,10,20,6,14,0}
16
	tile = {0,84,6,94,21,92,15,82}
17
	tilechange = {0,84,6,94,21,92,15,82}
18
	tilesel = {0,42,3,47,10,46,7,41}
19
	tilechangesel = {0,42,3,47,10,46,7,41}
20
floormap = {
21
	--level 1
22
	{{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
23
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
24
	{1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
25
	{1,1,1,1,1,1,0,0,0,0,0,0,0,0,0},
26
	{1,1,1,1,1,1,1,1,1,0,0,0,0,0,0},
27
	{0,1,1,1,1,1,1,1,1,1,0,0,0,0,0},
28
	{0,0,0,0,0,1,1,2,1,1,0,0,0,0,0},
29
	{0,0,0,0,0,0,1,1,1,0,0,0,0,0,0},
30
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
31
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
32
	{8,7},1,{1,1,1,1,1,1,1},{2,4,2,4}},
33
	--level 2
34
	{{0,0,0,0,0,0,1,1,1,1,0,0,1,1,1},
35
	{1,1,1,1,0,0,1,1,4,1,0,0,1,2,1},
36
	{1,1,3,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,1,1,1},
39
	{1,1,1,1,0,0,1,1,1,1,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
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
44
	{14,2},2,{3,3,2,5,5,5,6,1},{9,2,2,5,11,5,12,1},{2,5,2,5}},
45
	--level 3
46
	{{0,0,0,0,0,0,1,1,1,1,1,1,1,0,0},
47
	{1,1,1,1,0,0,1,1,1,0,0,1,1,0,0},
48
	{1,1,1,1,1,1,1,1,1,0,0,1,1,1,1},
49
	{1,1,1,1,0,0,0,0,0,0,0,1,1,2,1},
50
	{1,1,1,1,0,0,0,0,0,0,0,1,1,1,1},
51
	{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1},
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
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
56
	{14,4},1,{1,1,1,1,1,1,1,1},{2,4,2,4}},
57
	--level 4
58
	{{0,0,0,5,5,5,5,5,5,5,0,0,0,0,0},
59
	{0,0,0,5,5,5,5,5,5,5,0,0,0,0,0},
60
	{1,1,1,1,0,0,0,0,0,1,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,0,0,0,0,0,1,1,0,0,0},
63
	{1,1,1,0,0,1,1,1,1,5,5,5,5,5,0},
64
	{1,1,1,0,0,1,1,1,1,5,5,5,5,5,0},
65
	{0,0,0,0,0,1,2,1,0,0,5,5,1,5,0},
66
	{0,0,0,0,0,1,1,1,0,0,5,5,5,5,0},
67
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
68
	{7,8},1,{1,1,1,1,1,1,1,1},{2,6,2,6}},
69
	--level 5
70
	{{0,0,0,0,0,0,0,0,0,0,0,1,1,1,1},
71
	{0,1,1,1,1,1,1,1,3,1,1,1,1,1,1},
72
	{0,1,1,1,1,0,0,0,0,0,0,0,1,1,1},
73
	{0,1,1,3,1,0,0,0,0,0,0,0,0,0,0},
74
	{0,1,1,1,1,0,0,0,0,0,0,0,0,0,0},
75
	{0,0,0,1,1,1,3,1,1,1,1,1,1,0,0},
76
	{0,0,0,0,0,0,0,0,0,0,1,1,1,1,3},
77
	{1,1,1,0,0,0,0,0,0,0,1,1,1,1,1},
78
	{1,2,1,1,1,1,1,1,1,1,1,1,1,0,0},
79
	{1,1,1,1,0,0,0,0,0,0,0,0,0,0,0},
80
	{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}},
81
	--level 6
82
	{{0,0,0,0,0,1,1,1,1,1,1,0,0,0,0},
83
	{0,0,0,0,0,1,0,0,1,1,1,0,0,0,0},
84
	{0,0,0,0,0,1,0,0,1,1,1,1,1,0,0},
85
	{1,1,1,1,1,1,0,0,0,0,0,1,1,1,1},
86
	{0,0,0,0,1,1,1,0,0,0,0,1,1,2,1},
87
	{0,0,0,0,1,1,1,0,0,0,0,0,1,1,1},
88
	{0,0,0,0,0,0,1,0,0,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,1,1,1,1,1,0,0,0,0},
91
	{0,0,0,0,0,0,0,1,1,1,0,0,0,0,0},
92
	{14,5},1,{1,1,1,1,1,1,1,1},{1,4,1,4}},
93
	--level 7
94
	{{0,0,0,0,0,0,0,0,1,1,1,1,0,0,0},
95
	{0,0,0,0,0,0,0,0,1,1,1,1,0,0,0},
96
	{1,1,1,0,0,0,0,0,1,0,0,1,1,1,1},
97
	{1,1,1,1,1,1,1,1,1,0,0,0,1,2,1},
98
	{1,1,1,0,0,0,0,1,1,4,0,0,1,1,1},
99
	{1,1,1,0,0,0,0,1,1,1,0,0,1,1,1},
100
	{0,1,1,0,0,0,0,1,0,0,0,0,0,0,0},
101
	{0,0,1,1,1,1,1,1,0,0,0,0,0,0,0},
102
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
103
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
104
	{14,4},1,{10,5,1,7,4,1},{2,4,2,4}},
105
	--level 8
106
	{{0,0,1,1,1,1,0,0,0,0,0,0,0,0,0},
107
	{0,0,1,2,1,1,0,0,0,0,0,0,0,0,0},
108
	{0,0,1,1,1,0,0,0,0,0,0,0,0,0,0},
109
	{0,0,1,0,0,0,1,1,1,1,1,1,0,0,0},
110
	{0,0,1,0,0,0,1,1,0,0,1,1,0,0,0},
111
	{0,1,1,1,1,1,1,1,0,0,1,1,1,0,0},
112
	{0,0,0,0,0,0,1,3,0,0,0,0,1,0,0},
113
	{0,0,0,0,0,0,1,1,1,1,0,0,1,0,0},
114
	{0,0,0,0,0,0,1,1,1,1,1,1,1,0,0},
115
	{0,0,0,0,0,0,0,0,0,1,1,1,0,0,0},
116
	{4,2},1,{8,7,2,1,6,2,6,0},{2,6,2,6}},
117
	--level 9
118
	{{0,0,0,0,0,0,0,0,0,0,0,0,0,4,0},
119
	{0,0,0,0,0,0,1,1,1,0,0,1,1,1,0},
120
	{0,0,0,0,0,0,1,4,1,1,1,1,1,0,0},
121
	{0,0,0,0,1,1,1,1,1,0,0,1,1,0,0},
122
	{0,0,0,0,1,2,1,0,0,0,0,1,1,0,0},
123
	{0,1,1,1,1,1,1,0,0,0,1,1,1,1,0},
124
	{0,1,1,1,1,0,0,0,0,0,1,1,1,1,0},
125
	{0,1,1,1,1,0,0,1,1,1,1,1,0,0,0},
126
	{0,0,0,0,0,0,1,1,1,0,0,0,0,0,0},
127
	{0,0,0,0,0,0,1,1,1,0,0,0,0,0,0},
128
	{6,5},2,{14,1,1,5,8,1,2},{8,3,1,3,14,1,2},{4,7,4,7}},
129
	--level 10
130
	{{1,1,1,5,1,1,1,1,5,1,1,1,1,0,0},
131
	{1,1,0,0,0,0,0,0,0,0,1,1,1,0,0},
132
	{1,1,0,0,0,0,0,0,0,0,0,1,1,1,0},
133
	{1,1,1,0,0,0,1,1,1,0,0,1,1,1,0},
134
	{1,1,1,5,5,5,1,2,1,0,0,1,1,1,0},
135
	{1,1,1,0,0,5,1,1,1,0,0,1,1,1,0},
136
	{0,0,1,0,0,5,5,5,5,5,1,1,0,0,0},
137
	{0,0,1,1,1,5,5,1,5,5,5,0,0,0,0},
138
	{0,0,0,1,1,5,5,5,5,5,5,0,0,0,0},
139
	{0,0,0,1,1,1,0,0,1,1,0,0,0,0,0},
140
	{8,5},1,{1,1,1,1,1,1},{13,4,13,4}},
141
	--level 11
142
	{{0,0,0,0,0,0,0,0,1,1,1,0,0,0,0},
143
	{0,0,0,1,1,1,0,0,1,1,1,0,0,0,0},
144
	{1,0,0,1,1,1,1,1,1,1,1,1,1,1,0},
145
	{1,0,0,1,1,1,0,0,0,0,0,0,4,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,0,0,0,0,1,1,0},
148
	{1,0,0,0,0,0,0,0,1,1,1,1,1,1,0},
149
	{1,1,1,1,1,0,0,0,1,1,1,0,0,0,0},
150
	{0,1,1,2,1,0,0,0,1,1,1,0,0,0,0},
151
	{0,0,1,1,1,0,0,0,1,1,1,1,1,4,0},
152
	{4,9},2,{13,4,2,3,2,3,3,2},{14,10,2,4,2,4,3,2},{5,3,5,3}},
153
	--level 12
154
	{{1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
155
	{1,1,1,1,1,1,1,1,1,0,0,0,1,1,1},
156
	{1,1,1,0,0,0,0,0,1,1,1,1,1,2,1},
157
	{1,1,1,0,0,0,0,0,0,0,0,0,4,4,1},
158
	{1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
159
	{1,1,1,0,0,0,0,0,0,0,0,0,0,0,0},
160
	{1,1,1,0,0,0,0,1,1,1,1,1,4,0,0},
161
	{1,1,1,1,1,1,1,1,0,0,0,1,1,0,0},
162
	{1,3,1,0,0,0,0,0,0,0,0,1,1,0,0},
163
	{1,1,1,0,0,0,0,0,0,0,0,1,4,0,0},
164
	{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}},
165
	--level 13
166
	{{0,0,0,0,0,0,0,3,0,0,0,0,0,0,0},
167
	{1,1,3,1,0,0,0,1,0,0,0,0,0,0,0},
168
	{1,1,1,1,1,0,0,1,0,0,0,0,0,0,0},
169
	{1,3,1,1,1,1,1,1,0,0,1,1,0,0,1},
170
	{1,1,1,1,1,0,0,0,1,0,0,0,1,0,0},
171
	{1,1,3,1,0,0,0,0,1,0,0,0,1,0,0},
172
	{1,0,0,0,0,0,0,0,3,0,0,1,1,1,0},
173
	{1,0,0,0,0,0,0,0,0,0,1,1,2,1,0},
174
	{1,0,0,4,0,0,0,0,0,0,1,1,1,1,0},
175
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
176
	{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}},
177
	--level 14
178
	{{0,1,1,1,1,1,1,1,1,1,3,1,1,1,1},
179
	{0,0,0,0,0,1,1,0,0,0,0,0,0,1,1},
180
	{0,0,0,0,0,1,1,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
	{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
183
	{1,1,1,0,0,1,1,0,0,1,3,1,1,1,1},
184
	{1,2,1,0,0,1,1,0,0,0,0,0,0,0,0},
185
	{1,1,1,0,0,1,1,0,0,0,0,0,0,0,0},
186
	{0,1,1,0,0,1,1,0,0,0,0,0,0,0,0},
187
	{0,1,1,1,1,1,1,1,1,1,3,1,1,1,0},
188
	{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}},
189
	--level 15
190
	{{0,0,0,0,0,0,0,0,1,1,0,0,0,0,0},
191
	{0,0,0,0,0,0,0,1,1,1,0,0,0,0,0},
192
	{1,1,0,0,1,1,1,1,1,1,0,0,0,0,0},
193
	{1,1,1,1,1,1,0,0,1,0,0,0,0,0,0},
194
	{1,1,1,1,0,0,0,0,1,0,0,0,1,1,1},
195
	{0,1,1,0,0,0,0,0,4,1,1,1,1,2,1},
196
	{0,0,1,0,0,0,0,0,4,1,0,0,1,1,1},
197
	{0,0,1,1,1,0,0,0,1,1,0,0,0,0,0},
198
	{0,0,0,1,1,1,0,0,1,1,0,0,0,0,0},
199
	{0,0,0,0,1,1,1,1,1,1,0,0,0,0,0},
200
	{14,6},2,{9,6,1,10,4,2},{9,7,1,8,6,2},{2,4,2,4}},
201
	--level 16
202
	{{0,0,0,0,0,1,1,0,0,0,0,1,1,1,0},
203
	{0,0,0,1,1,1,1,1,1,0,0,1,2,1,0},
204
	{1,1,1,1,1,1,3,1,1,1,1,1,1,1,0},
205
	{1,1,1,1,3,0,0,1,1,1,1,1,0,0,0},
206
	{1,1,1,0,0,0,0,0,0,1,1,1,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,0,1,0,0,0,0},
209
	{0,1,0,0,0,0,0,0,0,1,1,0,0,0,0},
210
	{0,1,1,0,0,0,0,0,0,1,1,0,0,0,0},
211
	{0,0,4,0,0,0,0,0,0,4,0,0,0,0,0},
212
	{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}}
213
}
214
215
	colormap = {{170,170,170},{194,41,0},{100,100,100},{50,50,50},{194,141,0}}
216
	--1=0,84,6,94,21,92,15,82, 2=finish, 3=button, 4=hard button, 5=orange (weight)
217
	--button:x,y hardbutton:y,x orange:x,y finish:x,y
218
	--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}}
219
	blockpos = floormap[level][13+floormap[level][12]]
220
	blockdir = 1
221
	--blockdir 1=hor, 2=vert
222
	up = true
223
	done = false
224
	win = false
225
	falling = false
226
	button = false
227
	totalmoves = totalmoves + moves
228
	moves = 0
229
	alpha = 384
230
	m=0
231
zmg.clear()
232
repeat
233
	if levelreached<16 then
234
		finished = false
235
	else
236
		finished = true
237
	end
238
function onarrowKey()
239
240
	if game then
241
		if not done then
242
		if key==27 then
243
			blockpos[1] = blockpos[1] + 1
244
			blockpos[3] = blockpos[3] + 1
245
			moves = moves+1
246
			if up then
247
				up = false
248
				blockdir=1
249
				blockpos[3]=blockpos[1]+1
250
				blockpos[4]=blockpos[2]
251
			elseif blockdir==1 then
252
				up = true
253
				blockpos[1] = blockpos[1] + 1
254
				blockpos[3]=blockpos[1]
255
				blockpos[4]=blockpos[2]
256
			end
257
			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
258
				done = true
259
				win = false
260
			end
261
		elseif key==38 then
262
			blockpos[1] = blockpos[1] - 1
263
			blockpos[3]=blockpos[3] - 1
264
			moves = moves+1
265
			if up then
266
				up = false
267
				blockdir=1
268
				blockpos[1]=blockpos[1] - 1
269
				blockpos[3]=blockpos[1] + 1
270
				blockpos[4]=blockpos[2]
271
			elseif blockdir==1 then
272
				up = true
273
				blockpos[3]=blockpos[1]
274
				blockpos[4]=blockpos[2]
275
			end
276
			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
277
				done = true
278
				win = false
279
			end
280
		elseif key==28 then
281
			blockpos[2] = blockpos[2] - 1
282
			blockpos[4] = blockpos[4] - 1
283
			moves = moves+1
284
			if up then
285
				up = false
286
				blockdir=2
287
				blockpos[2] = blockpos[2] - 1
288
				blockpos[3]=blockpos[1]
289
				blockpos[4]=blockpos[2]+1
290
			elseif blockdir==2 then
291
				up = true
292
				blockpos[3]=blockpos[1]
293
				blockpos[4]=blockpos[2]
294
			end
295
			if blockpos[1]<16 and blockpos[1]>0 and blockpos[2]<11 and blockpos[2]>0 then
296
			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
297
				done = true
298
				win = false
299
			end
300
			else
301
				done = true
302
				win=false
303
			end
304
		elseif key==37 then
305
			blockpos[2] = blockpos[2] + 1
306
			blockpos[4] = blockpos[4] + 1
307
			moves = moves+1
308
			if up then
309
				up = false
310
				blockdir=2
311
				blockpos[3]=blockpos[1]
312
				blockpos[4]=blockpos[2]+1
313
			elseif blockdir==2 then
314
				up = true
315
				blockpos[2] = blockpos[2] + 1
316
				blockpos[3]=blockpos[1]
317
				blockpos[4]=blockpos[2]
318
			end
319
			if blockpos[2]>10 or blockpos[4]>10 then
320
				gmeover = true
321
			else
322
			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
323
				done = true
324
				win = false
325
				falling = true
326
			end
327
			end
328
		end
329
		if blockpos[1]<16 and blockpos[1]>0 and blockpos[2]<11 and blockpos[2]>0 then
330
		for m=0,floormap[level][12]-1 do
331
			if floormap[level][floormap[level][13+m][2]][floormap[level][13+m][1]]==3 then
332
				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
333
					button = true
334
					for l=1,floormap[level][13+m][3] do
335
						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 
336
							floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
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]]==0 then
338
							floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=0
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]]==2 then
340
							floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
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]]==2 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]]==0 then
344
							floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=0
345
						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
346
							floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
347
						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
348
							floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
349
						end
350
						--veld = 1, knop = 0 ==> veld = 0 OK
351
						--veld = 1, knop = 1 ==> veld = 1 OK
352
						--veld = 1, knop = 2 ==> veld = 0 OK
353
						--veld = 0, knop = 0 ==> veld = 0 OK
354
						--veld = 0, knop = 1 ==> veld = 1 OK
355
						--veld = 0, knop = 2 ==> veld = 1 OK
356
					end
357
				end
358
			elseif floormap[level][floormap[level][13+m][2]][floormap[level][13+m][1]]==4 then
359
				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
360
					for l=1,floormap[level][13+m][3] do
361
						if floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]==0 then
362
							floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=1
363
						else
364
							floormap[level][floormap[level][13+m][3+2*l-1]][floormap[level][13+m][3+2*l]]=0
365
						end
366
					end
367
				end
368
			end
369
			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
370
				done=true
371
				win=false
372
				falling=true
373
			end
374
		end
375
		if blockpos[1]==floormap[level][11][1] and blockpos[2]==floormap[level][11][2] and up then
376
			done=true
377
			win=true
378
		end
379
		else
380
			done = true
381
			win = false
382
		
383
		moves = moves + 1
384
		end
385
	else
386
		if key==38 then
387
			if not leftscroll then
388
				leftscroll = true
389
			elseif level>2 and leftscroll then
390
				leftscroll = false
391
			end
392
		end
393
		if key==27 then
394
			if not rightscroll then
395
				rightscroll = true
396
			elseif level<=14 and rightscroll then
397
				rightscroll = false
398
			end
399
		end
400
	end
401
end
402
end
403
function ontabKey()
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(tilesel[1],tilesel[2],tilesel[3],tilesel[4],0x0000)
449
				zmg.drawLine(tilesel[3],tilesel[4],tilesel[5],tilesel[6],0x0000)
450
				zmg.drawLine(tilesel[5],tilesel[6],tilesel[7],tilesel[8],0x0000)
451
				zmg.drawLine(tilesel[7],tilesel[8],tilesel[1],tilesel[2],0x0000)
452
			elseif floormap[level][i][j]==2 then
453
				zmg.makeColor(194,41,0)
454
				zmg.drawLine(tilesel[1],tilesel[2],tilesel[3],tilesel[4],zmg.makeColor(194,41,0))
455
				zmg.drawLine(tilesel[3],tilesel[4],tilesel[5],tilesel[6],zmg.makeColor(194,41,0))
456
				zmg.drawLine(tilesel[5],tilesel[6],tilesel[7],tilesel[8],zmg.makeColor(194,41,0))
457
				zmg.drawLine(tilesel[7],tilesel[8],tilesel[1],tilesel[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(tilesel[1],tilesel[2],tilesel[3],tilesel[4],zmg.makeColor(100,100,100))
462
				zmg.drawLine(tilesel[3],tilesel[4],tilesel[5],tilesel[6],zmg.makeColor(100,100,100))
463
				zmg.drawLine(tilesel[5],tilesel[6],tilesel[7],tilesel[8],zmg.makeColor(100,100,100))
464
				zmg.drawLine(tilesel[7],tilesel[8],tilesel[1],tilesel[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(tilesel[1],tilesel[2],tilesel[3],tilesel[4],zmg.makeColor(50,50,50))
469
				zmg.drawLine(tilesel[3],tilesel[4],tilesel[5],tilesel[6],zmg.makeColor(50,50,50))
470
				zmg.drawLine(tilesel[5],tilesel[6],tilesel[7],tilesel[8],zmg.makeColor(50,50,50))
471
				zmg.drawLine(tilesel[7],tilesel[8],tilesel[1],tilesel[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(tilesel[1],tilesel[2],tilesel[3],tilesel[4],zmg.makeColor(194,141,0))
476
				zmg.drawLine(tilesel[3],tilesel[4],tilesel[5],tilesel[6],zmg.makeColor(194,141,0))
477
				zmg.drawLine(tilesel[5],tilesel[6],tilesel[7],tilesel[8],zmg.makeColor(194,141,0))
478
				zmg.drawLine(tilesel[7],tilesel[8],tilesel[1],tilesel[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
end
487
function drawgame()
488
489
zmg.clear()
490
	if finished then
491
		zmg.drawText(60,25,"Game finished (last level reached)",0x0000, 0xFFFF)
492
	end
493
	zmg.drawText(130,5,"Level "..level,0x0000, 0xFFFF)
494
	-- zmg.drawText(0,0,"levelreached = "..levelreached,0x0000, 0xFFFF)
495
	zmg.makeColor(170,170,170)
496
	for i=1,10 do
497
		for j=1,15 do
498
			for k=1,7,2 do
499
				tilechange[k]=tilechange[k]+i*7+j*16-18
500
				tilechange[k+1]=tilechange[k+1]+i*11-j*2+5
501
			end
502
			if floormap[level][i][j]==1 then	
503
				zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],0x0000)
504
				zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],0x0000)
505
				zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],0x0000)
506
				zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],0x0000)
507
			elseif floormap[level][i][j]==2 then
508
				zmg.makeColor(194,41,0)
509
				zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(194,41,0))
510
				zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(194,41,0))
511
				zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(194,41,0))
512
				zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(194,41,0))
513
				zmg.makeColor(170,170,170)
514
			elseif floormap[level][i][j]==3 then
515
				zmg.makeColor(100,100,100)
516
				zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(100,100,100))
517
				zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(100,100,100))
518
				zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(100,100,100))
519
				zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(100,100,100))
520
				zmg.makeColor(170,170,170)
521
			elseif floormap[level][i][j]==4 then
522
				zmg.makeColor(50,50,50)
523
				zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(50,50,50))
524
				zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(50,50,50))
525
				zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(50,50,50))
526
				zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(50,50,50))
527
				zmg.makeColor(170,170,170)
528
			elseif floormap[level][i][j]==5 then
529
				zmg.makeColor(194,141,0)
530
				zmg.drawLine(tilechange[1],tilechange[2],tilechange[3],tilechange[4],zmg.makeColor(194,141,0))
531
				zmg.drawLine(tilechange[3],tilechange[4],tilechange[5],tilechange[6],zmg.makeColor(194,141,0))
532
				zmg.drawLine(tilechange[5],tilechange[6],tilechange[7],tilechange[8],zmg.makeColor(194,141,0))
533
				zmg.drawLine(tilechange[7],tilechange[8],tilechange[1],tilechange[2],zmg.makeColor(194,141,0))
534
				zmg.makeColor(170,170,170)
535
			end
536
			--zmg.makeColor(unpack(colormap[floormap[level][i][j]]))
537
			--zmg.drawLine(0,84,6,94,21,92,15,82)
538
			tilechange = {0,84,6,94,21,92,15,82}
539
		end
540
	end
541
end
542
	if up then
543
		blocktop = {5,74,11,84,26,82,20,72}
544
		blockfront = {11,84,11,108,26,106,26,82}
545
		blockleft = {5,74,5,98,11,108,11,84}
546
	elseif blockdir==1 then
547
		blocktop = {5,84,11,94,42,90,36,80}
548
		blockfront = {11,84,11,108,42,104,42,90}
549
		blockleft = {5,84,5,98,11,108,11,84}
550
	elseif blockdir==2 then
551
		blocktop = {5,84,18,105,33,103,20,82}
552
		blockfront = {18,105,18,119,33,117,33,103}
553
		blockleft = {5,84,5,98,18,119,18,105}
554
	end
555
556
	for k=1,7,2 do
557
		blocktop[k] = blocktop[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
558
		blocktop[k+1] = blocktop[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
559
		blockfront[k] = blockfront[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
560
		blockfront[k+1] = blockfront[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
561
		blockleft[k] = blockleft[k]+(blockpos[2]-1)*7+(blockpos[1]-1)*16
562
		blockleft[k+1] = blockleft[k+1]+(blockpos[2]-1)*11-(blockpos[1]-1)*2
563
	end
564
	if done then
565
		--gc:setAlpha(alpha)
566
	end
567
	if alpha <= 0 then
568
		alpha = 384
569
		if win then
570
			level = level + 1
571
			if level>16 then
572
				level = 16
573
				finished = true
574
			end
575
			if level>levelreached then
576
				levelreached = level
577
			end
578
			--var.store("levelreached",levelreached)
579
 else //ie, if alpha <= 0 and !win 
580-
    [done = false
580+
done = false
581
win = false
582
alpha = 384
583-
blockpos = floormap[level][13+floormap[level][12]]]
583+
blockpos = floormap[level][13+floormap[level][12]]
584
		end
585
	end
586
	
587
	zmg.drawLine(blocktop[1],blocktop[2],blocktop[3],blocktop[4],zmg.makeColor(80,80,80))
588
	zmg.drawLine(blocktop[3],blocktop[4],blocktop[5],blocktop[6],zmg.makeColor(80,80,80))
589
	zmg.drawLine(blocktop[5],blocktop[6],blocktop[7],blocktop[8],zmg.makeColor(80,80,80))
590
	zmg.drawLine(blocktop[7],blocktop[8],blocktop[1],blocktop[2],zmg.makeColor(80,80,80))
591
	zmg.drawLine(blockfront[1],blockfront[2],blockfront[3],blockfront[4],zmg.makeColor(0,0,0))
592
	zmg.drawLine(blockfront[3],blockfront[4],blockfront[5],blockfront[6],zmg.makeColor(0,0,0))
593
	zmg.drawLine(blockfront[5],blockfront[6],blockfront[7],blockfront[8],zmg.makeColor(0,0,0))
594
	zmg.drawLine(blockfront[7],blockfront[8],blockfront[1],blockfront[2],zmg.makeColor(0,0,0))
595
	zmg.drawLine(blockleft[1],blockleft[2],blockleft[3],blockleft[4],zmg.makeColor(40,40,40))
596
	zmg.drawLine(blockleft[3],blockleft[4],blockleft[5],blockleft[6],zmg.makeColor(40,40,40))
597
	zmg.drawLine(blockleft[5],blockleft[6],blockleft[7],blockleft[8],zmg.makeColor(40,40,40))
598
	zmg.drawLine(blockleft[7],blockleft[8],blockleft[1],blockleft[2],zmg.makeColor(40,40,40))
599
	if done and not win then
600
drawgame()
601
	end
602
	zmg.drawText(0,5,"Moves: "..moves,0x0000, 0xFFFF)	
603
zmg.fastCopy()
604
605
function onpaint()
606
	if game then
607
		drawgame()
608
	else
609
		drawselector()
610
	end
611
	if key==31 then
612
		onenterKey()
613
	elseif key==68 then
614
		ontabKey()
615
	elseif key==38 or key==37 or key==28 or key==27 then
616
		onarrowKey()
617
	end
618
end
619
if a==1 then
620
	onpaint()
621
end
622
623
zmg.fastCopy()
624
until key == 47