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