minimal-web-templates

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 2  →  ?path2? @ 3
/games/pacman/pacman.html
@@ -0,0 +1,75 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>HTML5 Pacman</title>
<style type="text/css">
#pacman {
height:450px;
width:342px;
margin:20px auto;
}
</style>
</head>
<body>
<!-- Game will be rendered within the "pacman" container. -->
<div id="pacman"></div>
<!-- Nuked with Uglify.js -->
<script> /* http://grimore.org/web/minimal_templates/games/pacman */
var PACMAN,KEY,NONE=4,UP=3,LEFT=2,DOWN=1,RIGHT=11,WAITING=5,PAUSE=6,PLAYING=7,COUNTDOWN=8,EATEN_PAUSE=9,DYING=10,Pacman={}
Pacman.FPS=30,Pacman.Ghost=function(e,n,l){function t(e,n){var l=r()?1:c()?4:2,t=e===LEFT&&-l||e===RIGHT&&l||0,o=e===DOWN&&l||e===UP&&-l||0
return{x:i(n.x,t),y:i(n.y,o)}}function i(e,n){var l=e%10,t=l+n
return 0!==l&&t>10?e+(10-l):l>0&&0>t?e-l:e+n}function r(){return null!==N}function o(){return null===y}function c(){return null===N&&null!==y}function u(){var e=A===LEFT||A===RIGHT?[UP,DOWN]:[LEFT,RIGHT]
return e[Math.floor(2*Math.random())]}function a(){y=null,N=null,h={x:90,y:80},A=u(),R=u()}function v(e){return e%10===0}function f(e){return e===LEFT&&RIGHT||e===RIGHT&&LEFT||e===UP&&DOWN||UP}function P(){A=f(A),N=e.getTick()}function T(){N=null,y=e.getTick()}function S(e){return Math.round(e/10)}function m(e,n){var l=e%10
return 0===l?e:n===RIGHT||n===DOWN?e+(10-l):e-l}function E(e){return v(e.y)&&v(e.x)}function s(n){return(e.getTick()-n)/Pacman.FPS}function F(){return N?s(N)>5&&e.getTick()%20>10?"#FFFFFF":"#0000BB":y?"#222":l}function d(l){var t,i,r,o,c,u,a,v=n.blockSize,f=h.y/10*v,P=h.x/10*v
N&&s(N)>8&&(N=null),y&&s(y)>3&&(y=null),t=P+v,i=f+v-3,r=v/10,o=e.getTick()%10>5?3:-3,c=e.getTick()%10>5?-3:3,l.fillStyle=F(),l.beginPath(),l.moveTo(P,i),l.quadraticCurveTo(P,f,P+v/2,f),l.quadraticCurveTo(P+v,f,P+v,i),l.quadraticCurveTo(t-1*r,i+o,t-2*r,i),l.quadraticCurveTo(t-3*r,i+c,t-4*r,i),l.quadraticCurveTo(t-5*r,i+o,t-6*r,i),l.quadraticCurveTo(t-7*r,i+c,t-8*r,i),l.quadraticCurveTo(t-9*r,i+o,t-10*r,i),l.closePath(),l.fill(),l.beginPath(),l.fillStyle="#FFF",l.arc(P+6,f+6,v/6,0,300,!1),l.arc(P+v-6,f+6,v/6,0,300,!1),l.closePath(),l.fill(),u=v/12,a={},a[RIGHT]=[u,0],a[LEFT]=[-u,0],a[UP]=[0,-u],a[DOWN]=[0,u],l.beginPath(),l.fillStyle="#000",l.arc(P+6+a[A][0],f+6+a[A][1],v/15,0,300,!1),l.arc(P+v-6+a[A][0],f+6+a[A][1],v/15,0,300,!1),l.closePath(),l.fill()}function I(e){return 100===e.y&&e.x>=190&&A===RIGHT?{y:100,x:-10}:100===e.y&&e.x<=-10&&A===LEFT?h={y:100,x:190}:!1}function L(e){var l,i=h,r=E(h),o=null
return R!==A&&(o=t(R,h),r&&n.isFloorSpace({y:S(m(o.y,R)),x:S(m(o.x,R))})?A=R:o=null),null===o&&(o=t(A,h)),r&&n.isWallSpace({y:S(m(o.y,A)),x:S(m(o.x,A))})?(R=u(),L(e)):(h=o,l=I(h),l&&(h=l),R=u(),{"new":h,old:i})}var h=null,A=null,N=null,y=null,R=null
return{eat:T,isVunerable:r,isDangerous:o,makeEatable:P,reset:a,move:L,draw:d}},Pacman.User=function(e,n){function l(e){O+=e,O>=1e4&&1e4>O-e&&(x+=1)}function t(){return O}function i(){x-=1}function r(){return x}function o(){O=0,x=3,c()}function c(){u(),y=0}function u(){A={x:90,y:120},N=LEFT,R=LEFT}function a(){o(),u()}function v(e){return"undefined"!=typeof U[e.keyCode]?(R=U[e.keyCode],e.preventDefault(),e.stopPropagation(),!1):!0}function f(e,n){return{x:n.x+(e===LEFT&&-2||e===RIGHT&&2||0),y:n.y+(e===DOWN&&2||e===UP&&-2||0)}}function P(e){return e%10===0}function T(e){return Math.round(e/10)}function S(e,n){var l=e%10
return 0===l?e:n===RIGHT||n===DOWN?e+(10-l):e-l}function m(e,n){return{y:T(S(e.y,n)),x:T(S(e.x,n))}}function E(e){return P(e.y)&&P(e.x)}function s(e,n){return!((e!==LEFT&&e!==RIGHT||n!==LEFT&&n!==RIGHT)&&(e!==UP&&e!==DOWN||n!==UP&&n!==DOWN))}function F(t){var i=null,r=null,o=A,c=null
return R!==N&&(i=f(R,A),s(R,N)||E(A)&&n.isFloorSpace(m(i,R))?N=R:i=null),null===i&&(i=f(N,A)),E(A)&&n.isWallSpace(m(i,N))&&(N=NONE),N===NONE?{"new":A,old:A}:(100===i.y&&i.x>=190&&N===RIGHT&&(i={y:100,x:-10}),100===i.y&&i.x<=-12&&N===LEFT&&(i={y:100,x:190}),A=i,r=m(A,N),c=n.block(r),((d(A.y)||d(A.x))&&c===Pacman.BISCUIT||c===Pacman.PILL)&&(n.setBlock(r,Pacman.EMPTY),l(c===Pacman.BISCUIT?10:50),y+=1,182===y&&e.completedLevel(),c===Pacman.PILL&&e.eatenPill()),{"new":A,old:o})}function d(e){var n=e%10
return n>3||7>n}function I(e,n){return e==RIGHT&&n.x%10<5?{start:.25,end:1.75,direction:!1}:e===DOWN&&n.y%10<5?{start:.75,end:2.25,direction:!1}:e===UP&&n.y%10<5?{start:1.25,end:1.75,direction:!0}:e===LEFT&&n.x%10<5?{start:.75,end:1.25,direction:!0}:{start:0,end:2,direction:!1}}function L(e,l){var t=n.blockSize,i=t/2
l>=1||(e.fillStyle="#FFFF00",e.beginPath(),e.moveTo(A.x/10*t+i,A.y/10*t+i),e.arc(A.x/10*t+i,A.y/10*t+i,i,0,2*Math.PI*l,!0),e.fill())}function h(e){var l=n.blockSize,t=I(N,A)
e.fillStyle="#FFFF00",e.beginPath(),e.moveTo(A.x/10*l+l/2,A.y/10*l+l/2),e.arc(A.x/10*l+l/2,A.y/10*l+l/2,l/2,Math.PI*t.start,Math.PI*t.end,t.direction),e.fill()}var A=null,N=null,y=null,R=null,x=null,O=5,U={}
return U[KEY.ARROW_LEFT]=LEFT,U[KEY.ARROW_UP]=UP,U[KEY.ARROW_RIGHT]=RIGHT,U[KEY.ARROW_DOWN]=DOWN,o(),{draw:h,drawDead:L,loseLife:i,getLives:r,score:O,addScore:l,theScore:t,keyDown:v,move:F,newLevel:c,reset:a,resetPosition:u}},Pacman.Map=function(e){function n(e,n){return e>=0&&P>e&&n>=0&&T>n}function l(e){return n(e.y,e.x)&&E[e.y][e.x]===Pacman.WALL}function t(e){if(!n(e.y,e.x))return!1
var l=E[e.y][e.x]
return l===Pacman.EMPTY||l===Pacman.BISCUIT||l===Pacman.PILL}function r(e){var n,l,t,i
for(e.strokeStyle="#0000FF",e.lineWidth=5,e.lineCap="round",n=0;n<Pacman.WALLS.length;n+=1){for(i=Pacman.WALLS[n],e.beginPath(),l=0;l<i.length;l+=1)t=i[l],t.move?e.moveTo(t.move[0]*S,t.move[1]*S):t.line?e.lineTo(t.line[0]*S,t.line[1]*S):t.curve&&e.quadraticCurveTo(t.curve[0]*S,t.curve[1]*S,t.curve[2]*S,t.curve[3]*S)
e.stroke()}}function o(){E=Pacman.MAP.clone(),P=E.length,T=E[0].length}function c(e){return E[e.y][e.x]}function u(e,n){E[e.y][e.x]=n}function a(e){for(++m>30&&(m=0),i=0;i<P;i+=1)for(j=0;j<T;j+=1)E[i][j]===Pacman.PILL&&(e.beginPath(),e.fillStyle="#000",e.fillRect(j*S,i*S,S,S),e.fillStyle="#FFF",e.arc(j*S+S/2,i*S+S/2,Math.abs(5-m/3),0,2*Math.PI,!1),e.fill(),e.closePath())}function v(e){var n,l,t=S
for(e.fillStyle="#000",e.fillRect(0,0,T*t,P*t),r(e),n=0;P>n;n+=1)for(l=0;T>l;l+=1)f(n,l,e)}function f(e,n,l){var t=E[e][n]
t!==Pacman.PILL&&(l.beginPath(),(t===Pacman.EMPTY||t===Pacman.BLOCK||t===Pacman.BISCUIT)&&(l.fillStyle="#000",l.fillRect(n*S,e*S,S,S),t===Pacman.BISCUIT&&(l.fillStyle="#FFF",l.fillRect(n*S+S/2.5,e*S+S/2.5,S/6,S/6))),l.closePath())}var P=null,T=null,S=e,m=0,E=null
return o(),{draw:v,drawBlock:f,drawPills:a,block:c,setBlock:u,reset:o,isWallSpace:l,isFloorSpace:t,height:P,width:T,blockSize:S}},PACMAN=function(){function e(){return y}function n(e,n){U.fillStyle="#FFFFFF",U.font="12px monospace",U.fillText(e,n["new"].x/10*W.blockSize,(n["new"].y+5)/10*W.blockSize)}function l(e){U.fillStyle="#FFFF00",U.font="14px monospace"
var n=U.measureText(e).width,l=(W.width*W.blockSize-n)/2
U.fillText(e,l,10*W.height+8)}function t(){w.resetPosition()
for(var e=0;e<L.length;e+=1)L[e].reset()
x=y,u(COUNTDOWN)}function r(){u(WAITING),N=1,w.reset(),W.reset(),W.draw(U),t()}function o(e){if(e.keyCode===KEY.N)r()
else if(e.keyCode===KEY.P&&I===PAUSE)W.draw(U),u(D)
else if(e.keyCode===KEY.P)D=I,u(PAUSE),W.draw(U),l("Paused")
else if(I!==PAUSE)return w.keyDown(e)
return!0}function c(){u(WAITING),w.loseLife(),w.getLives()>0&&t()}function u(e){I=e,R=!0}function a(e,n){return Math.sqrt(Math.pow(n.x-e.x,2)+Math.pow(n.y-e.y,2))<10}function v(){var e,n,l=W.height*W.blockSize,t=l+17
for(U.fillStyle="#000000",U.fillRect(0,l,W.width*W.blockSize,30),U.fillStyle="#FFFF00",e=0,n=w.getLives();n>e;e++)U.fillStyle="#FFFF00",U.beginPath(),U.moveTo(150+25*e+W.blockSize/2,l+1+W.blockSize/2),U.arc(150+25*e+W.blockSize/2,l+1+W.blockSize/2,W.blockSize/2,.25*Math.PI,1.75*Math.PI,!1),U.fill()
U.fillStyle="#FF0000",U.font="bold 16px monospace",U.fillText("s",10,t),U.fillStyle="#FFFF00",U.font="14px monospace",U.fillText("Score: "+w.theScore(),30,t),U.fillText("Level: "+N,260,t)}function f(e){W.drawBlock(Math.floor(e.y/10),Math.floor(e.x/10),U),W.drawBlock(Math.ceil(e.y/10),Math.ceil(e.x/10),U)}function P(){var e,l,t,i
for(F=[],l=0,t=L.length;t>l;l+=1)F.push(L[l].move(U))
for(e=w.move(U),l=0,t=L.length;t>l;l+=1)f(F[l].old)
for(f(e.old),l=0,t=L.length;t>l;l+=1)L[l].draw(U)
for(w.draw(U),d=e["new"],l=0,t=L.length;t>l;l+=1)a(d,F[l]["new"])&&(L[l].isVunerable()?(L[l].eat(),A+=1,i=50*A,n(i,F[l]),w.addScore(i),u(EATEN_PAUSE),x=y):L[l].isDangerous()&&(u(DYING),x=y))}function T(){var e
if(I!==PAUSE&&++y,W.drawPills(U),I===PLAYING)P()
else if(I===WAITING&&R)R=!1,W.draw(U),l("Press N to start a New game")
else if(I===EATEN_PAUSE&&y-x>Pacman.FPS/3)W.draw(U),u(PLAYING)
else if(I===DYING)if(y-x>2*Pacman.FPS)c()
else{for(f(d),i=0,len=L.length;i<len;i+=1)f(F[i].old),F.push(L[i].draw(U))
w.drawDead(U,(y-x)/(2*Pacman.FPS))}else I===COUNTDOWN&&(e=5+Math.floor((x-y)/Pacman.FPS),0===e?(W.draw(U),u(PLAYING)):e!==O&&(O=e,W.draw(U),l("Starting in: "+e)))
v()}function S(){for(x=y,A=0,i=0;i<L.length;i+=1)L[i].makeEatable(U)}function m(){u(WAITING),N+=1,W.reset(),w.newLevel(),t()}function E(e){I!==WAITING&&I!==PAUSE&&(e.preventDefault(),e.stopPropagation())}function s(n,t){var i,r,c,u=n.offsetWidth/19,a=document.createElement("canvas")
for(a.setAttribute("width",19*u+"px"),a.setAttribute("height",22*u+30+"px"),n.appendChild(a),U=a.getContext("2d"),W=new Pacman.Map(u),w=new Pacman.User({completedLevel:m,eatenPill:S},W),i=0,r=h.length;r>i;i+=1)c=new Pacman.Ghost({getTick:e},W,h[i]),L.push(c)
W.draw(U),l("Press N to Start"),document.addEventListener("keydown",o,!0),document.addEventListener("keypress",E,!0),C=window.setInterval(T,1e3/Pacman.FPS)}var F,d,I=WAITING,L=[],h=["#00FFDE","#FF0000","#FFB8DE","#FFB847"],A=0,N=0,y=0,R=!0,x=null,O=0,U=null,C=null,W=null,w=null,D=null
return{init:s}}(),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},function(){for(var e=48;57>=e;e++)KEY[""+(e-48)]=e
for(e=65;90>=e;e++)KEY[""+String.fromCharCode(e)]=e
for(e=96;105>=e;e++)KEY["NUM_PAD_"+(e-96)]=e
for(e=112;123>=e;e++)KEY["F"+(e-112+1)]=e}(),Pacman.WALL=0,Pacman.BISCUIT=1,Pacman.EMPTY=2,Pacman.BLOCK=3,Pacman.PILL=4,Pacman.MAP=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0],[0,4,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,4,0],[0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0],[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],[0,1,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,1,0],[0,1,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,0],[0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0],[2,2,2,0,1,0,1,1,1,1,1,1,1,0,1,0,2,2,2],[0,0,0,0,1,0,1,0,0,3,0,0,1,0,1,0,0,0,0],[2,2,2,2,1,1,1,0,3,3,3,0,1,1,1,2,2,2,2],[0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0],[2,2,2,0,1,0,1,1,1,2,1,1,1,0,1,0,2,2,2],[0,0,0,0,1,0,1,0,0,0,0,0,1,0,1,0,0,0,0],[0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0],[0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,0,1,0],[0,4,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,4,0],[0,0,1,0,1,0,1,0,0,0,0,0,1,0,1,0,1,0,0],[0,1,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,0],[0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,1,0],[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],Pacman.WALLS=[[{move:[0,9.5]},{line:[3,9.5]},{curve:[3.5,9.5,3.5,9]},{line:[3.5,8]},{curve:[3.5,7.5,3,7.5]},{line:[1,7.5]},{curve:[.5,7.5,.5,7]},{line:[.5,1]},{curve:[.5,.5,1,.5]},{line:[9,.5]},{curve:[9.5,.5,9.5,1]},{line:[9.5,3.5]}],[{move:[9.5,1]},{curve:[9.5,.5,10,.5]},{line:[18,.5]},{curve:[18.5,.5,18.5,1]},{line:[18.5,7]},{curve:[18.5,7.5,18,7.5]},{line:[16,7.5]},{curve:[15.5,7.5,15.5,8]},{line:[15.5,9]},{curve:[15.5,9.5,16,9.5]},{line:[19,9.5]}],[{move:[2.5,5.5]},{line:[3.5,5.5]}],[{move:[3,2.5]},{curve:[3.5,2.5,3.5,3]},{curve:[3.5,3.5,3,3.5]},{curve:[2.5,3.5,2.5,3]},{curve:[2.5,2.5,3,2.5]}],[{move:[15.5,5.5]},{line:[16.5,5.5]}],[{move:[16,2.5]},{curve:[16.5,2.5,16.5,3]},{curve:[16.5,3.5,16,3.5]},{curve:[15.5,3.5,15.5,3]},{curve:[15.5,2.5,16,2.5]}],[{move:[6,2.5]},{line:[7,2.5]},{curve:[7.5,2.5,7.5,3]},{curve:[7.5,3.5,7,3.5]},{line:[6,3.5]},{curve:[5.5,3.5,5.5,3]},{curve:[5.5,2.5,6,2.5]}],[{move:[12,2.5]},{line:[13,2.5]},{curve:[13.5,2.5,13.5,3]},{curve:[13.5,3.5,13,3.5]},{line:[12,3.5]},{curve:[11.5,3.5,11.5,3]},{curve:[11.5,2.5,12,2.5]}],[{move:[7.5,5.5]},{line:[9,5.5]},{curve:[9.5,5.5,9.5,6]},{line:[9.5,7.5]}],[{move:[9.5,6]},{curve:[9.5,5.5,10.5,5.5]},{line:[11.5,5.5]}],[{move:[5.5,5.5]},{line:[5.5,7]},{curve:[5.5,7.5,6,7.5]},{line:[7.5,7.5]}],[{move:[6,7.5]},{curve:[5.5,7.5,5.5,8]},{line:[5.5,9.5]}],[{move:[13.5,5.5]},{line:[13.5,7]},{curve:[13.5,7.5,13,7.5]},{line:[11.5,7.5]}],[{move:[13,7.5]},{curve:[13.5,7.5,13.5,8]},{line:[13.5,9.5]}],[{move:[0,11.5]},{line:[3,11.5]},{curve:[3.5,11.5,3.5,12]},{line:[3.5,13]},{curve:[3.5,13.5,3,13.5]},{line:[1,13.5]},{curve:[.5,13.5,.5,14]},{line:[.5,17]},{curve:[.5,17.5,1,17.5]},{line:[1.5,17.5]}],[{move:[1,17.5]},{curve:[.5,17.5,.5,18]},{line:[.5,21]},{curve:[.5,21.5,1,21.5]},{line:[18,21.5]},{curve:[18.5,21.5,18.5,21]},{line:[18.5,18]},{curve:[18.5,17.5,18,17.5]},{line:[17.5,17.5]}],[{move:[18,17.5]},{curve:[18.5,17.5,18.5,17]},{line:[18.5,14]},{curve:[18.5,13.5,18,13.5]},{line:[16,13.5]},{curve:[15.5,13.5,15.5,13]},{line:[15.5,12]},{curve:[15.5,11.5,16,11.5]},{line:[19,11.5]}],[{move:[5.5,11.5]},{line:[5.5,13.5]}],[{move:[13.5,11.5]},{line:[13.5,13.5]}],[{move:[2.5,15.5]},{line:[3,15.5]},{curve:[3.5,15.5,3.5,16]},{line:[3.5,17.5]}],[{move:[16.5,15.5]},{line:[16,15.5]},{curve:[15.5,15.5,15.5,16]},{line:[15.5,17.5]}],[{move:[5.5,15.5]},{line:[7.5,15.5]}],[{move:[11.5,15.5]},{line:[13.5,15.5]}],[{move:[2.5,19.5]},{line:[5,19.5]},{curve:[5.5,19.5,5.5,19]},{line:[5.5,17.5]}],[{move:[5.5,19]},{curve:[5.5,19.5,6,19.5]},{line:[7.5,19.5]}],[{move:[11.5,19.5]},{line:[13,19.5]},{curve:[13.5,19.5,13.5,19]},{line:[13.5,17.5]}],[{move:[13.5,19]},{curve:[13.5,19.5,14,19.5]},{line:[16.5,19.5]}],[{move:[7.5,13.5]},{line:[9,13.5]},{curve:[9.5,13.5,9.5,14]},{line:[9.5,15.5]}],[{move:[9.5,14]},{curve:[9.5,13.5,10,13.5]},{line:[11.5,13.5]}],[{move:[7.5,17.5]},{line:[9,17.5]},{curve:[9.5,17.5,9.5,18]},{line:[9.5,19.5]}],[{move:[9.5,18]},{curve:[9.5,17.5,10,17.5]},{line:[11.5,17.5]}],[{move:[8.5,9.5]},{line:[8,9.5]},{curve:[7.5,9.5,7.5,10]},{line:[7.5,11]},{curve:[7.5,11.5,8,11.5]},{line:[11,11.5]},{curve:[11.5,11.5,11.5,11]},{line:[11.5,10]},{curve:[11.5,9.5,11,9.5]},{line:[10.5,9.5]}]],Object.prototype.clone=function(){var e,n=this instanceof Array?[]:{}
for(e in this)"clone"!==e&&(this[e]&&"object"==typeof this[e]?n[e]=this[e].clone():n[e]=this[e])
return n}
</script>
<script>
PACMAN.init(document.getElementById("pacman"), "./");
</script>
</body>
</html>