minimal-web-templates – Blame information for rev 2

Subversion Repositories:
Rev:
Rev Author Line No. Line
2 office 1 /*************************************************************************/
2 /* Copyright (C) 2013 Wizardry and Steamworks - License: GNU GPLv3 */
3 /*************************************************************************/
4 /* Original by: Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> */
5 /*************************************************************************/
1 office 6  
7 var NONE = 4,
8 UP = 3,
9 LEFT = 2,
10 DOWN = 1,
11 RIGHT = 11,
12 WAITING = 5,
13 PAUSE = 6,
14 PLAYING = 7,
15 COUNTDOWN = 8,
16 EATEN_PAUSE = 9,
17 DYING = 10,
18 Pacman = {};
19  
20 Pacman.FPS = 30;
21  
22 Pacman.Ghost = function (game, map, colour) {
23  
24 var position = null,
25 direction = null,
26 eatable = null,
27 eaten = null,
28 due = null;
29  
30 function getNewCoord(dir, current) {
31  
32 var speed = isVunerable() ? 1 : isHidden() ? 4 : 2,
33 xSpeed = (dir === LEFT && -speed || dir === RIGHT && speed || 0),
34 ySpeed = (dir === DOWN && speed || dir === UP && -speed || 0);
35  
36 return {
37 "x": addBounded(current.x, xSpeed),
38 "y": addBounded(current.y, ySpeed)
39 };
40 };
41  
42 /* Collision detection(walls) is done when a ghost lands on an
43 * exact block, make sure they dont skip over it
44 */
45 function addBounded(x1, x2) {
46 var rem = x1 % 10,
47 result = rem + x2;
48 if (rem !== 0 && result > 10) {
49 return x1 + (10 - rem);
50 } else if(rem > 0 && result < 0) {
51 return x1 - rem;
52 }
53 return x1 + x2;
54 };
55  
56 function isVunerable() {
57 return eatable !== null;
58 };
59  
60 function isDangerous() {
61 return eaten === null;
62 };
63  
64 function isHidden() {
65 return eatable === null && eaten !== null;
66 };
67  
68 function getRandomDirection() {
69 var moves = (direction === LEFT || direction === RIGHT)
70 ? [UP, DOWN] : [LEFT, RIGHT];
71 return moves[Math.floor(Math.random() * 2)];
72 };
73  
74 function reset() {
75 eaten = null;
76 eatable = null;
77 position = {"x": 90, "y": 80};
78 direction = getRandomDirection();
79 due = getRandomDirection();
80 };
81  
82 function onWholeSquare(x) {
83 return x % 10 === 0;
84 };
85  
86 function oppositeDirection(dir) {
87 return dir === LEFT && RIGHT ||
88 dir === RIGHT && LEFT ||
89 dir === UP && DOWN || UP;
90 };
91  
92 function makeEatable() {
93 direction = oppositeDirection(direction);
94 eatable = game.getTick();
95 };
96  
97 function eat() {
98 eatable = null;
99 eaten = game.getTick();
100 };
101  
102 function pointToCoord(x) {
103 return Math.round(x / 10);
104 };
105  
106 function nextSquare(x, dir) {
107 var rem = x % 10;
108 if (rem === 0) {
109 return x;
110 } else if (dir === RIGHT || dir === DOWN) {
111 return x + (10 - rem);
112 } else {
113 return x - rem;
114 }
115 };
116  
117 function onGridSquare(pos) {
118 return onWholeSquare(pos.y) && onWholeSquare(pos.x);
119 };
120  
121 function secondsAgo(tick) {
122 return (game.getTick() - tick) / Pacman.FPS;
123 };
124  
125 function getColour() {
126 if (eatable) {
127 if (secondsAgo(eatable) > 5) {
128 return game.getTick() % 20 > 10 ? "#FFFFFF" : "#0000BB";
129 } else {
130 return "#0000BB";
131 }
132 } else if(eaten) {
133 return "#222";
134 }
135 return colour;
136 };
137  
138 function draw(ctx) {
139  
140 var s = map.blockSize,
141 top = (position.y/10) * s,
142 left = (position.x/10) * s;
143  
144 if (eatable && secondsAgo(eatable) > 8) {
145 eatable = null;
146 }
147  
148 if (eaten && secondsAgo(eaten) > 3) {
149 eaten = null;
150 }
151  
152 var tl = left + s;
153 var base = top + s - 3;
154 var inc = s / 10;
155  
156 var high = game.getTick() % 10 > 5 ? 3 : -3;
157 var low = game.getTick() % 10 > 5 ? -3 : 3;
158  
159 ctx.fillStyle = getColour();
160 ctx.beginPath();
161  
162 ctx.moveTo(left, base);
163  
164 ctx.quadraticCurveTo(left, top, left + (s/2), top);
165 ctx.quadraticCurveTo(left + s, top, left+s, base);
166  
167 // Wavy things at the bottom
168 ctx.quadraticCurveTo(tl-(inc*1), base+high, tl - (inc * 2), base);
169 ctx.quadraticCurveTo(tl-(inc*3), base+low, tl - (inc * 4), base);
170 ctx.quadraticCurveTo(tl-(inc*5), base+high, tl - (inc * 6), base);
171 ctx.quadraticCurveTo(tl-(inc*7), base+low, tl - (inc * 8), base);
172 ctx.quadraticCurveTo(tl-(inc*9), base+high, tl - (inc * 10), base);
173  
174 ctx.closePath();
175 ctx.fill();
176  
177 ctx.beginPath();
178 ctx.fillStyle = "#FFF";
179 ctx.arc(left + 6,top + 6, s / 6, 0, 300, false);
180 ctx.arc((left + s) - 6,top + 6, s / 6, 0, 300, false);
181 ctx.closePath();
182 ctx.fill();
183  
184 var f = s / 12;
185 var off = {};
186 off[RIGHT] = [f, 0];
187 off[LEFT] = [-f, 0];
188 off[UP] = [0, -f];
189 off[DOWN] = [0, f];
190  
191 ctx.beginPath();
192 ctx.fillStyle = "#000";
193 ctx.arc(left+6+off[direction][0], top+6+off[direction][1],
194 s / 15, 0, 300, false);
195 ctx.arc((left+s)-6+off[direction][0], top+6+off[direction][1],
196 s / 15, 0, 300, false);
197 ctx.closePath();
198 ctx.fill();
199  
200 };
201  
202 function pane(pos) {
203  
204 if (pos.y === 100 && pos.x >= 190 && direction === RIGHT) {
205 return {"y": 100, "x": -10};
206 }
207  
208 if (pos.y === 100 && pos.x <= -10 && direction === LEFT) {
209 <= -10 && direction === LEFT) { return position = {"y": 100, "x": 190};
210 <= -10 && direction === LEFT) { }
211  
212 <= -10 && direction === LEFT) { return false;
213 <= -10 && direction === LEFT) { };
214  
215 <= -10 && direction === LEFT) { function move(ctx) {
216  
217 <= -10 && direction === LEFT) { var oldPos = position,
218 <= -10 && direction === LEFT) { onGrid = onGridSquare(position),
219 <= -10 && direction === LEFT) { npos = null;
220  
221 <= -10 && direction === LEFT) { if (due !== direction) {
222  
223 <= -10 && direction === LEFT) { npos = getNewCoord(due, position);
224  
225 <= -10 && direction === LEFT) { if (onGrid &&
226 <= -10 && direction === LEFT) { map.isFloorSpace({
227 <= -10 && direction === LEFT) { "y":pointToCoord(nextSquare(npos.y, due)),
228 <= -10 && direction === LEFT) { "x":pointToCoord(nextSquare(npos.x, due))})) {
229 <= -10 && direction === LEFT) { direction = due;
230 <= -10 && direction === LEFT) { } else {
231 <= -10 && direction === LEFT) { npos = null;
232 <= -10 && direction === LEFT) { }
233 <= -10 && direction === LEFT) { }
234  
235 <= -10 && direction === LEFT) { if (npos === null) {
236 <= -10 && direction === LEFT) { npos = getNewCoord(direction, position);
237 <= -10 && direction === LEFT) { }
238  
239 <= -10 && direction === LEFT) { if (onGrid &&
240 <= -10 && direction === LEFT) { map.isWallSpace({
241 <= -10 && direction === LEFT) { "y" : pointToCoord(nextSquare(npos.y, direction)),
242 <= -10 && direction === LEFT) { "x" : pointToCoord(nextSquare(npos.x, direction))
243 <= -10 && direction === LEFT) { })) {
244  
245 <= -10 && direction === LEFT) { due = getRandomDirection();
246 <= -10 && direction === LEFT) { return move(ctx);
247 <= -10 && direction === LEFT) { }
248  
249 <= -10 && direction === LEFT) { position = npos;
250  
251 <= -10 && direction === LEFT) { var tmp = pane(position);
252 <= -10 && direction === LEFT) { if (tmp) {
253 <= -10 && direction === LEFT) { position = tmp;
254 <= -10 && direction === LEFT) { }
255  
256 <= -10 && direction === LEFT) { due = getRandomDirection();
257  
258 <= -10 && direction === LEFT) { return {
259 <= -10 && direction === LEFT) { "new" : position,
260 <= -10 && direction === LEFT) { "old" : oldPos
261 <= -10 && direction === LEFT) { };
262 <= -10 && direction === LEFT) { };
263  
264 <= -10 && direction === LEFT) { return {
265 <= -10 && direction === LEFT) { "eat" : eat,
266 <= -10 && direction === LEFT) { "isVunerable" : isVunerable,
267 <= -10 && direction === LEFT) { "isDangerous" : isDangerous,
268 <= -10 && direction === LEFT) { "makeEatable" : makeEatable,
269 <= -10 && direction === LEFT) { "reset" : reset,
270 <= -10 && direction === LEFT) { "move" : move,
271 <= -10 && direction === LEFT) { "draw" : draw
272 <= -10 && direction === LEFT) { };
273 <= -10 && direction === LEFT) {};
274  
275 <= -10 && direction === LEFT) {Pacman.User = function (game, map) {
276  
277 <= -10 && direction === LEFT) { var position = null,
278 <= -10 && direction === LEFT) { direction = null,
279 <= -10 && direction === LEFT) { eaten = null,
280 <= -10 && direction === LEFT) { due = null,
281 <= -10 && direction === LEFT) { lives = null,
282 <= -10 && direction === LEFT) { score = 5,
283 <= -10 && direction === LEFT) { keyMap = {};
284  
285 <= -10 && direction === LEFT) { keyMap[KEY.ARROW_LEFT] = LEFT;
286 <= -10 && direction === LEFT) { keyMap[KEY.ARROW_UP] = UP;
287 <= -10 && direction === LEFT) { keyMap[KEY.ARROW_RIGHT] = RIGHT;
288 <= -10 && direction === LEFT) { keyMap[KEY.ARROW_DOWN] = DOWN;
289  
290 <= -10 && direction === LEFT) { function addScore(nScore) {
291 <= -10 && direction === LEFT) { score += nScore;
292 <= -10 && direction === LEFT) { if (score >= 10000 && score - nScore < 10000) {
293 <= -10 && direction === LEFT) {< 10000) { lives += 1;
294 <= -10 && direction === LEFT) {< 10000) { }
295 <= -10 && direction === LEFT) {< 10000) { };
296  
297 <= -10 && direction === LEFT) {< 10000) { function theScore() {
298 <= -10 && direction === LEFT) {< 10000) { return score;
299 <= -10 && direction === LEFT) {< 10000) { };
300  
301 <= -10 && direction === LEFT) {< 10000) { function loseLife() {
302 <= -10 && direction === LEFT) {< 10000) { lives -= 1;
303 <= -10 && direction === LEFT) {< 10000) { };
304  
305 <= -10 && direction === LEFT) {< 10000) { function getLives() {
306 <= -10 && direction === LEFT) {< 10000) { return lives;
307 <= -10 && direction === LEFT) {< 10000) { };
308  
309 <= -10 && direction === LEFT) {< 10000) { function initUser() {
310 <= -10 && direction === LEFT) {< 10000) { score = 0;
311 <= -10 && direction === LEFT) {< 10000) { lives = 3;
312 <= -10 && direction === LEFT) {< 10000) { newLevel();
313 <= -10 && direction === LEFT) {< 10000) { }
314  
315 <= -10 && direction === LEFT) {< 10000) { function newLevel() {
316 <= -10 && direction === LEFT) {< 10000) { resetPosition();
317 <= -10 && direction === LEFT) {< 10000) { eaten = 0;
318 <= -10 && direction === LEFT) {< 10000) { };
319  
320 <= -10 && direction === LEFT) {< 10000) { function resetPosition() {
321 <= -10 && direction === LEFT) {< 10000) { position = {"x": 90, "y": 120};
322 <= -10 && direction === LEFT) {< 10000) { direction = LEFT;
323 <= -10 && direction === LEFT) {< 10000) { due = LEFT;
324 <= -10 && direction === LEFT) {< 10000) { };
325  
326 <= -10 && direction === LEFT) {< 10000) { function reset() {
327 <= -10 && direction === LEFT) {< 10000) { initUser();
328 <= -10 && direction === LEFT) {< 10000) { resetPosition();
329 <= -10 && direction === LEFT) {< 10000) { };
330  
331 <= -10 && direction === LEFT) {< 10000) { function keyDown(e) {
332 <= -10 && direction === LEFT) {< 10000) { if (typeof keyMap[e.keyCode] !== "undefined") {
333 <= -10 && direction === LEFT) {< 10000) { due = keyMap[e.keyCode];
334 <= -10 && direction === LEFT) {< 10000) { e.preventDefault();
335 <= -10 && direction === LEFT) {< 10000) { e.stopPropagation();
336 <= -10 && direction === LEFT) {< 10000) { return false;
337 <= -10 && direction === LEFT) {< 10000) { }
338 <= -10 && direction === LEFT) {< 10000) { return true;
339 <= -10 && direction === LEFT) {< 10000) { };
340  
341 <= -10 && direction === LEFT) {< 10000) { function getNewCoord(dir, current) {
342 <= -10 && direction === LEFT) {< 10000) { return {
343 <= -10 && direction === LEFT) {< 10000) { "x": current.x + (dir === LEFT && -2 || dir === RIGHT && 2 || 0),
344 <= -10 && direction === LEFT) {< 10000) { "y": current.y + (dir === DOWN && 2 || dir === UP && -2 || 0)
345 <= -10 && direction === LEFT) {< 10000) { };
346 <= -10 && direction === LEFT) {< 10000) { };
347  
348 <= -10 && direction === LEFT) {< 10000) { function onWholeSquare(x) {
349 <= -10 && direction === LEFT) {< 10000) { return x % 10 === 0;
350 <= -10 && direction === LEFT) {< 10000) { };
351  
352 <= -10 && direction === LEFT) {< 10000) { function pointToCoord(x) {
353 <= -10 && direction === LEFT) {< 10000) { return Math.round(x/10);
354 <= -10 && direction === LEFT) {< 10000) { };
355  
356 <= -10 && direction === LEFT) {< 10000) { function nextSquare(x, dir) {
357 <= -10 && direction === LEFT) {< 10000) { var rem = x % 10;
358 <= -10 && direction === LEFT) {< 10000) { if (rem === 0) {
359 <= -10 && direction === LEFT) {< 10000) { return x;
360 <= -10 && direction === LEFT) {< 10000) { } else if (dir === RIGHT || dir === DOWN) {
361 <= -10 && direction === LEFT) {< 10000) { return x + (10 - rem);
362 <= -10 && direction === LEFT) {< 10000) { } else {
363 <= -10 && direction === LEFT) {< 10000) { return x - rem;
364 <= -10 && direction === LEFT) {< 10000) { }
365 <= -10 && direction === LEFT) {< 10000) { };
366  
367 <= -10 && direction === LEFT) {< 10000) { function next(pos, dir) {
368 <= -10 && direction === LEFT) {< 10000) { return {
369 <= -10 && direction === LEFT) {< 10000) { "y" : pointToCoord(nextSquare(pos.y, dir)),
370 <= -10 && direction === LEFT) {< 10000) { "x" : pointToCoord(nextSquare(pos.x, dir)),
371 <= -10 && direction === LEFT) {< 10000) { };
372 <= -10 && direction === LEFT) {< 10000) { };
373  
374 <= -10 && direction === LEFT) {< 10000) { function onGridSquare(pos) {
375 <= -10 && direction === LEFT) {< 10000) { return onWholeSquare(pos.y) && onWholeSquare(pos.x);
376 <= -10 && direction === LEFT) {< 10000) { };
377  
378 <= -10 && direction === LEFT) {< 10000) { function isOnSamePlane(due, dir) {
379 <= -10 && direction === LEFT) {< 10000) { return ((due === LEFT || due === RIGHT) &&
380 <= -10 && direction === LEFT) {< 10000) { (dir === LEFT || dir === RIGHT)) ||
381 <= -10 && direction === LEFT) {< 10000) { ((due === UP || due === DOWN) &&
382 <= -10 && direction === LEFT) {< 10000) { (dir === UP || dir === DOWN));
383 <= -10 && direction === LEFT) {< 10000) { };
384  
385 <= -10 && direction === LEFT) {< 10000) { function move(ctx) {
386  
387 <= -10 && direction === LEFT) {< 10000) { var npos = null,
388 <= -10 && direction === LEFT) {< 10000) { nextWhole = null,
389 <= -10 && direction === LEFT) {< 10000) { oldPosition = position,
390 <= -10 && direction === LEFT) {< 10000) { block = null;
391  
392 <= -10 && direction === LEFT) {< 10000) { if (due !== direction) {
393 <= -10 && direction === LEFT) {< 10000) { npos = getNewCoord(due, position);
394  
395 <= -10 && direction === LEFT) {< 10000) { if (isOnSamePlane(due, direction) ||
396 <= -10 && direction === LEFT) {< 10000) { (onGridSquare(position) &&
397 <= -10 && direction === LEFT) {< 10000) { map.isFloorSpace(next(npos, due)))) {
398 <= -10 && direction === LEFT) {< 10000) { direction = due;
399 <= -10 && direction === LEFT) {< 10000) { } else {
400 <= -10 && direction === LEFT) {< 10000) { npos = null;
401 <= -10 && direction === LEFT) {< 10000) { }
402 <= -10 && direction === LEFT) {< 10000) { }
403  
404 <= -10 && direction === LEFT) {< 10000) { if (npos === null) {
405 <= -10 && direction === LEFT) {< 10000) { npos = getNewCoord(direction, position);
406 <= -10 && direction === LEFT) {< 10000) { }
407  
408 <= -10 && direction === LEFT) {< 10000) { if (onGridSquare(position) && map.isWallSpace(next(npos, direction))) {
409 <= -10 && direction === LEFT) {< 10000) { direction = NONE;
410 <= -10 && direction === LEFT) {< 10000) { }
411  
412 <= -10 && direction === LEFT) {< 10000) { if (direction === NONE) {
413 <= -10 && direction === LEFT) {< 10000) { return {"new" : position, "old" : position};
414 <= -10 && direction === LEFT) {< 10000) { }
415  
416 <= -10 && direction === LEFT) {< 10000) { if (npos.y === 100 && npos.x >= 190 && direction === RIGHT) {
417 <= -10 && direction === LEFT) {< 10000) { npos = {"y": 100, "x": -10};
418 <= -10 && direction === LEFT) {< 10000) { }
419  
420 <= -10 && direction === LEFT) {< 10000) { if (npos.y === 100 && npos.x <= -12 && direction === LEFT) {
421 <= -10 && direction === LEFT) {< 10000) { npos = {"y": 100, "x": 190};
422 <= -10 && direction === LEFT) {< 10000) { }
423  
424 <= -10 && direction === LEFT) {< 10000) { position = npos;
425 <= -10 && direction === LEFT) {< 10000) { nextWhole = next(position, direction);
426  
427 <= -10 && direction === LEFT) {< 10000) { block = map.block(nextWhole);
428  
429 <= -10 && direction === LEFT) {< 10000) { if ((isMidSquare(position.y) || isMidSquare(position.x)) &&
430 <= -10 && direction === LEFT) {< 10000) { block === Pacman.BISCUIT || block === Pacman.PILL) {
431  
432 <= -10 && direction === LEFT) {< 10000) { map.setBlock(nextWhole, Pacman.EMPTY);
433 <= -10 && direction === LEFT) {< 10000) { addScore((block === Pacman.BISCUIT) ? 10 : 50);
434 <= -10 && direction === LEFT) {< 10000) { eaten += 1;
435  
436 <= -10 && direction === LEFT) {< 10000) { if (eaten === 182) {
437 <= -10 && direction === LEFT) {< 10000) { game.completedLevel();
438 <= -10 && direction === LEFT) {< 10000) { }
439  
440 <= -10 && direction === LEFT) {< 10000) { if (block === Pacman.PILL) {
441 <= -10 && direction === LEFT) {< 10000) { game.eatenPill();
442 <= -10 && direction === LEFT) {< 10000) { }
443 <= -10 && direction === LEFT) {< 10000) { }
444  
445 <= -10 && direction === LEFT) {< 10000) { return {
446 <= -10 && direction === LEFT) {< 10000) { "new" : position,
447 <= -10 && direction === LEFT) {< 10000) { "old" : oldPosition
448 <= -10 && direction === LEFT) {< 10000) { };
449 <= -10 && direction === LEFT) {< 10000) { };
450  
451 <= -10 && direction === LEFT) {< 10000) { function isMidSquare(x) {
452 <= -10 && direction === LEFT) {< 10000) { var rem = x % 10;
453 <= -10 && direction === LEFT) {< 10000) { return rem > 3 || rem < 7;
454 <= -10 && direction === LEFT) {< 10000) { };
455  
456 <= -10 && direction === LEFT) {< 10000) { function calcAngle(dir, pos) {
457 <= -10 && direction === LEFT) {< 10000) { if (dir == RIGHT && (pos.x % 10 < 5)) {
458 <= -10 && direction === LEFT) {< 10000) { return {"start":0.25, "end":1.75, "direction": false};
459 <= -10 && direction === LEFT) {< 10000) { } else if (dir === DOWN && (pos.y % 10 < 5)) {
460 <= -10 && direction === LEFT) {< 10000) { return {"start":0.75, "end":2.25, "direction": false};
461 <= -10 && direction === LEFT) {< 10000) { } else if (dir === UP && (pos.y % 10 < 5)) {
462 <= -10 && direction === LEFT) {< 10000) { return {"start":1.25, "end":1.75, "direction": true};
463 <= -10 && direction === LEFT) {< 10000) { } else if (dir === LEFT && (pos.x % 10 < 5)) {
464 <= -10 && direction === LEFT) {< 10000) { return {"start":0.75, "end":1.25, "direction": true};
465 <= -10 && direction === LEFT) {< 10000) { }
466 <= -10 && direction === LEFT) {< 10000) { return {"start":0, "end":2, "direction": false};
467 <= -10 && direction === LEFT) {< 10000) { };
468  
469 <= -10 && direction === LEFT) {< 10000) { function drawDead(ctx, amount) {
470  
471 <= -10 && direction === LEFT) {< 10000) { var size = map.blockSize,
472 <= -10 && direction === LEFT) {< 10000) { half = size / 2;
473  
474 <= -10 && direction === LEFT) {< 10000) { if (amount >= 1) {
475 <= -10 && direction === LEFT) {< 10000) { return;
476 <= -10 && direction === LEFT) {< 10000) { }
477  
478 <= -10 && direction === LEFT) {< 10000) { ctx.fillStyle = "#FFFF00";
479 <= -10 && direction === LEFT) {< 10000) { ctx.beginPath();
480 <= -10 && direction === LEFT) {< 10000) { ctx.moveTo(((position.x/10) * size) + half,
481 <= -10 && direction === LEFT) {< 10000) { ((position.y/10) * size) + half);
482  
483 <= -10 && direction === LEFT) {< 10000) { ctx.arc(((position.x/10) * size) + half,
484 <= -10 && direction === LEFT) {< 10000) { ((position.y/10) * size) + half,
485 <= -10 && direction === LEFT) {< 10000) { half, 0, Math.PI * 2 * amount, true);
486  
487 <= -10 && direction === LEFT) {< 10000) { ctx.fill();
488 <= -10 && direction === LEFT) {< 10000) { };
489  
490 <= -10 && direction === LEFT) {< 10000) { function draw(ctx) {
491  
492 <= -10 && direction === LEFT) {< 10000) { var s = map.blockSize,
493 <= -10 && direction === LEFT) {< 10000) { angle = calcAngle(direction, position);
494  
495 <= -10 && direction === LEFT) {< 10000) { ctx.fillStyle = "#FFFF00";
496  
497 <= -10 && direction === LEFT) {< 10000) { ctx.beginPath();
498  
499 <= -10 && direction === LEFT) {< 10000) { ctx.moveTo(((position.x/10) * s) + s / 2,
500 <= -10 && direction === LEFT) {< 10000) { ((position.y/10) * s) + s / 2);
501  
502 <= -10 && direction === LEFT) {< 10000) { ctx.arc(((position.x/10) * s) + s / 2,
503 <= -10 && direction === LEFT) {< 10000) { ((position.y/10) * s) + s / 2,
504 <= -10 && direction === LEFT) {< 10000) { s / 2, Math.PI * angle.start,
505 <= -10 && direction === LEFT) {< 10000) { Math.PI * angle.end, angle.direction);
506  
507 <= -10 && direction === LEFT) {< 10000) { ctx.fill();
508 <= -10 && direction === LEFT) {< 10000) { };
509  
510 <= -10 && direction === LEFT) {< 10000) { initUser();
511  
512 <= -10 && direction === LEFT) {< 10000) { return {
513 <= -10 && direction === LEFT) {< 10000) { "draw" : draw,
514 <= -10 && direction === LEFT) {< 10000) { "drawDead" : drawDead,
515 <= -10 && direction === LEFT) {< 10000) { "loseLife" : loseLife,
516 <= -10 && direction === LEFT) {< 10000) { "getLives" : getLives,
517 <= -10 && direction === LEFT) {< 10000) { "score" : score,
518 <= -10 && direction === LEFT) {< 10000) { "addScore" : addScore,
519 <= -10 && direction === LEFT) {< 10000) { "theScore" : theScore,
520 <= -10 && direction === LEFT) {< 10000) { "keyDown" : keyDown,
521 <= -10 && direction === LEFT) {< 10000) { "move" : move,
522 <= -10 && direction === LEFT) {< 10000) { "newLevel" : newLevel,
523 <= -10 && direction === LEFT) {< 10000) { "reset" : reset,
524 <= -10 && direction === LEFT) {< 10000) { "resetPosition" : resetPosition
525 <= -10 && direction === LEFT) {< 10000) { };
526 <= -10 && direction === LEFT) {< 10000) { };
527  
528 <= -10 && direction === LEFT) {< 10000) { Pacman.Map = function (size) {
529  
530 <= -10 && direction === LEFT) {< 10000) { var height = null,
531 <= -10 && direction === LEFT) {< 10000) { width = null,
532 <= -10 && direction === LEFT) {< 10000) { blockSize = size,
533 <= -10 && direction === LEFT) {< 10000) { pillSize = 0,
534 <= -10 && direction === LEFT) {< 10000) { map = null;
535  
536 <= -10 && direction === LEFT) {< 10000) { function withinBounds(y, x) {
537 <= -10 && direction === LEFT) {< 10000) { return y >= 0 && y < height && x >= 0 && x < width;
538 <= -10 && direction === LEFT) {< 10000) { }
539  
540 <= -10 && direction === LEFT) {< 10000) { function isWall(pos) {
541 <= -10 && direction === LEFT) {< 10000) { return withinBounds(pos.y, pos.x) && map[pos.y][pos.x] === Pacman.WALL;
542 <= -10 && direction === LEFT) {< 10000) { }
543  
544 <= -10 && direction === LEFT) {< 10000) { function isFloorSpace(pos) {
545 <= -10 && direction === LEFT) {< 10000) { if (!withinBounds(pos.y, pos.x)) {
546 <= -10 && direction === LEFT) {< 10000) { return false;
547 <= -10 && direction === LEFT) {< 10000) { }
548 <= -10 && direction === LEFT) {< 10000) { var peice = map[pos.y][pos.x];
549 <= -10 && direction === LEFT) {< 10000) { return peice === Pacman.EMPTY ||
550 <= -10 && direction === LEFT) {< 10000) { peice === Pacman.BISCUIT ||
551 <= -10 && direction === LEFT) {< 10000) { peice === Pacman.PILL;
552 <= -10 && direction === LEFT) {< 10000) { }
553  
554 <= -10 && direction === LEFT) {< 10000) { function drawWall(ctx) {
555  
556 <= -10 && direction === LEFT) {< 10000) { var i, j, p, line;
557  
558 <= -10 && direction === LEFT) {< 10000) { ctx.strokeStyle = "#0000FF";
559 <= -10 && direction === LEFT) {< 10000) { ctx.lineWidth = 5;
560 <= -10 && direction === LEFT) {< 10000) { ctx.lineCap = "round";
561  
562 <= -10 && direction === LEFT) {< 10000) { for (i = 0; i < Pacman.WALLS.length; i += 1) {
563 <= -10 && direction === LEFT) {< 10000) { line = Pacman.WALLS[i];
564 <= -10 && direction === LEFT) {< 10000) { ctx.beginPath();
565  
566 <= -10 && direction === LEFT) {< 10000) { for (j = 0; j < line.length; j += 1) {
567  
568 <= -10 && direction === LEFT) {< 10000) { p = line[j];
569  
570 <= -10 && direction === LEFT) {< 10000) { if (p.move) {
571 <= -10 && direction === LEFT) {< 10000) { ctx.moveTo(p.move[0] * blockSize, p.move[1] * blockSize);
572 <= -10 && direction === LEFT) {< 10000) { } else if (p.line) {
573 <= -10 && direction === LEFT) {< 10000) { ctx.lineTo(p.line[0] * blockSize, p.line[1] * blockSize);
574 <= -10 && direction === LEFT) {< 10000) { } else if (p.curve) {
575 <= -10 && direction === LEFT) {< 10000) { ctx.quadraticCurveTo(p.curve[0] * blockSize,
576 <= -10 && direction === LEFT) {< 10000) { p.curve[1] * blockSize,
577 <= -10 && direction === LEFT) {< 10000) { p.curve[2] * blockSize,
578 <= -10 && direction === LEFT) {< 10000) { p.curve[3] * blockSize);
579 <= -10 && direction === LEFT) {< 10000) { }
580 <= -10 && direction === LEFT) {< 10000) { }
581 <= -10 && direction === LEFT) {< 10000) { ctx.stroke();
582 <= -10 && direction === LEFT) {< 10000) { }
583 <= -10 && direction === LEFT) {< 10000) { }
584  
585 <= -10 && direction === LEFT) {< 10000) { function reset() {
586 <= -10 && direction === LEFT) {< 10000) { map = Pacman.MAP.clone();
587 <= -10 && direction === LEFT) {< 10000) { height = map.length;
588 <= -10 && direction === LEFT) {< 10000) { width = map[0].length;
589 <= -10 && direction === LEFT) {< 10000) { };
590  
591 <= -10 && direction === LEFT) {< 10000) { function block(pos) {
592 <= -10 && direction === LEFT) {< 10000) { return map[pos.y][pos.x];
593 <= -10 && direction === LEFT) {< 10000) { };
594  
595 <= -10 && direction === LEFT) {< 10000) { function setBlock(pos, type) {
596 <= -10 && direction === LEFT) {< 10000) { map[pos.y][pos.x] = type;
597 <= -10 && direction === LEFT) {< 10000) { };
598  
599 <= -10 && direction === LEFT) {< 10000) { function drawPills(ctx) {
600  
601 <= -10 && direction === LEFT) {< 10000) { if (++pillSize > 30) {
602 <= -10 && direction === LEFT) {< 10000) { pillSize = 0;
603 <= -10 && direction === LEFT) {< 10000) { }
604  
605 <= -10 && direction === LEFT) {< 10000) { for (i = 0; i < height; i += 1) {
606 <= -10 && direction === LEFT) {< 10000) { for (j = 0; j < width; j += 1) {
607 <= -10 && direction === LEFT) {< 10000) { if (map[i][j] === Pacman.PILL) {
608 <= -10 && direction === LEFT) {< 10000) { ctx.beginPath();
609  
610 <= -10 && direction === LEFT) {< 10000) { ctx.fillStyle = "#000";
611 <= -10 && direction === LEFT) {< 10000) { ctx.fillRect((j * blockSize), (i * blockSize),
612 <= -10 && direction === LEFT) {< 10000) { blockSize, blockSize);
613  
614 <= -10 && direction === LEFT) {< 10000) { ctx.fillStyle = "#FFF";
615 <= -10 && direction === LEFT) {< 10000) { ctx.arc((j * blockSize) + blockSize / 2,
616 <= -10 && direction === LEFT) {< 10000) { (i * blockSize) + blockSize / 2,
617 <= -10 && direction === LEFT) {< 10000) { Math.abs(5 - (pillSize/3)),
618 <= -10 && direction === LEFT) {< 10000) { 0,
619 <= -10 && direction === LEFT) {< 10000) { Math.PI * 2, false);
620 <= -10 && direction === LEFT) {< 10000) { ctx.fill();
621 <= -10 && direction === LEFT) {< 10000) { ctx.closePath();
622 <= -10 && direction === LEFT) {< 10000) { }
623 <= -10 && direction === LEFT) {< 10000) { }
624 <= -10 && direction === LEFT) {< 10000) { }
625 <= -10 && direction === LEFT) {< 10000) { };
626  
627 <= -10 && direction === LEFT) {< 10000) { function draw(ctx) {
628  
629 <= -10 && direction === LEFT) {< 10000) { var i, j, size = blockSize;
630  
631 <= -10 && direction === LEFT) {< 10000) { ctx.fillStyle = "#000";
632 <= -10 && direction === LEFT) {< 10000) { ctx.fillRect(0, 0, width * size, height * size);
633  
634 <= -10 && direction === LEFT) {< 10000) { drawWall(ctx);
635  
636 <= -10 && direction === LEFT) {< 10000) { for (i = 0; i < height; i += 1) {
637 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) { for (j = 0; j < width; j += 1) {
638 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { drawBlock(i, j, ctx);
639 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
640 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
641 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { };
642  
643 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function drawBlock(y, x, ctx) {
644  
645 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { var layout = map[y][x];
646  
647 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { if (layout === Pacman.PILL) {
648 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { return;
649 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
650  
651 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.beginPath();
652  
653 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { if (layout === Pacman.EMPTY || layout === Pacman.BLOCK ||
654 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { layout === Pacman.BISCUIT) {
655  
656 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillStyle = "#000";
657 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillRect((x * blockSize), (y * blockSize),
658 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { blockSize, blockSize);
659  
660 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { if (layout === Pacman.BISCUIT) {
661 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillStyle = "#FFF";
662 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillRect((x * blockSize) + (blockSize / 2.5),
663 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { (y * blockSize) + (blockSize / 2.5),
664 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { blockSize / 6, blockSize / 6);
665 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
666 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
667 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.closePath();
668 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { };
669  
670 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { reset();
671  
672 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { return {
673 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "draw" : draw,
674 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "drawBlock" : drawBlock,
675 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "drawPills" : drawPills,
676 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "block" : block,
677 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "setBlock" : setBlock,
678 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "reset" : reset,
679 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "isWallSpace" : isWall,
680 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "isFloorSpace" : isFloorSpace,
681 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "height" : height,
682 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "width" : width,
683 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { "blockSize" : blockSize
684 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { };
685 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {};
686  
687 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {var PACMAN = (function () {
688  
689 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { var state = WAITING,
690 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ghosts = [],
691 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ghostSpecs = ["#00FFDE", "#FF0000", "#FFB8DE", "#FFB847"],
692 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { eatenCount = 0,
693 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { level = 0,
694 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { tick = 0,
695 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ghostPos, userPos,
696 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { stateChanged = true,
697 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { timerStart = null,
698 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { lastTime = 0,
699 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx = null,
700 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { timer = null,
701 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { map = null,
702 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { user = null,
703 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { stored = null;
704  
705 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function getTick() {
706 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { return tick;
707 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { };
708  
709 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function drawScore(text, position) {
710 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillStyle = "#FFFFFF";
2 office 711 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.font = "12px monospace";
1 office 712 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillText(text,
713 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { (position["new"]["x"] / 10) * map.blockSize,
714 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ((position["new"]["y"] + 5) / 10) * map.blockSize);
715 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
716  
717 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function dialog(text) {
718 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillStyle = "#FFFF00";
2 office 719 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.font = "14px monospace";
1 office 720 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { var width = ctx.measureText(text).width,
721 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { x = ((map.width * map.blockSize) - width) / 2;
722 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillText(text, x, (map.height * 10) + 8);
723 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
724  
725 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function startLevel() {
726 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { user.resetPosition();
727 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { for (var i = 0; i < ghosts.length; i += 1) {
728 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ghosts[i].reset();
729 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
730 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { timerStart = tick;
731 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { setState(COUNTDOWN);
732 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
733  
734 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function startNewGame() {
735 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { setState(WAITING);
736 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { level = 1;
737 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { user.reset();
738 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { map.reset();
739 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { map.draw(ctx);
740 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { startLevel();
741 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
742  
743 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function keyDown(e) {
744 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { if (e.keyCode === KEY.N) {
745 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { startNewGame();
746 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { } else if (e.keyCode === KEY.P && state === PAUSE) {
747 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { map.draw(ctx);
748 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { setState(stored);
749 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { } else if (e.keyCode === KEY.P) {
750 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { stored = state;
751 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { setState(PAUSE);
752 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { map.draw(ctx);
753 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { dialog("Paused");
754 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { } else if (state !== PAUSE) {
755 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { return user.keyDown(e);
756 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
757 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { return true;
758 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
759  
760 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function loseLife() {
761 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { setState(WAITING);
762 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { user.loseLife();
763 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { if (user.getLives() > 0) {
764 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { startLevel();
765 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
766 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
767  
768 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function setState(nState) {
769 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { state = nState;
770 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { stateChanged = true;
771 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { };
772  
773 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function collided(user, ghost) {
774 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { return (Math.sqrt(Math.pow(ghost.x - user.x, 2) +
775 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { Math.pow(ghost.y - user.y, 2))) < 10;
776 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { };
777  
778 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function drawFooter() {
779  
780 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { var topLeft = (map.height * map.blockSize),
781 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { textBase = topLeft + 17;
782  
783 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillStyle = "#000000";
784 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillRect(0, topLeft, (map.width * map.blockSize), 30);
785  
786 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillStyle = "#FFFF00";
787  
788 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { for (var i = 0, len = user.getLives(); i < len; i++) {
789 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillStyle = "#FFFF00";
790 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.beginPath();
791 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.moveTo(150 + (25 * i) + map.blockSize / 2,
792 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { (topLeft+1) + map.blockSize / 2);
793  
794 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.arc(150 + (25 * i) + map.blockSize / 2,
795 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { (topLeft+1) + map.blockSize / 2,
796 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { map.blockSize / 2, Math.PI * 0.25, Math.PI * 1.75, false);
797 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fill();
798 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
799  
2 office 800 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillStyle = "#FF0000";
801 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.font = "bold 16px monospace";
1 office 802 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { //ctx.fillText("♪", 10, textBase);
803 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillText("s", 10, textBase);
804  
805 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillStyle = "#FFFF00";
2 office 806 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.font = "14px monospace";
1 office 807 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillText("Score: " + user.theScore(), 30, textBase);
808 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ctx.fillText("Level: " + level, 260, textBase);
809 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
810  
811 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function redrawBlock(pos) {
812 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { map.drawBlock(Math.floor(pos.y/10), Math.floor(pos.x/10), ctx);
813 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { map.drawBlock(Math.ceil(pos.y/10), Math.ceil(pos.x/10), ctx);
814 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { }
815  
816 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { function mainDraw() {
817  
818 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { var diff, u, i, len, nScore;
819  
820 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { ghostPos = [];
821  
822 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) { for (i = 0, len = ghosts.length; i < len; i += 1) {
823 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) { ghostPos.push(ghosts[i].move(ctx));
824 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) { }
825 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) { u = user.move(ctx);
826  
827 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) { for (i = 0, len = ghosts.length; i < len; i += 1) {
828 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) { redrawBlock(ghostPos[i].old);
829 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) { }
830 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) { redrawBlock(u.old);
831  
832 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) { for (i = 0, len = ghosts.length; i < len; i += 1) {
833 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { ghosts[i].draw(ctx);
834 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
835 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { user.draw(ctx);
836  
837 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { userPos = u["new"];
838  
839 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { for (i = 0, len = ghosts.length; i < len; i += 1) {
840 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (collided(userPos, ghostPos[i]["new"])) {
2 office 841 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (ghosts[i].isVunerable()) {
1 office 842 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { ghosts[i].eat();
843 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { eatenCount += 1;
844 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { nScore = eatenCount * 50;
845 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { drawScore(nScore, ghostPos[i]);
846 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { user.addScore(nScore);
847 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { setState(EATEN_PAUSE);
848 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { timerStart = tick;
849 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { } else if (ghosts[i].isDangerous()) {
850 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { setState(DYING);
851 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { timerStart = tick;
852 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
853 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
854 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
855 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { };
856  
857 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { function mainLoop() {
858  
859 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { var diff;
860  
861 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (state !== PAUSE) {
862 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { ++tick;
863 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
864  
865 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { map.drawPills(ctx);
866  
867 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (state === PLAYING) {
868 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { mainDraw();
869 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { } else if (state === WAITING && stateChanged) {
870 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { stateChanged = false;
871 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { map.draw(ctx);
872 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { dialog("Press N to start a New game");
873 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { } else if (state === EATEN_PAUSE &&
874 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { (tick - timerStart) > (Pacman.FPS / 3)) {
875 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { map.draw(ctx);
876 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { setState(PLAYING);
877 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { } else if (state === DYING) {
878 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (tick - timerStart > (Pacman.FPS * 2)) {
879 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { loseLife();
880 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { } else {
881 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { redrawBlock(userPos);
882 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { for (i = 0, len = ghosts.length; i < len; i += 1) {
883 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { redrawBlock(ghostPos[i].old);
884 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { ghostPos.push(ghosts[i].draw(ctx));
885 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
886 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { user.drawDead(ctx, (tick - timerStart) / (Pacman.FPS * 2));
887 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
888 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { } else if (state === COUNTDOWN) {
889  
890 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { diff = 5 + Math.floor((timerStart - tick) / Pacman.FPS);
891  
892 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (diff === 0) {
893 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { map.draw(ctx);
894 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { setState(PLAYING);
895 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { } else {
896 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (diff !== lastTime) {
897 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { lastTime = diff;
898 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { map.draw(ctx);
899 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { dialog("Starting in: " + diff);
900 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
901 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
902 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
903  
904 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { drawFooter();
905 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
906  
907 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { function eatenPill() {
908 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { timerStart = tick;
909 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { eatenCount = 0;
910 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { for (i = 0; i < ghosts.length; i += 1) {
911 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { ghosts[i].makeEatable(ctx);
912 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
913 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { };
914  
915 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { function completedLevel() {
916 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { setState(WAITING);
917 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { level += 1;
918 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { map.reset();
919 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { user.newLevel();
920 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { startLevel();
921 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { };
922  
923 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { function keyPress(e) {
924 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (state !== WAITING && state !== PAUSE) {
925 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { e.preventDefault();
926 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { e.stopPropagation();
927 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
928 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { };
929  
930 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { function init(wrapper, root) {
931  
932 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { var i, len, ghost,
933 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { blockSize = wrapper.offsetWidth / 19,
934 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { canvas = document.createElement("canvas");
935  
936 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { canvas.setAttribute("width", (blockSize * 19) + "px");
937 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { canvas.setAttribute("height", (blockSize * 22) + 30 + "px");
938  
939 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { wrapper.appendChild(canvas);
940  
941 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { ctx = canvas.getContext('2d');
942  
943 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { map = new Pacman.Map(blockSize);
944 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { user = new Pacman.User({
945 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { "completedLevel" : completedLevel,
946 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { "eatenPill" : eatenPill
947 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }, map);
948  
949 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { for (i = 0, len = ghostSpecs.length; i < len; i += 1) {
950 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { ghost = new Pacman.Ghost({"getTick":getTick}, map, ghostSpecs[i]);
951 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { ghosts.push(ghost);
952 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
953  
954 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { map.draw(ctx);
955  
956 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { dialog("Press N to Start");
957  
958 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { document.addEventListener("keydown", keyDown, true);
959 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { document.addEventListener("keypress", keyPress, true);
960  
961 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { timer = window.setInterval(mainLoop, 1000 / Pacman.FPS);
962 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { };
963  
964 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { return {
965 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { "init" : init
966 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { };
967  
968 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {}());
969  
970 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {/* Human readable keyCode index */
971 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {var KEY = {'BACKSPACE': 8, 'TAB': 9, 'NUM_PAD_CLEAR': 12, 'ENTER': 13, 'SHIFT': 16, 'CTRL': 17, 'ALT': 18, 'PAUSE': 19, 'CAPS_LOCK': 20, 'ESCAPE': 27, 'SPACEBAR': 32, 'PAGE_UP': 33, 'PAGE_DOWN': 34, 'END': 35, 'HOME': 36, 'ARROW_LEFT': 37, 'ARROW_UP': 38, 'ARROW_RIGHT': 39, 'ARROW_DOWN': 40, 'PRINT_SCREEN': 44, 'INSERT': 45, 'DELETE': 46, 'SEMICOLON': 59, 'WINDOWS_LEFT': 91, 'WINDOWS_RIGHT': 92, 'SELECT': 93, 'NUM_PAD_ASTERISK': 106, 'NUM_PAD_PLUS_SIGN': 107, 'NUM_PAD_HYPHEN-MINUS': 109, 'NUM_PAD_FULL_STOP': 110, 'NUM_PAD_SOLIDUS': 111, 'NUM_LOCK': 144, 'SCROLL_LOCK': 145, 'SEMICOLON': 186, 'EQUALS_SIGN': 187, 'COMMA': 188, 'HYPHEN-MINUS': 189, 'FULL_STOP': 190, 'SOLIDUS': 191, 'GRAVE_ACCENT': 192, 'LEFT_SQUARE_BRACKET': 219, 'REVERSE_SOLIDUS': 220, 'RIGHT_SQUARE_BRACKET': 221, 'APOSTROPHE': 222};
972  
973 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {(function () {
974 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { /* 0 - 9 */
975 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { for (var i = 48; i <= 57; i++) {
976 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { KEY['' + (i - 48)] = i;
977 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
978 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { /* A - Z */
979 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { for (i = 65; i <= 90; i++) {
980 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { KEY['' + String.fromCharCode(i)] = i;
981 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
982 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { /* NUM_PAD_0 - NUM_PAD_9 */
983 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { for (i = 96; i <= 105; i++) {
984 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { KEY['NUM_PAD_' + (i - 96)] = i;
985 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
986 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { /* F1 - F12 */
987 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { for (i = 112; i <= 123; i++) {
988 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { KEY['F' + (i - 112 + 1)] = i;
989 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
990 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {})();
991  
992 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {Pacman.WALL = 0;
993 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {Pacman.BISCUIT = 1;
994 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {Pacman.EMPTY = 2;
995 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {Pacman.BLOCK = 3;
996 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {Pacman.PILL = 4;
997  
998 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {Pacman.MAP = [
999 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
1000 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
1001 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 4, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 4, 0],
1002 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0],
1003 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
1004 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0],
1005 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0],
1006 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0],
1007 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [2, 2, 2, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 2, 2, 2],
1008 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 0, 0, 0, 1, 0, 1, 0, 0, 3, 0, 0, 1, 0, 1, 0, 0, 0, 0],
1009 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [2, 2, 2, 2, 1, 1, 1, 0, 3, 3, 3, 0, 1, 1, 1, 2, 2, 2, 2],
1010 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0],
1011 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [2, 2, 2, 0, 1, 0, 1, 1, 1, 2, 1, 1, 1, 0, 1, 0, 2, 2, 2],
1012 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0],
1013 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
1014 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0],
1015 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 4, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 4, 0],
1016 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0],
1017 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0],
1018 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0],
1019 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
1020 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
1021 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {];
1022  
1023 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {Pacman.WALLS = [
1024  
1025 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [0, 9.5]}, {"line": [3, 9.5]},
1026 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [3.5, 9.5, 3.5, 9]}, {"line": [3.5, 8]},
1027 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [3.5, 7.5, 3, 7.5]}, {"line": [1, 7.5]},
1028 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [0.5, 7.5, 0.5, 7]}, {"line": [0.5, 1]},
1029 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [0.5, 0.5, 1, 0.5]}, {"line": [9, 0.5]},
1030 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [9.5, 0.5, 9.5, 1]}, {"line": [9.5, 3.5]}],
1031  
1032 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [9.5, 1]},
1033 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [9.5, 0.5, 10, 0.5]}, {"line": [18, 0.5]},
1034 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [18.5, 0.5, 18.5, 1]}, {"line": [18.5, 7]},
1035 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [18.5, 7.5, 18, 7.5]}, {"line": [16, 7.5]},
1036 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [15.5, 7.5, 15.5, 8]}, {"line": [15.5, 9]},
1037 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [15.5, 9.5, 16, 9.5]}, {"line": [19, 9.5]}],
1038  
1039 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [2.5, 5.5]}, {"line": [3.5, 5.5]}],
1040  
1041 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [3, 2.5]},
1042 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [3.5, 2.5, 3.5, 3]},
1043 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [3.5, 3.5, 3, 3.5]},
1044 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [2.5, 3.5, 2.5, 3]},
1045 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [2.5, 2.5, 3, 2.5]}],
1046  
1047 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [15.5, 5.5]}, {"line": [16.5, 5.5]}],
1048  
1049 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [16, 2.5]}, {"curve": [16.5, 2.5, 16.5, 3]},
1050 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [16.5, 3.5, 16, 3.5]}, {"curve": [15.5, 3.5, 15.5, 3]},
1051 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [15.5, 2.5, 16, 2.5]}],
1052  
1053 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [6, 2.5]}, {"line": [7, 2.5]}, {"curve": [7.5, 2.5, 7.5, 3]},
1054 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [7.5, 3.5, 7, 3.5]}, {"line": [6, 3.5]},
1055 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [5.5, 3.5, 5.5, 3]}, {"curve": [5.5, 2.5, 6, 2.5]}],
1056  
1057 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [12, 2.5]}, {"line": [13, 2.5]}, {"curve": [13.5, 2.5, 13.5, 3]},
1058 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [13.5, 3.5, 13, 3.5]}, {"line": [12, 3.5]},
1059 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [11.5, 3.5, 11.5, 3]}, {"curve": [11.5, 2.5, 12, 2.5]}],
1060  
1061 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [7.5, 5.5]}, {"line": [9, 5.5]}, {"curve": [9.5, 5.5, 9.5, 6]},
1062 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [9.5, 7.5]}],
1063 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [9.5, 6]}, {"curve": [9.5, 5.5, 10.5, 5.5]},
1064 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [11.5, 5.5]}],
1065  
1066  
1067 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [5.5, 5.5]}, {"line": [5.5, 7]}, {"curve": [5.5, 7.5, 6, 7.5]},
1068 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [7.5, 7.5]}],
1069 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [6, 7.5]}, {"curve": [5.5, 7.5, 5.5, 8]}, {"line": [5.5, 9.5]}],
1070  
1071 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [13.5, 5.5]}, {"line": [13.5, 7]},
1072 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [13.5, 7.5, 13, 7.5]}, {"line": [11.5, 7.5]}],
1073 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [13, 7.5]}, {"curve": [13.5, 7.5, 13.5, 8]},
1074 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [13.5, 9.5]}],
1075  
1076 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [0, 11.5]}, {"line": [3, 11.5]}, {"curve": [3.5, 11.5, 3.5, 12]},
1077 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [3.5, 13]}, {"curve": [3.5, 13.5, 3, 13.5]}, {"line": [1, 13.5]},
1078 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [0.5, 13.5, 0.5, 14]}, {"line": [0.5, 17]},
1079 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [0.5, 17.5, 1, 17.5]}, {"line": [1.5, 17.5]}],
1080 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [1, 17.5]}, {"curve": [0.5, 17.5, 0.5, 18]}, {"line": [0.5, 21]},
1081 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [0.5, 21.5, 1, 21.5]}, {"line": [18, 21.5]},
1082 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [18.5, 21.5, 18.5, 21]}, {"line": [18.5, 18]},
1083 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [18.5, 17.5, 18, 17.5]}, {"line": [17.5, 17.5]}],
1084 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [18, 17.5]}, {"curve": [18.5, 17.5, 18.5, 17]},
1085 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [18.5, 14]}, {"curve": [18.5, 13.5, 18, 13.5]},
1086 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [16, 13.5]}, {"curve": [15.5, 13.5, 15.5, 13]},
1087 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [15.5, 12]}, {"curve": [15.5, 11.5, 16, 11.5]},
1088 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [19, 11.5]}],
1089  
1090 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [5.5, 11.5]}, {"line": [5.5, 13.5]}],
1091 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [13.5, 11.5]}, {"line": [13.5, 13.5]}],
1092  
1093 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [2.5, 15.5]}, {"line": [3, 15.5]},
1094 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [3.5, 15.5, 3.5, 16]}, {"line": [3.5, 17.5]}],
1095 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [16.5, 15.5]}, {"line": [16, 15.5]},
1096 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [15.5, 15.5, 15.5, 16]}, {"line": [15.5, 17.5]}],
1097  
1098 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [5.5, 15.5]}, {"line": [7.5, 15.5]}],
1099 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [11.5, 15.5]}, {"line": [13.5, 15.5]}],
1100  
1101 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [2.5, 19.5]}, {"line": [5, 19.5]},
1102 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [5.5, 19.5, 5.5, 19]}, {"line": [5.5, 17.5]}],
1103 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [5.5, 19]}, {"curve": [5.5, 19.5, 6, 19.5]},
1104 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [7.5, 19.5]}],
1105  
1106 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [11.5, 19.5]}, {"line": [13, 19.5]},
1107 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [13.5, 19.5, 13.5, 19]}, {"line": [13.5, 17.5]}],
1108 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [13.5, 19]}, {"curve": [13.5, 19.5, 14, 19.5]},
1109 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [16.5, 19.5]}],
1110  
1111 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [7.5, 13.5]}, {"line": [9, 13.5]},
1112 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [9.5, 13.5, 9.5, 14]}, {"line": [9.5, 15.5]}],
1113 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [9.5, 14]}, {"curve": [9.5, 13.5, 10, 13.5]},
1114 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [11.5, 13.5]}],
1115  
1116 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [7.5, 17.5]}, {"line": [9, 17.5]},
1117 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"curve": [9.5, 17.5, 9.5, 18]}, {"line": [9.5, 19.5]}],
1118 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [9.5, 18]}, {"curve": [9.5, 17.5, 10, 17.5]},
1119 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [11.5, 17.5]}],
1120  
1121 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { [{"move": [8.5, 9.5]}, {"line": [8, 9.5]}, {"curve": [7.5, 9.5, 7.5, 10]},
1122 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [7.5, 11]}, {"curve": [7.5, 11.5, 8, 11.5]},
1123 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [11, 11.5]}, {"curve": [11.5, 11.5, 11.5, 11]},
1124 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [11.5, 10]}, {"curve": [11.5, 9.5, 11, 9.5]},
1125 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { {"line": [10.5, 9.5]}]
1126 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {];
1127  
1128 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {Object.prototype.clone = function () {
1129 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { var i, newObj = (this instanceof Array) ? [] : {};
1130 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { for (i in this) {
1131 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (i === 'clone') {
1132 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { continue;
1133 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
1134 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { if (this[i] && typeof this[i] === "object") {
1135 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { newObj[i] = this[i].clone();
1136 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { } else {
1137 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { newObj[i] = this[i];
1138 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
1139 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { }
1140 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) { return newObj;
1141 <= -10 && direction === LEFT) {< 10000) { < height; i += 1) {< width; j += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {< len; i += 1) {};