\n
\n
\n
\n
\n \n
\n\n \n
\n\n \n
\n \n This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n Learn more about bidirectional Unicode characters<\/a>\n <\/span>\n\n\n
Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
<\/td>\n | <!DOCTYPE html><\/span><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>html<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>head<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>title<\/span>><\/span>Maintenance - Moota.co</<\/span>title<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>link<\/span> rel<\/span>="stylesheet<\/span>" type<\/span>="text/css<\/span>" href<\/span>="https://fonts.googleapis.com/css?family=Permanent+Marker<\/span>"><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>style<\/span> type<\/span>="text/css<\/span>"><\/span><\/td>\n <\/tr>\n |
<\/td>\n | body<\/span> {<\/td>\n <\/tr>\n |
<\/td>\n | background-color<\/span>:<\/span> black;<\/td>\n <\/tr>\n |
<\/td>\n | }<\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | #<\/span>pacman<\/span> {<\/td>\n <\/tr>\n |
<\/td>\n | height<\/span>:<\/span> 470px<\/span><\/span>;<\/td>\n <\/tr>\n |
<\/td>\n | width<\/span>:<\/span> 382px<\/span><\/span>;<\/td>\n <\/tr>\n |
<\/td>\n | border-radius<\/span>:<\/span> 5px<\/span><\/span>;<\/td>\n <\/tr>\n |
<\/td>\n | margin<\/span>:<\/span> 20px<\/span><\/span> auto;<\/td>\n <\/tr>\n |
<\/td>\n | }<\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | #<\/span>shim<\/span> {<\/td>\n <\/tr>\n |
<\/td>\n | font-family<\/span>:<\/span> 'Permanent Marker'<\/span>,<\/span> cursive;<\/td>\n <\/tr>\n |
<\/td>\n | position<\/span>:<\/span> absolute;<\/td>\n <\/tr>\n |
<\/td>\n | visibility<\/span>:<\/span> hidden<\/td>\n <\/tr>\n |
<\/td>\n | }<\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | h1<\/span> {<\/td>\n <\/tr>\n |
<\/td>\n | font-family<\/span>:<\/span> 'Permanent Marker'<\/span>,<\/span> cursive;<\/td>\n <\/tr>\n |
<\/td>\n | text-align<\/span>:<\/span> center;<\/td>\n <\/tr>\n |
<\/td>\n | color<\/span>:<\/span> yellow;<\/td>\n <\/tr>\n |
<\/td>\n | }<\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | body<\/span> {<\/td>\n <\/tr>\n |
<\/td>\n | width<\/span>:<\/span> 342px<\/span><\/span>;<\/td>\n <\/tr>\n |
<\/td>\n | margin<\/span>:<\/span> 0px<\/span><\/span> auto;<\/td>\n <\/tr>\n |
<\/td>\n | font-family<\/span>:<\/span> sans-serif;<\/td>\n <\/tr>\n |
<\/td>\n | }<\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | p<\/span> {<\/td>\n <\/tr>\n |
<\/td>\n | text-decoration<\/span>:<\/span> none;<\/td>\n <\/tr>\n |
<\/td>\n | color<\/span>:<\/span> #<\/span>0000FF<\/span>;<\/td>\n <\/tr>\n |
<\/td>\n | }<\/td>\n <\/tr>\n |
<\/td>\n | </<\/span>style<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | </<\/span>head<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>body<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>div<\/span> id<\/span>="shim<\/span>"><\/span>shim for font face</<\/span>div<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>h1<\/span>><\/span>Maintenance</<\/span>h1<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>p<\/span> style<\/span>="text-align:center;<\/span>"><\/span>Sedang migrasi server dan upgrade engine 23:00 s/d 05:00. Mohon doanya :)</<\/span>p<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>div<\/span> id<\/span>="pacman<\/span>"><\/span></<\/span>div<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>script<\/span> type<\/span>="text/javascript<\/span>" src<\/span>="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js<\/span>"><\/span></<\/span>script<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>script<\/span> type<\/span>="text/javascript<\/span>" src<\/span>="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js<\/span>"><\/span></<\/span>script<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | <<\/span>script<\/span> type<\/span>="text/javascript<\/span>"><\/span><\/td>\n <\/tr>\n |
<\/td>\n | /*jslint browser: true, undef: true, eqeqeq: true, nomen: true, white: true */<\/span><\/td>\n <\/tr>\n |
<\/td>\n | /*global window: false, document: false */<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | /*<\/span><\/td>\n <\/tr>\n |
<\/td>\n | * fix looped audio<\/span><\/td>\n <\/tr>\n |
<\/td>\n | * add fruits + levels<\/span><\/td>\n <\/tr>\n |
<\/td>\n | * fix what happens when a ghost is eaten (should go back to base)<\/span><\/td>\n <\/tr>\n |
<\/td>\n | * do proper ghost mechanics (blinky/wimpy etc)<\/span><\/td>\n <\/tr>\n |
<\/td>\n | */<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> NONE<\/span> =<\/span> 4<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | UP<\/span> =<\/span> 3<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | LEFT<\/span> =<\/span> 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | DOWN<\/span> =<\/span> 1<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | RIGHT<\/span> =<\/span> 11<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | WAITING<\/span> =<\/span> 5<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | PAUSE<\/span> =<\/span> 6<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | PLAYING<\/span> =<\/span> 7<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | COUNTDOWN<\/span> =<\/span> 8<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | EATEN_PAUSE<\/span> =<\/span> 9<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | DYING<\/span> =<\/span> 10<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span> =<\/span> {<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>FPS<\/span> =<\/span> 30<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>Ghost<\/span> =<\/span> function<\/span> (<\/span>game<\/span>,<\/span> map<\/span>,<\/span> colour<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> position<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | direction<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eatable<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eaten<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | due<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> getNewCoord<\/span>(<\/span>dir<\/span>,<\/span> current<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> speed<\/span> =<\/span> isVunerable<\/span>(<\/span>)<\/span> ? 1<\/span> : isHidden<\/span>(<\/span>)<\/span> ? 4<\/span> : 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | xSpeed<\/span> =<\/span> (<\/span>dir<\/span> ===<\/span> LEFT<\/span> &&<\/span> -<\/span>speed<\/span> ||<\/span> dir<\/span> ===<\/span> RIGHT<\/span> &&<\/span> speed<\/span> ||<\/span> 0<\/span>)<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ySpeed<\/span> =<\/span> (<\/span>dir<\/span> ===<\/span> DOWN<\/span> &&<\/span> speed<\/span> ||<\/span> dir<\/span> ===<\/span> UP<\/span> &&<\/span> -<\/span>speed<\/span> ||<\/span> 0<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "x"<\/span>: addBounded<\/span>(<\/span>current<\/span>.<\/span>x<\/span>,<\/span> xSpeed<\/span>)<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "y"<\/span>: addBounded<\/span>(<\/span>current<\/span>.<\/span>y<\/span>,<\/span> ySpeed<\/span>)<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | /* Collision detection(walls) is done when a ghost lands on an<\/span><\/td>\n <\/tr>\n |
<\/td>\n | * exact block, make sure they dont skip over it <\/span><\/td>\n <\/tr>\n |
<\/td>\n | */<\/span><\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> addBounded<\/span>(<\/span>x1<\/span>,<\/span> x2<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> rem<\/span> =<\/span> x1<\/span> %<\/span> 10<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | result<\/span> =<\/span> rem<\/span> +<\/span> x2<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>rem<\/span> !==<\/span> 0<\/span> &&<\/span> result<\/span> ><\/span> 10<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x1<\/span> +<\/span> (<\/span>10<\/span> -<\/span> rem<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span>(<\/span>rem<\/span> ><\/span> 0<\/span> &&<\/span> result<\/span> <<\/span> 0<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x1<\/span> -<\/span> rem<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x1<\/span> +<\/span> x2<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> isVunerable<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> eatable<\/span> !==<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> isDangerous<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> eaten<\/span> ===<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> isHidden<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> eatable<\/span> ===<\/span> null<\/span> &&<\/span> eaten<\/span> !==<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> getRandomDirection<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> moves<\/span> =<\/span> (<\/span>direction<\/span> ===<\/span> LEFT<\/span> ||<\/span> direction<\/span> ===<\/span> RIGHT<\/span>)<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | ? [<\/span>UP<\/span>,<\/span> DOWN<\/span>]<\/span> : [<\/span>LEFT<\/span>,<\/span> RIGHT<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> moves<\/span>[<\/span>Math<\/span>.<\/span>floor<\/span>(<\/span>Math<\/span>.<\/span>random<\/span>(<\/span>)<\/span> *<\/span> 2<\/span>)<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> reset<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eaten<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eatable<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | position<\/span> =<\/span> {<\/span>"x"<\/span>: 90<\/span>,<\/span> "y"<\/span>: 80<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | direction<\/span> =<\/span> getRandomDirection<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | due<\/span> =<\/span> getRandomDirection<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> onWholeSquare<\/span>(<\/span>x<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x<\/span> %<\/span> 10<\/span> ===<\/span> 0<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> oppositeDirection<\/span>(<\/span>dir<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> dir<\/span> ===<\/span> LEFT<\/span> &&<\/span> RIGHT<\/span> ||<\/span><\/td>\n <\/tr>\n |
<\/td>\n | dir<\/span> ===<\/span> RIGHT<\/span> &&<\/span> LEFT<\/span> ||<\/span><\/td>\n <\/tr>\n |
<\/td>\n | dir<\/span> ===<\/span> UP<\/span> &&<\/span> DOWN<\/span> ||<\/span> UP<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> makeEatable<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | direction<\/span> =<\/span> oppositeDirection<\/span>(<\/span>direction<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eatable<\/span> =<\/span> game<\/span>.<\/span>getTick<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> eat<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | eatable<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eaten<\/span> =<\/span> game<\/span>.<\/span>getTick<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> pointToCoord<\/span>(<\/span>x<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> Math<\/span>.<\/span>round<\/span>(<\/span>x<\/span> /<\/span> 10<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> nextSquare<\/span>(<\/span>x<\/span>,<\/span> dir<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> rem<\/span> =<\/span> x<\/span> %<\/span> 10<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>rem<\/span> ===<\/span> 0<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>dir<\/span> ===<\/span> RIGHT<\/span> ||<\/span> dir<\/span> ===<\/span> DOWN<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x<\/span> +<\/span> (<\/span>10<\/span> -<\/span> rem<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x<\/span> -<\/span> rem<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> onGridSquare<\/span>(<\/span>pos<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> onWholeSquare<\/span>(<\/span>pos<\/span>.<\/span>y<\/span>)<\/span> &&<\/span> onWholeSquare<\/span>(<\/span>pos<\/span>.<\/span>x<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> secondsAgo<\/span>(<\/span>tick<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> (<\/span>game<\/span>.<\/span>getTick<\/span>(<\/span>)<\/span> -<\/span> tick<\/span>)<\/span> /<\/span> Pacman<\/span>.<\/span>FPS<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> getColour<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>eatable<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>secondsAgo<\/span>(<\/span>eatable<\/span>)<\/span> ><\/span> 5<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> game<\/span>.<\/span>getTick<\/span>(<\/span>)<\/span> %<\/span> 20<\/span> ><\/span> 10<\/span> ? "#FFFFFF"<\/span> : "#0000BB"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> "#0000BB"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span>(<\/span>eaten<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> "#222"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> colour<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> draw<\/span>(<\/span>ctx<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> s<\/span> =<\/span> map<\/span>.<\/span>blockSize<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | top<\/span> =<\/span> (<\/span>position<\/span>.<\/span>y<\/span>/<\/span>10<\/span>)<\/span> *<\/span> s<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | left<\/span> =<\/span> (<\/span>position<\/span>.<\/span>x<\/span>/<\/span>10<\/span>)<\/span> *<\/span> s<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>eatable<\/span> &&<\/span> secondsAgo<\/span>(<\/span>eatable<\/span>)<\/span> ><\/span> 8<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eatable<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>eaten<\/span> &&<\/span> secondsAgo<\/span>(<\/span>eaten<\/span>)<\/span> ><\/span> 3<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | eaten<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> tl<\/span> =<\/span> left<\/span> +<\/span> s<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> base<\/span> =<\/span> top<\/span> +<\/span> s<\/span> -<\/span> 3<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> inc<\/span> =<\/span> s<\/span> /<\/span> 10<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> high<\/span> =<\/span> game<\/span>.<\/span>getTick<\/span>(<\/span>)<\/span> %<\/span> 10<\/span> ><\/span> 5<\/span> ? 3<\/span> : -<\/span>3<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> low<\/span> =<\/span> game<\/span>.<\/span>getTick<\/span>(<\/span>)<\/span> %<\/span> 10<\/span> ><\/span> 5<\/span> ? -<\/span>3<\/span> : 3<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> getColour<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>beginPath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>moveTo<\/span>(<\/span>left<\/span>,<\/span> base<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>quadraticCurveTo<\/span>(<\/span>left<\/span>,<\/span> top<\/span>,<\/span> left<\/span> +<\/span> (<\/span>s<\/span>/<\/span>2<\/span>)<\/span>,<\/span> top<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>quadraticCurveTo<\/span>(<\/span>left<\/span> +<\/span> s<\/span>,<\/span> top<\/span>,<\/span> left<\/span>+<\/span>s<\/span>,<\/span> base<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | // Wavy things at the bottom<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>quadraticCurveTo<\/span>(<\/span>tl<\/span>-<\/span>(<\/span>inc<\/span>*<\/span>1<\/span>)<\/span>,<\/span> base<\/span>+<\/span>high<\/span>,<\/span> tl<\/span> -<\/span> (<\/span>inc<\/span> *<\/span> 2<\/span>)<\/span>,<\/span> base<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>quadraticCurveTo<\/span>(<\/span>tl<\/span>-<\/span>(<\/span>inc<\/span>*<\/span>3<\/span>)<\/span>,<\/span> base<\/span>+<\/span>low<\/span>,<\/span> tl<\/span> -<\/span> (<\/span>inc<\/span> *<\/span> 4<\/span>)<\/span>,<\/span> base<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>quadraticCurveTo<\/span>(<\/span>tl<\/span>-<\/span>(<\/span>inc<\/span>*<\/span>5<\/span>)<\/span>,<\/span> base<\/span>+<\/span>high<\/span>,<\/span> tl<\/span> -<\/span> (<\/span>inc<\/span> *<\/span> 6<\/span>)<\/span>,<\/span> base<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>quadraticCurveTo<\/span>(<\/span>tl<\/span>-<\/span>(<\/span>inc<\/span>*<\/span>7<\/span>)<\/span>,<\/span> base<\/span>+<\/span>low<\/span>,<\/span> tl<\/span> -<\/span> (<\/span>inc<\/span> *<\/span> 8<\/span>)<\/span>,<\/span> base<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>quadraticCurveTo<\/span>(<\/span>tl<\/span>-<\/span>(<\/span>inc<\/span>*<\/span>9<\/span>)<\/span>,<\/span> base<\/span>+<\/span>high<\/span>,<\/span> tl<\/span> -<\/span> (<\/span>inc<\/span> *<\/span> 10<\/span>)<\/span>,<\/span> base<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>closePath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fill<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>beginPath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFF"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>arc<\/span>(<\/span>left<\/span> +<\/span> 6<\/span>,<\/span>top<\/span> +<\/span> 6<\/span>,<\/span> s<\/span> /<\/span> 6<\/span>,<\/span> 0<\/span>,<\/span> 300<\/span>,<\/span> false<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>arc<\/span>(<\/span>(<\/span>left<\/span> +<\/span> s<\/span>)<\/span> -<\/span> 6<\/span>,<\/span>top<\/span> +<\/span> 6<\/span>,<\/span> s<\/span> /<\/span> 6<\/span>,<\/span> 0<\/span>,<\/span> 300<\/span>,<\/span> false<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>closePath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fill<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> f<\/span> =<\/span> s<\/span> /<\/span> 12<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> off<\/span> =<\/span> {<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | off<\/span>[<\/span>RIGHT<\/span>]<\/span> =<\/span> [<\/span>f<\/span>,<\/span> 0<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | off<\/span>[<\/span>LEFT<\/span>]<\/span> =<\/span> [<\/span>-<\/span>f<\/span>,<\/span> 0<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | off<\/span>[<\/span>UP<\/span>]<\/span> =<\/span> [<\/span>0<\/span>,<\/span> -<\/span>f<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | off<\/span>[<\/span>DOWN<\/span>]<\/span> =<\/span> [<\/span>0<\/span>,<\/span> f<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>beginPath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#000"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>arc<\/span>(<\/span>left<\/span>+<\/span>6<\/span>+<\/span>off<\/span>[<\/span>direction<\/span>]<\/span>[<\/span>0<\/span>]<\/span>,<\/span> top<\/span>+<\/span>6<\/span>+<\/span>off<\/span>[<\/span>direction<\/span>]<\/span>[<\/span>1<\/span>]<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | s<\/span> /<\/span> 15<\/span>,<\/span> 0<\/span>,<\/span> 300<\/span>,<\/span> false<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>arc<\/span>(<\/span>(<\/span>left<\/span>+<\/span>s<\/span>)<\/span>-<\/span>6<\/span>+<\/span>off<\/span>[<\/span>direction<\/span>]<\/span>[<\/span>0<\/span>]<\/span>,<\/span> top<\/span>+<\/span>6<\/span>+<\/span>off<\/span>[<\/span>direction<\/span>]<\/span>[<\/span>1<\/span>]<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | s<\/span> /<\/span> 15<\/span>,<\/span> 0<\/span>,<\/span> 300<\/span>,<\/span> false<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>closePath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fill<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> pane<\/span>(<\/span>pos<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>pos<\/span>.<\/span>y<\/span> ===<\/span> 100<\/span> &&<\/span> pos<\/span>.<\/span>x<\/span> >=<\/span> 190<\/span> &&<\/span> direction<\/span> ===<\/span> RIGHT<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span>"y"<\/span>: 100<\/span>,<\/span> "x"<\/span>: -<\/span>10<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>pos<\/span>.<\/span>y<\/span> ===<\/span> 100<\/span> &&<\/span> pos<\/span>.<\/span>x<\/span> <=<\/span> -<\/span>10<\/span> &&<\/span> direction<\/span> ===<\/span> LEFT<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> position<\/span> =<\/span> {<\/span>"y"<\/span>: 100<\/span>,<\/span> "x"<\/span>: 190<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> false<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> move<\/span>(<\/span>ctx<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> oldPos<\/span> =<\/span> position<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | onGrid<\/span> =<\/span> onGridSquare<\/span>(<\/span>position<\/span>)<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | npos<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>due<\/span> !==<\/span> direction<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | npos<\/span> =<\/span> getNewCoord<\/span>(<\/span>due<\/span>,<\/span> position<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>onGrid<\/span> &&<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>isFloorSpace<\/span>(<\/span>{<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "y"<\/span>:pointToCoord<\/span>(<\/span>nextSquare<\/span>(<\/span>npos<\/span>.<\/span>y<\/span>,<\/span> due<\/span>)<\/span>)<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "x"<\/span>:pointToCoord<\/span>(<\/span>nextSquare<\/span>(<\/span>npos<\/span>.<\/span>x<\/span>,<\/span> due<\/span>)<\/span>)<\/span>}<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | direction<\/span> =<\/span> due<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | npos<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>npos<\/span> ===<\/span> null<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | npos<\/span> =<\/span> getNewCoord<\/span>(<\/span>direction<\/span>,<\/span> position<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>onGrid<\/span> &&<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>isWallSpace<\/span>(<\/span>{<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "y"<\/span> : pointToCoord<\/span>(<\/span>nextSquare<\/span>(<\/span>npos<\/span>.<\/span>y<\/span>,<\/span> direction<\/span>)<\/span>)<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "x"<\/span> : pointToCoord<\/span>(<\/span>nextSquare<\/span>(<\/span>npos<\/span>.<\/span>x<\/span>,<\/span> direction<\/span>)<\/span>)<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | due<\/span> =<\/span> getRandomDirection<\/span>(<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> move<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | position<\/span> =<\/span> npos<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> tmp<\/span> =<\/span> pane<\/span>(<\/span>position<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>tmp<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | position<\/span> =<\/span> tmp<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | due<\/span> =<\/span> getRandomDirection<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "new"<\/span> : position<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "old"<\/span> : oldPos<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "eat"<\/span> : eat<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "isVunerable"<\/span> : isVunerable<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "isDangerous"<\/span> : isDangerous<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "makeEatable"<\/span> : makeEatable<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "reset"<\/span> : reset<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "move"<\/span> : move<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "draw"<\/span> : draw<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>User<\/span> =<\/span> function<\/span> (<\/span>game<\/span>,<\/span> map<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> position<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | direction<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eaten<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | due<\/span> =<\/span> null<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | lives<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | score<\/span> =<\/span> 5<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | keyMap<\/span> =<\/span> {<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | keyMap<\/span>[<\/span>KEY<\/span>.<\/span>ARROW_LEFT<\/span>]<\/span> =<\/span> LEFT<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | keyMap<\/span>[<\/span>KEY<\/span>.<\/span>ARROW_UP<\/span>]<\/span> =<\/span> UP<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | keyMap<\/span>[<\/span>KEY<\/span>.<\/span>ARROW_RIGHT<\/span>]<\/span> =<\/span> RIGHT<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | keyMap<\/span>[<\/span>KEY<\/span>.<\/span>ARROW_DOWN<\/span>]<\/span> =<\/span> DOWN<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> addScore<\/span>(<\/span>nScore<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | score<\/span> +=<\/span> nScore<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>score<\/span> >=<\/span> 10000<\/span> &&<\/span> score<\/span> -<\/span> nScore<\/span> <<\/span> 10000<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | lives<\/span> +=<\/span> 1<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> theScore<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> score<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> loseLife<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | lives<\/span> -=<\/span> 1<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> getLives<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> lives<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> initUser<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | score<\/span> =<\/span> 0<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | lives<\/span> =<\/span> 3<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | newLevel<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> newLevel<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | resetPosition<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eaten<\/span> =<\/span> 0<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> resetPosition<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | position<\/span> =<\/span> {<\/span>"x"<\/span>: 90<\/span>,<\/span> "y"<\/span>: 120<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | direction<\/span> =<\/span> LEFT<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | due<\/span> =<\/span> LEFT<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> reset<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | initUser<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | resetPosition<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> keyDown<\/span>(<\/span>e<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>typeof<\/span> keyMap<\/span>[<\/span>e<\/span>.<\/span>keyCode<\/span>]<\/span> !==<\/span> "undefined"<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | due<\/span> =<\/span> keyMap<\/span>[<\/span>e<\/span>.<\/span>keyCode<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | e<\/span>.<\/span>preventDefault<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | e<\/span>.<\/span>stopPropagation<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> false<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> true<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> getNewCoord<\/span>(<\/span>dir<\/span>,<\/span> current<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "x"<\/span>: current<\/span>.<\/span>x<\/span> +<\/span> (<\/span>dir<\/span> ===<\/span> LEFT<\/span> &&<\/span> -<\/span>2<\/span> ||<\/span> dir<\/span> ===<\/span> RIGHT<\/span> &&<\/span> 2<\/span> ||<\/span> 0<\/span>)<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "y"<\/span>: current<\/span>.<\/span>y<\/span> +<\/span> (<\/span>dir<\/span> ===<\/span> DOWN<\/span> &&<\/span> 2<\/span> ||<\/span> dir<\/span> ===<\/span> UP<\/span> &&<\/span> -<\/span>2<\/span> ||<\/span> 0<\/span>)<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> onWholeSquare<\/span>(<\/span>x<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x<\/span> %<\/span> 10<\/span> ===<\/span> 0<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> pointToCoord<\/span>(<\/span>x<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> Math<\/span>.<\/span>round<\/span>(<\/span>x<\/span>/<\/span>10<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> nextSquare<\/span>(<\/span>x<\/span>,<\/span> dir<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> rem<\/span> =<\/span> x<\/span> %<\/span> 10<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>rem<\/span> ===<\/span> 0<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>dir<\/span> ===<\/span> RIGHT<\/span> ||<\/span> dir<\/span> ===<\/span> DOWN<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x<\/span> +<\/span> (<\/span>10<\/span> -<\/span> rem<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> x<\/span> -<\/span> rem<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> next<\/span>(<\/span>pos<\/span>,<\/span> dir<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "y"<\/span> : pointToCoord<\/span>(<\/span>nextSquare<\/span>(<\/span>pos<\/span>.<\/span>y<\/span>,<\/span> dir<\/span>)<\/span>)<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "x"<\/span> : pointToCoord<\/span>(<\/span>nextSquare<\/span>(<\/span>pos<\/span>.<\/span>x<\/span>,<\/span> dir<\/span>)<\/span>)<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> onGridSquare<\/span>(<\/span>pos<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> onWholeSquare<\/span>(<\/span>pos<\/span>.<\/span>y<\/span>)<\/span> &&<\/span> onWholeSquare<\/span>(<\/span>pos<\/span>.<\/span>x<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> isOnSamePlane<\/span>(<\/span>due<\/span>,<\/span> dir<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> (<\/span>(<\/span>due<\/span> ===<\/span> LEFT<\/span> ||<\/span> due<\/span> ===<\/span> RIGHT<\/span>)<\/span> &&<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>dir<\/span> ===<\/span> LEFT<\/span> ||<\/span> dir<\/span> ===<\/span> RIGHT<\/span>)<\/span>)<\/span> ||<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>(<\/span>due<\/span> ===<\/span> UP<\/span> ||<\/span> due<\/span> ===<\/span> DOWN<\/span>)<\/span> &&<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>dir<\/span> ===<\/span> UP<\/span> ||<\/span> dir<\/span> ===<\/span> DOWN<\/span>)<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> move<\/span>(<\/span>ctx<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> npos<\/span> =<\/span> null<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | nextWhole<\/span> =<\/span> null<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | oldPosition<\/span> =<\/span> position<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | block<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>due<\/span> !==<\/span> direction<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | npos<\/span> =<\/span> getNewCoord<\/span>(<\/span>due<\/span>,<\/span> position<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>isOnSamePlane<\/span>(<\/span>due<\/span>,<\/span> direction<\/span>)<\/span> ||<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>onGridSquare<\/span>(<\/span>position<\/span>)<\/span> &&<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>isFloorSpace<\/span>(<\/span>next<\/span>(<\/span>npos<\/span>,<\/span> due<\/span>)<\/span>)<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | direction<\/span> =<\/span> due<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | npos<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>npos<\/span> ===<\/span> null<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | npos<\/span> =<\/span> getNewCoord<\/span>(<\/span>direction<\/span>,<\/span> position<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>onGridSquare<\/span>(<\/span>position<\/span>)<\/span> &&<\/span> map<\/span>.<\/span>isWallSpace<\/span>(<\/span>next<\/span>(<\/span>npos<\/span>,<\/span> direction<\/span>)<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | direction<\/span> =<\/span> NONE<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>direction<\/span> ===<\/span> NONE<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span>"new"<\/span> : position<\/span>,<\/span> "old"<\/span> : position<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>npos<\/span>.<\/span>y<\/span> ===<\/span> 100<\/span> &&<\/span> npos<\/span>.<\/span>x<\/span> >=<\/span> 190<\/span> &&<\/span> direction<\/span> ===<\/span> RIGHT<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | npos<\/span> =<\/span> {<\/span>"y"<\/span>: 100<\/span>,<\/span> "x"<\/span>: -<\/span>10<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>npos<\/span>.<\/span>y<\/span> ===<\/span> 100<\/span> &&<\/span> npos<\/span>.<\/span>x<\/span> <=<\/span> -<\/span>12<\/span> &&<\/span> direction<\/span> ===<\/span> LEFT<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | npos<\/span> =<\/span> {<\/span>"y"<\/span>: 100<\/span>,<\/span> "x"<\/span>: 190<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | position<\/span> =<\/span> npos<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | nextWhole<\/span> =<\/span> next<\/span>(<\/span>position<\/span>,<\/span> direction<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | block<\/span> =<\/span> map<\/span>.<\/span>block<\/span>(<\/span>nextWhole<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>(<\/span>isMidSquare<\/span>(<\/span>position<\/span>.<\/span>y<\/span>)<\/span> ||<\/span> isMidSquare<\/span>(<\/span>position<\/span>.<\/span>x<\/span>)<\/span>)<\/span> &&<\/span><\/td>\n <\/tr>\n |
<\/td>\n | block<\/span> ===<\/span> Pacman<\/span>.<\/span>BISCUIT<\/span> ||<\/span> block<\/span> ===<\/span> Pacman<\/span>.<\/span>PILL<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>setBlock<\/span>(<\/span>nextWhole<\/span>,<\/span> Pacman<\/span>.<\/span>EMPTY<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | addScore<\/span>(<\/span>(<\/span>block<\/span> ===<\/span> Pacman<\/span>.<\/span>BISCUIT<\/span>)<\/span> ? 10<\/span> : 50<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eaten<\/span> +=<\/span> 1<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>eaten<\/span> ===<\/span> 182<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | game<\/span>.<\/span>completedLevel<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>block<\/span> ===<\/span> Pacman<\/span>.<\/span>PILL<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | game<\/span>.<\/span>eatenPill<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "new"<\/span> : position<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "old"<\/span> : oldPosition<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> isMidSquare<\/span>(<\/span>x<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> rem<\/span> =<\/span> x<\/span> %<\/span> 10<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> rem<\/span> ><\/span> 3<\/span> ||<\/span> rem<\/span> <<\/span> 7<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> calcAngle<\/span>(<\/span>dir<\/span>,<\/span> pos<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>dir<\/span> ==<\/span> RIGHT<\/span> &&<\/span> (<\/span>pos<\/span>.<\/span>x<\/span> %<\/span> 10<\/span> <<\/span> 5<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span>"start"<\/span>:0.25<\/span>,<\/span> "end"<\/span>:1.75<\/span>,<\/span> "direction"<\/span>: false<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>dir<\/span> ===<\/span> DOWN<\/span> &&<\/span> (<\/span>pos<\/span>.<\/span>y<\/span> %<\/span> 10<\/span> <<\/span> 5<\/span>)<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span>"start"<\/span>:0.75<\/span>,<\/span> "end"<\/span>:2.25<\/span>,<\/span> "direction"<\/span>: false<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>dir<\/span> ===<\/span> UP<\/span> &&<\/span> (<\/span>pos<\/span>.<\/span>y<\/span> %<\/span> 10<\/span> <<\/span> 5<\/span>)<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span>"start"<\/span>:1.25<\/span>,<\/span> "end"<\/span>:1.75<\/span>,<\/span> "direction"<\/span>: true<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>dir<\/span> ===<\/span> LEFT<\/span> &&<\/span> (<\/span>pos<\/span>.<\/span>x<\/span> %<\/span> 10<\/span> <<\/span> 5<\/span>)<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span>"start"<\/span>:0.75<\/span>,<\/span> "end"<\/span>:1.25<\/span>,<\/span> "direction"<\/span>: true<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span>"start"<\/span>:0<\/span>,<\/span> "end"<\/span>:2<\/span>,<\/span> "direction"<\/span>: false<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> drawDead<\/span>(<\/span>ctx<\/span>,<\/span> amount<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> size<\/span> =<\/span> map<\/span>.<\/span>blockSize<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | half<\/span> =<\/span> size<\/span> /<\/span> 2<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>amount<\/span> >=<\/span> 1<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFFF00"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>beginPath<\/span>(<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>moveTo<\/span>(<\/span>(<\/span>(<\/span>position<\/span>.<\/span>x<\/span>/<\/span>10<\/span>)<\/span> *<\/span> size<\/span>)<\/span> +<\/span> half<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>(<\/span>position<\/span>.<\/span>y<\/span>/<\/span>10<\/span>)<\/span> *<\/span> size<\/span>)<\/span> +<\/span> half<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>arc<\/span>(<\/span>(<\/span>(<\/span>position<\/span>.<\/span>x<\/span>/<\/span>10<\/span>)<\/span> *<\/span> size<\/span>)<\/span> +<\/span> half<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>(<\/span>position<\/span>.<\/span>y<\/span>/<\/span>10<\/span>)<\/span> *<\/span> size<\/span>)<\/span> +<\/span> half<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | half<\/span>,<\/span> 0<\/span>,<\/span> Math<\/span>.<\/span>PI<\/span> *<\/span> 2<\/span> *<\/span> amount<\/span>,<\/span> true<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fill<\/span>(<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> draw<\/span>(<\/span>ctx<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> s<\/span> =<\/span> map<\/span>.<\/span>blockSize<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | angle<\/span> =<\/span> calcAngle<\/span>(<\/span>direction<\/span>,<\/span> position<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFFF00"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>beginPath<\/span>(<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>moveTo<\/span>(<\/span>(<\/span>(<\/span>position<\/span>.<\/span>x<\/span>/<\/span>10<\/span>)<\/span> *<\/span> s<\/span>)<\/span> +<\/span> s<\/span> /<\/span> 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>(<\/span>position<\/span>.<\/span>y<\/span>/<\/span>10<\/span>)<\/span> *<\/span> s<\/span>)<\/span> +<\/span> s<\/span> /<\/span> 2<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>arc<\/span>(<\/span>(<\/span>(<\/span>position<\/span>.<\/span>x<\/span>/<\/span>10<\/span>)<\/span> *<\/span> s<\/span>)<\/span> +<\/span> s<\/span> /<\/span> 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>(<\/span>position<\/span>.<\/span>y<\/span>/<\/span>10<\/span>)<\/span> *<\/span> s<\/span>)<\/span> +<\/span> s<\/span> /<\/span> 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | s<\/span> /<\/span> 2<\/span>,<\/span> Math<\/span>.<\/span>PI<\/span> *<\/span> angle<\/span>.<\/span>start<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | Math<\/span>.<\/span>PI<\/span> *<\/span> angle<\/span>.<\/span>end<\/span>,<\/span> angle<\/span>.<\/span>direction<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fill<\/span>(<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | initUser<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "draw"<\/span> : draw<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "drawDead"<\/span> : drawDead<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "loseLife"<\/span> : loseLife<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "getLives"<\/span> : getLives<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "score"<\/span> : score<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "addScore"<\/span> : addScore<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "theScore"<\/span> : theScore<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "keyDown"<\/span> : keyDown<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "move"<\/span> : move<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "newLevel"<\/span> : newLevel<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "reset"<\/span> : reset<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "resetPosition"<\/span> : resetPosition<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>Map<\/span> =<\/span> function<\/span> (<\/span>size<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> height<\/span> =<\/span> null<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | width<\/span> =<\/span> null<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | blockSize<\/span> =<\/span> size<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | pillSize<\/span> =<\/span> 0<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> withinBounds<\/span>(<\/span>y<\/span>,<\/span> x<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> y<\/span> >=<\/span> 0<\/span> &&<\/span> y<\/span> <<\/span> height<\/span> &&<\/span> x<\/span> >=<\/span> 0<\/span> &&<\/span> x<\/span> <<\/span> width<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> isWall<\/span>(<\/span>pos<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> withinBounds<\/span>(<\/span>pos<\/span>.<\/span>y<\/span>,<\/span> pos<\/span>.<\/span>x<\/span>)<\/span> &&<\/span> map<\/span>[<\/span>pos<\/span>.<\/span>y<\/span>]<\/span>[<\/span>pos<\/span>.<\/span>x<\/span>]<\/span> ===<\/span> Pacman<\/span>.<\/span>WALL<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> isFloorSpace<\/span>(<\/span>pos<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>!<\/span>withinBounds<\/span>(<\/span>pos<\/span>.<\/span>y<\/span>,<\/span> pos<\/span>.<\/span>x<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> false<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> peice<\/span> =<\/span> map<\/span>[<\/span>pos<\/span>.<\/span>y<\/span>]<\/span>[<\/span>pos<\/span>.<\/span>x<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> peice<\/span> ===<\/span> Pacman<\/span>.<\/span>EMPTY<\/span> ||<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | peice<\/span> ===<\/span> Pacman<\/span>.<\/span>BISCUIT<\/span> ||<\/span><\/td>\n <\/tr>\n |
<\/td>\n | peice<\/span> ===<\/span> Pacman<\/span>.<\/span>PILL<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> drawWall<\/span>(<\/span>ctx<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> i<\/span>,<\/span> j<\/span>,<\/span> p<\/span>,<\/span> line<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>strokeStyle<\/span> =<\/span> "#0000FF"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>lineWidth<\/span> =<\/span> 5<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>lineCap<\/span> =<\/span> "round"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>;<\/span> i<\/span> <<\/span> Pacman<\/span>.<\/span>WALLS<\/span>.<\/span>length<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | line<\/span> =<\/span> Pacman<\/span>.<\/span>WALLS<\/span>[<\/span>i<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>beginPath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>j<\/span> =<\/span> 0<\/span>;<\/span> j<\/span> <<\/span> line<\/span>.<\/span>length<\/span>;<\/span> j<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | p<\/span> =<\/span> line<\/span>[<\/span>j<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>p<\/span>.<\/span>move<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>moveTo<\/span>(<\/span>p<\/span>.<\/span>move<\/span>[<\/span>0<\/span>]<\/span> *<\/span> blockSize<\/span>,<\/span> p<\/span>.<\/span>move<\/span>[<\/span>1<\/span>]<\/span> *<\/span> blockSize<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>p<\/span>.<\/span>line<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>lineTo<\/span>(<\/span>p<\/span>.<\/span>line<\/span>[<\/span>0<\/span>]<\/span> *<\/span> blockSize<\/span>,<\/span> p<\/span>.<\/span>line<\/span>[<\/span>1<\/span>]<\/span> *<\/span> blockSize<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>p<\/span>.<\/span>curve<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>quadraticCurveTo<\/span>(<\/span>p<\/span>.<\/span>curve<\/span>[<\/span>0<\/span>]<\/span> *<\/span> blockSize<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | p<\/span>.<\/span>curve<\/span>[<\/span>1<\/span>]<\/span> *<\/span> blockSize<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | p<\/span>.<\/span>curve<\/span>[<\/span>2<\/span>]<\/span> *<\/span> blockSize<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | p<\/span>.<\/span>curve<\/span>[<\/span>3<\/span>]<\/span> *<\/span> blockSize<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>stroke<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> reset<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | map<\/span> =<\/span> Pacman<\/span>.<\/span>MAP<\/span>.<\/span>clone<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | height<\/span> =<\/span> map<\/span>.<\/span>length<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | width<\/span> =<\/span> map<\/span>[<\/span>0<\/span>]<\/span>.<\/span>length<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> block<\/span>(<\/span>pos<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> map<\/span>[<\/span>pos<\/span>.<\/span>y<\/span>]<\/span>[<\/span>pos<\/span>.<\/span>x<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> setBlock<\/span>(<\/span>pos<\/span>,<\/span> type<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>[<\/span>pos<\/span>.<\/span>y<\/span>]<\/span>[<\/span>pos<\/span>.<\/span>x<\/span>]<\/span> =<\/span> type<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> drawPills<\/span>(<\/span>ctx<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>++<\/span>pillSize<\/span> ><\/span> 30<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | pillSize<\/span> =<\/span> 0<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>;<\/span> i<\/span> <<\/span> height<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>j<\/span> =<\/span> 0<\/span>;<\/span> j<\/span> <<\/span> width<\/span>;<\/span> j<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>map<\/span>[<\/span>i<\/span>]<\/span>[<\/span>j<\/span>]<\/span> ===<\/span> Pacman<\/span>.<\/span>PILL<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>beginPath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#000"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillRect<\/span>(<\/span>(<\/span>j<\/span> *<\/span> blockSize<\/span>)<\/span>,<\/span> (<\/span>i<\/span> *<\/span> blockSize<\/span>)<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | blockSize<\/span>,<\/span> blockSize<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFF"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>arc<\/span>(<\/span>(<\/span>j<\/span> *<\/span> blockSize<\/span>)<\/span> +<\/span> blockSize<\/span> /<\/span> 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>i<\/span> *<\/span> blockSize<\/span>)<\/span> +<\/span> blockSize<\/span> /<\/span> 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | Math<\/span>.<\/span>abs<\/span>(<\/span>5<\/span> -<\/span> (<\/span>pillSize<\/span>/<\/span>3<\/span>)<\/span>)<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | 0<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | Math<\/span>.<\/span>PI<\/span> *<\/span> 2<\/span>,<\/span> false<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fill<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>closePath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> draw<\/span>(<\/span>ctx<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> i<\/span>,<\/span> j<\/span>,<\/span> size<\/span> =<\/span> blockSize<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#000"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillRect<\/span>(<\/span>0<\/span>,<\/span> 0<\/span>,<\/span> width<\/span> *<\/span> size<\/span>,<\/span> height<\/span> *<\/span> size<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | drawWall<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>;<\/span> i<\/span> <<\/span> height<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>j<\/span> =<\/span> 0<\/span>;<\/span> j<\/span> <<\/span> width<\/span>;<\/span> j<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | drawBlock<\/span>(<\/span>i<\/span>,<\/span> j<\/span>,<\/span> ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> drawBlock<\/span>(<\/span>y<\/span>,<\/span> x<\/span>,<\/span> ctx<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> layout<\/span> =<\/span> map<\/span>[<\/span>y<\/span>]<\/span>[<\/span>x<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>layout<\/span> ===<\/span> Pacman<\/span>.<\/span>PILL<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>beginPath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>layout<\/span> ===<\/span> Pacman<\/span>.<\/span>EMPTY<\/span> ||<\/span> layout<\/span> ===<\/span> Pacman<\/span>.<\/span>BLOCK<\/span> ||<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | layout<\/span> ===<\/span> Pacman<\/span>.<\/span>BISCUIT<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#000"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillRect<\/span>(<\/span>(<\/span>x<\/span> *<\/span> blockSize<\/span>)<\/span>,<\/span> (<\/span>y<\/span> *<\/span> blockSize<\/span>)<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | blockSize<\/span>,<\/span> blockSize<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>layout<\/span> ===<\/span> Pacman<\/span>.<\/span>BISCUIT<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFF"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillRect<\/span>(<\/span>(<\/span>x<\/span> *<\/span> blockSize<\/span>)<\/span> +<\/span> (<\/span>blockSize<\/span> /<\/span> 2.5<\/span>)<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>y<\/span> *<\/span> blockSize<\/span>)<\/span> +<\/span> (<\/span>blockSize<\/span> /<\/span> 2.5<\/span>)<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | blockSize<\/span> /<\/span> 6<\/span>,<\/span> blockSize<\/span> /<\/span> 6<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>closePath<\/span>(<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | reset<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "draw"<\/span> : draw<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "drawBlock"<\/span> : drawBlock<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "drawPills"<\/span> : drawPills<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "block"<\/span> : block<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "setBlock"<\/span> : setBlock<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "reset"<\/span> : reset<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "isWallSpace"<\/span> : isWall<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "isFloorSpace"<\/span> : isFloorSpace<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "height"<\/span> : height<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "width"<\/span> : width<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "blockSize"<\/span> : blockSize<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>Audio<\/span> =<\/span> function<\/span>(<\/span>game<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> files<\/span> =<\/span> [<\/span>]<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | endEvents<\/span> =<\/span> [<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | progressEvents<\/span> =<\/span> [<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | playing<\/span> =<\/span> [<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> load<\/span>(<\/span>name<\/span>,<\/span> path<\/span>,<\/span> cb<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> f<\/span> =<\/span> files<\/span>[<\/span>name<\/span>]<\/span> =<\/span> document<\/span>.<\/span>createElement<\/span>(<\/span>"audio"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | progressEvents<\/span>[<\/span>name<\/span>]<\/span> =<\/span> function<\/span>(<\/span>event<\/span>)<\/span> {<\/span> progress<\/span>(<\/span>event<\/span>,<\/span> name<\/span>,<\/span> cb<\/span>)<\/span>;<\/span> }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | f<\/span>.<\/span>addEventListener<\/span>(<\/span>"canplaythrough"<\/span>,<\/span> progressEvents<\/span>[<\/span>name<\/span>]<\/span>,<\/span> true<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | f<\/span>.<\/span>setAttribute<\/span>(<\/span>"preload"<\/span>,<\/span> "true"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | f<\/span>.<\/span>setAttribute<\/span>(<\/span>"autobuffer"<\/span>,<\/span> "true"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | f<\/span>.<\/span>setAttribute<\/span>(<\/span>"src"<\/span>,<\/span> path<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | f<\/span>.<\/span>pause<\/span>(<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> progress<\/span>(<\/span>event<\/span>,<\/span> name<\/span>,<\/span> callback<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>event<\/span>.<\/span>loaded<\/span> ===<\/span> event<\/span>.<\/span>total<\/span> &&<\/span> typeof<\/span> callback<\/span> ===<\/span> "function"<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | callback<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | files<\/span>[<\/span>name<\/span>]<\/span>.<\/span>removeEventListener<\/span>(<\/span>"canplaythrough"<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | progressEvents<\/span>[<\/span>name<\/span>]<\/span>,<\/span> true<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> disableSound<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>var<\/span> i<\/span> =<\/span> 0<\/span>;<\/span> i<\/span> <<\/span> playing<\/span>.<\/span>length<\/span>;<\/span> i<\/span>++<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | files<\/span>[<\/span>playing<\/span>[<\/span>i<\/span>]<\/span>]<\/span>.<\/span>pause<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | files<\/span>[<\/span>playing<\/span>[<\/span>i<\/span>]<\/span>]<\/span>.<\/span>currentTime<\/span> =<\/span> 0<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | playing<\/span> =<\/span> [<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> ended<\/span>(<\/span>name<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> i<\/span>,<\/span> tmp<\/span> =<\/span> [<\/span>]<\/span>,<\/span> found<\/span> =<\/span> false<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | files<\/span>[<\/span>name<\/span>]<\/span>.<\/span>removeEventListener<\/span>(<\/span>"ended"<\/span>,<\/span> endEvents<\/span>[<\/span>name<\/span>]<\/span>,<\/span> true<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>;<\/span> i<\/span> <<\/span> playing<\/span>.<\/span>length<\/span>;<\/span> i<\/span>++<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>!<\/span>found<\/span> &&<\/span> playing<\/span>[<\/span>i<\/span>]<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | found<\/span> =<\/span> true<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | tmp<\/span>.<\/span>push<\/span>(<\/span>playing<\/span>[<\/span>i<\/span>]<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | playing<\/span> =<\/span> tmp<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> play<\/span>(<\/span>name<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>!<\/span>game<\/span>.<\/span>soundDisabled<\/span>(<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | endEvents<\/span>[<\/span>name<\/span>]<\/span> =<\/span> function<\/span>(<\/span>)<\/span> {<\/span> ended<\/span>(<\/span>name<\/span>)<\/span>;<\/span> }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | playing<\/span>.<\/span>push<\/span>(<\/span>name<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | files<\/span>[<\/span>name<\/span>]<\/span>.<\/span>addEventListener<\/span>(<\/span>"ended"<\/span>,<\/span> endEvents<\/span>[<\/span>name<\/span>]<\/span>,<\/span> true<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | files<\/span>[<\/span>name<\/span>]<\/span>.<\/span>play<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> pause<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>var<\/span> i<\/span> =<\/span> 0<\/span>;<\/span> i<\/span> <<\/span> playing<\/span>.<\/span>length<\/span>;<\/span> i<\/span>++<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | files<\/span>[<\/span>playing<\/span>[<\/span>i<\/span>]<\/span>]<\/span>.<\/span>pause<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> resume<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>var<\/span> i<\/span> =<\/span> 0<\/span>;<\/span> i<\/span> <<\/span> playing<\/span>.<\/span>length<\/span>;<\/span> i<\/span>++<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | files<\/span>[<\/span>playing<\/span>[<\/span>i<\/span>]<\/span>]<\/span>.<\/span>play<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "disableSound"<\/span> : disableSound<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "load"<\/span> : load<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "play"<\/span> : play<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "pause"<\/span> : pause<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "resume"<\/span> : resume<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> PACMAN<\/span> =<\/span> (<\/span>function<\/span> (<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> state<\/span> =<\/span> WAITING<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghosts<\/span> =<\/span> [<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghostSpecs<\/span> =<\/span> [<\/span>"#00FFDE"<\/span>,<\/span> "#FF0000"<\/span>,<\/span> "#FFB8DE"<\/span>,<\/span> "#FFB847"<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eatenCount<\/span> =<\/span> 0<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | level<\/span> =<\/span> 0<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | tick<\/span> =<\/span> 0<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghostPos<\/span>,<\/span> userPos<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | stateChanged<\/span> =<\/span> true<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | timerStart<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | lastTime<\/span> =<\/span> 0<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | timer<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | user<\/span> =<\/span> null<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | stored<\/span> =<\/span> null<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> getTick<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> tick<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> drawScore<\/span>(<\/span>text<\/span>,<\/span> position<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFFFFF"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>font<\/span> =<\/span> "12px BDCartoonShoutRegular"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillText<\/span>(<\/span>text<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>position<\/span>[<\/span>"new"<\/span>]<\/span>[<\/span>"x"<\/span>]<\/span> /<\/span> 10<\/span>)<\/span> *<\/span> map<\/span>.<\/span>blockSize<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>(<\/span>position<\/span>[<\/span>"new"<\/span>]<\/span>[<\/span>"y"<\/span>]<\/span> +<\/span> 5<\/span>)<\/span> /<\/span> 10<\/span>)<\/span> *<\/span> map<\/span>.<\/span>blockSize<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> dialog<\/span>(<\/span>text<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFFF00"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>font<\/span> =<\/span> "18px Calibri"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> width<\/span> =<\/span> ctx<\/span>.<\/span>measureText<\/span>(<\/span>text<\/span>)<\/span>.<\/span>width<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | x<\/span> =<\/span> (<\/span>(<\/span>map<\/span>.<\/span>width<\/span> *<\/span> map<\/span>.<\/span>blockSize<\/span>)<\/span> -<\/span> width<\/span>)<\/span> /<\/span> 2<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillText<\/span>(<\/span>text<\/span>,<\/span> x<\/span>,<\/span> (<\/span>map<\/span>.<\/span>height<\/span> *<\/span> 10<\/span>)<\/span> +<\/span> 8<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> soundDisabled<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> localStorage<\/span>[<\/span>"soundDisabled"<\/span>]<\/span> ===<\/span> "true"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> startLevel<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | user<\/span>.<\/span>resetPosition<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>var<\/span> i<\/span> =<\/span> 0<\/span>;<\/span> i<\/span> <<\/span> ghosts<\/span>.<\/span>length<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | ghosts<\/span>[<\/span>i<\/span>]<\/span>.<\/span>reset<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span>.<\/span>play<\/span>(<\/span>"start"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | timerStart<\/span> =<\/span> tick<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>COUNTDOWN<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> startNewGame<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>WAITING<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | level<\/span> =<\/span> 1<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | user<\/span>.<\/span>reset<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>reset<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | startLevel<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> keyDown<\/span>(<\/span>e<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>e<\/span>.<\/span>keyCode<\/span> ===<\/span> KEY<\/span>.<\/span>N<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | startNewGame<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>e<\/span>.<\/span>keyCode<\/span> ===<\/span> KEY<\/span>.<\/span>S<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span>.<\/span>disableSound<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | localStorage<\/span>[<\/span>"soundDisabled"<\/span>]<\/span> =<\/span> !<\/span>soundDisabled<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>e<\/span>.<\/span>keyCode<\/span> ===<\/span> KEY<\/span>.<\/span>P<\/span> &&<\/span> state<\/span> ===<\/span> PAUSE<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span>.<\/span>resume<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>stored<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>e<\/span>.<\/span>keyCode<\/span> ===<\/span> KEY<\/span>.<\/span>P<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | stored<\/span> =<\/span> state<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>PAUSE<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span>.<\/span>pause<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | dialog<\/span>(<\/span>"Paused"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>state<\/span> !==<\/span> PAUSE<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> user<\/span>.<\/span>keyDown<\/span>(<\/span>e<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> true<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> loseLife<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>WAITING<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | user<\/span>.<\/span>loseLife<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>user<\/span>.<\/span>getLives<\/span>(<\/span>)<\/span> ><\/span> 0<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | startLevel<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> setState<\/span>(<\/span>nState<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | state<\/span> =<\/span> nState<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | stateChanged<\/span> =<\/span> true<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> collided<\/span>(<\/span>user<\/span>,<\/span> ghost<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> (<\/span>Math<\/span>.<\/span>sqrt<\/span>(<\/span>Math<\/span>.<\/span>pow<\/span>(<\/span>ghost<\/span>.<\/span>x<\/span> -<\/span> user<\/span>.<\/span>x<\/span>,<\/span> 2<\/span>)<\/span> +<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | Math<\/span>.<\/span>pow<\/span>(<\/span>ghost<\/span>.<\/span>y<\/span> -<\/span> user<\/span>.<\/span>y<\/span>,<\/span> 2<\/span>)<\/span>)<\/span>)<\/span> <<\/span> 10<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> drawFooter<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> topLeft<\/span> =<\/span> (<\/span>map<\/span>.<\/span>height<\/span> *<\/span> map<\/span>.<\/span>blockSize<\/span>)<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | textBase<\/span> =<\/span> topLeft<\/span> +<\/span> 17<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#000000"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillRect<\/span>(<\/span>0<\/span>,<\/span> topLeft<\/span>,<\/span> (<\/span>map<\/span>.<\/span>width<\/span> *<\/span> map<\/span>.<\/span>blockSize<\/span>)<\/span>,<\/span> 30<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFFF00"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>var<\/span> i<\/span> =<\/span> 0<\/span>,<\/span> len<\/span> =<\/span> user<\/span>.<\/span>getLives<\/span>(<\/span>)<\/span>;<\/span> i<\/span> <<\/span> len<\/span>;<\/span> i<\/span>++<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFFF00"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>beginPath<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>moveTo<\/span>(<\/span>150<\/span> +<\/span> (<\/span>25<\/span> *<\/span> i<\/span>)<\/span> +<\/span> map<\/span>.<\/span>blockSize<\/span> /<\/span> 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>topLeft<\/span>+<\/span>1<\/span>)<\/span> +<\/span> map<\/span>.<\/span>blockSize<\/span> /<\/span> 2<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>arc<\/span>(<\/span>150<\/span> +<\/span> (<\/span>25<\/span> *<\/span> i<\/span>)<\/span> +<\/span> map<\/span>.<\/span>blockSize<\/span> /<\/span> 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>topLeft<\/span>+<\/span>1<\/span>)<\/span> +<\/span> map<\/span>.<\/span>blockSize<\/span> /<\/span> 2<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>blockSize<\/span> /<\/span> 2<\/span>,<\/span> Math<\/span>.<\/span>PI<\/span> *<\/span> 0.25<\/span>,<\/span> Math<\/span>.<\/span>PI<\/span> *<\/span> 1.75<\/span>,<\/span> false<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fill<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> !<\/span>soundDisabled<\/span>(<\/span>)<\/span> ? "#00FF00"<\/span> : "#FF0000"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>font<\/span> =<\/span> "bold 16px sans-serif"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | //ctx.fillText("♪", 10, textBase);<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillText<\/span>(<\/span>"s"<\/span>,<\/span> 10<\/span>,<\/span> textBase<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillStyle<\/span> =<\/span> "#FFFF00"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>font<\/span> =<\/span> "14px Calibri"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillText<\/span>(<\/span>"Score: "<\/span> +<\/span> user<\/span>.<\/span>theScore<\/span>(<\/span>)<\/span>,<\/span> 30<\/span>,<\/span> textBase<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span>.<\/span>fillText<\/span>(<\/span>"Level: "<\/span> +<\/span> level<\/span>,<\/span> 260<\/span>,<\/span> textBase<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> redrawBlock<\/span>(<\/span>pos<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>drawBlock<\/span>(<\/span>Math<\/span>.<\/span>floor<\/span>(<\/span>pos<\/span>.<\/span>y<\/span>/<\/span>10<\/span>)<\/span>,<\/span> Math<\/span>.<\/span>floor<\/span>(<\/span>pos<\/span>.<\/span>x<\/span>/<\/span>10<\/span>)<\/span>,<\/span> ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>drawBlock<\/span>(<\/span>Math<\/span>.<\/span>ceil<\/span>(<\/span>pos<\/span>.<\/span>y<\/span>/<\/span>10<\/span>)<\/span>,<\/span> Math<\/span>.<\/span>ceil<\/span>(<\/span>pos<\/span>.<\/span>x<\/span>/<\/span>10<\/span>)<\/span>,<\/span> ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> mainDraw<\/span>(<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> diff<\/span>,<\/span> u<\/span>,<\/span> i<\/span>,<\/span> len<\/span>,<\/span> nScore<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | ghostPos<\/span> =<\/span> [<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>,<\/span> len<\/span> =<\/span> ghosts<\/span>.<\/span>length<\/span>;<\/span> i<\/span> <<\/span> len<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghostPos<\/span>.<\/span>push<\/span>(<\/span>ghosts<\/span>[<\/span>i<\/span>]<\/span>.<\/span>move<\/span>(<\/span>ctx<\/span>)<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | u<\/span> =<\/span> user<\/span>.<\/span>move<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>,<\/span> len<\/span> =<\/span> ghosts<\/span>.<\/span>length<\/span>;<\/span> i<\/span> <<\/span> len<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | redrawBlock<\/span>(<\/span>ghostPos<\/span>[<\/span>i<\/span>]<\/span>.<\/span>old<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | redrawBlock<\/span>(<\/span>u<\/span>.<\/span>old<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>,<\/span> len<\/span> =<\/span> ghosts<\/span>.<\/span>length<\/span>;<\/span> i<\/span> <<\/span> len<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghosts<\/span>[<\/span>i<\/span>]<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | user<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | userPos<\/span> =<\/span> u<\/span>[<\/span>"new"<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>,<\/span> len<\/span> =<\/span> ghosts<\/span>.<\/span>length<\/span>;<\/span> i<\/span> <<\/span> len<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>collided<\/span>(<\/span>userPos<\/span>,<\/span> ghostPos<\/span>[<\/span>i<\/span>]<\/span>[<\/span>"new"<\/span>]<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>ghosts<\/span>[<\/span>i<\/span>]<\/span>.<\/span>isVunerable<\/span>(<\/span>)<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span>.<\/span>play<\/span>(<\/span>"eatghost"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghosts<\/span>[<\/span>i<\/span>]<\/span>.<\/span>eat<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eatenCount<\/span> +=<\/span> 1<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | nScore<\/span> =<\/span> eatenCount<\/span> *<\/span> 50<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | drawScore<\/span>(<\/span>nScore<\/span>,<\/span> ghostPos<\/span>[<\/span>i<\/span>]<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | user<\/span>.<\/span>addScore<\/span>(<\/span>nScore<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>EATEN_PAUSE<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | timerStart<\/span> =<\/span> tick<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>ghosts<\/span>[<\/span>i<\/span>]<\/span>.<\/span>isDangerous<\/span>(<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span>.<\/span>play<\/span>(<\/span>"die"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>DYING<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | timerStart<\/span> =<\/span> tick<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> mainLoop<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> diff<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>state<\/span> !==<\/span> PAUSE<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | ++<\/span>tick<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>drawPills<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>state<\/span> ===<\/span> PLAYING<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | mainDraw<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>state<\/span> ===<\/span> WAITING<\/span> &&<\/span> stateChanged<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | stateChanged<\/span> =<\/span> false<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | dialog<\/span>(<\/span>"Press N to start a New game"<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>state<\/span> ===<\/span> EATEN_PAUSE<\/span> &&<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>tick<\/span> -<\/span> timerStart<\/span>)<\/span> ><\/span> (<\/span>Pacman<\/span>.<\/span>FPS<\/span> /<\/span> 3<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>PLAYING<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>state<\/span> ===<\/span> DYING<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>tick<\/span> -<\/span> timerStart<\/span> ><\/span> (<\/span>Pacman<\/span>.<\/span>FPS<\/span> *<\/span> 2<\/span>)<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | loseLife<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | redrawBlock<\/span>(<\/span>userPos<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>,<\/span> len<\/span> =<\/span> ghosts<\/span>.<\/span>length<\/span>;<\/span> i<\/span> <<\/span> len<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | redrawBlock<\/span>(<\/span>ghostPos<\/span>[<\/span>i<\/span>]<\/span>.<\/span>old<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghostPos<\/span>.<\/span>push<\/span>(<\/span>ghosts<\/span>[<\/span>i<\/span>]<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | user<\/span>.<\/span>drawDead<\/span>(<\/span>ctx<\/span>,<\/span> (<\/span>tick<\/span> -<\/span> timerStart<\/span>)<\/span> /<\/span> (<\/span>Pacman<\/span>.<\/span>FPS<\/span> *<\/span> 2<\/span>)<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> if<\/span> (<\/span>state<\/span> ===<\/span> COUNTDOWN<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | diff<\/span> =<\/span> 5<\/span> +<\/span> Math<\/span>.<\/span>floor<\/span>(<\/span>(<\/span>timerStart<\/span> -<\/span> tick<\/span>)<\/span> /<\/span> Pacman<\/span>.<\/span>FPS<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>diff<\/span> ===<\/span> 0<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>PLAYING<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>diff<\/span> !==<\/span> lastTime<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | lastTime<\/span> =<\/span> diff<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | dialog<\/span>(<\/span>"Starting in: "<\/span> +<\/span> diff<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | drawFooter<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> eatenPill<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span>.<\/span>play<\/span>(<\/span>"eatpill"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | timerStart<\/span> =<\/span> tick<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | eatenCount<\/span> =<\/span> 0<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>;<\/span> i<\/span> <<\/span> ghosts<\/span>.<\/span>length<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghosts<\/span>[<\/span>i<\/span>]<\/span>.<\/span>makeEatable<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> completedLevel<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | setState<\/span>(<\/span>WAITING<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | level<\/span> +=<\/span> 1<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>reset<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | user<\/span>.<\/span>newLevel<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | startLevel<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> keyPress<\/span>(<\/span>e<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>state<\/span> !==<\/span> WAITING<\/span> &&<\/span> state<\/span> !==<\/span> PAUSE<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | e<\/span>.<\/span>preventDefault<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | e<\/span>.<\/span>stopPropagation<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> init<\/span>(<\/span>wrapper<\/span>,<\/span> root<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> i<\/span>,<\/span> len<\/span>,<\/span> ghost<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | blockSize<\/span> =<\/span> wrapper<\/span>.<\/span>offsetWidth<\/span> /<\/span> 19<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | canvas<\/span> =<\/span> document<\/span>.<\/span>createElement<\/span>(<\/span>"canvas"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | canvas<\/span>.<\/span>setAttribute<\/span>(<\/span>"width"<\/span>,<\/span> (<\/span>blockSize<\/span> *<\/span> 19<\/span>)<\/span> +<\/span> "px"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | canvas<\/span>.<\/span>setAttribute<\/span>(<\/span>"height"<\/span>,<\/span> (<\/span>blockSize<\/span> *<\/span> 22<\/span>)<\/span> +<\/span> 30<\/span> +<\/span> "px"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | wrapper<\/span>.<\/span>appendChild<\/span>(<\/span>canvas<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | ctx<\/span> =<\/span> canvas<\/span>.<\/span>getContext<\/span>(<\/span>'2d'<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span> =<\/span> new<\/span> Pacman<\/span>.<\/span>Audio<\/span>(<\/span>{<\/span>"soundDisabled"<\/span>:soundDisabled<\/span>}<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | map<\/span> =<\/span> new<\/span> Pacman<\/span>.<\/span>Map<\/span>(<\/span>blockSize<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | user<\/span> =<\/span> new<\/span> Pacman<\/span>.<\/span>User<\/span>(<\/span>{<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | "completedLevel"<\/span> : completedLevel<\/span>,<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | "eatenPill"<\/span> : eatenPill<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>,<\/span> map<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 0<\/span>,<\/span> len<\/span> =<\/span> ghostSpecs<\/span>.<\/span>length<\/span>;<\/span> i<\/span> <<\/span> len<\/span>;<\/span> i<\/span> +=<\/span> 1<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghost<\/span> =<\/span> new<\/span> Pacman<\/span>.<\/span>Ghost<\/span>(<\/span>{<\/span>"getTick"<\/span>:getTick<\/span>}<\/span>,<\/span> map<\/span>,<\/span> ghostSpecs<\/span>[<\/span>i<\/span>]<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ghosts<\/span>.<\/span>push<\/span>(<\/span>ghost<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | map<\/span>.<\/span>draw<\/span>(<\/span>ctx<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | dialog<\/span>(<\/span>"Loading ..."<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> extension<\/span> =<\/span> Modernizr<\/span>.<\/span>audio<\/span>.<\/span>ogg<\/span> ? 'ogg'<\/span> : 'mp3'<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> audio_files<\/span> =<\/span> [<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>"start"<\/span>,<\/span> root<\/span> +<\/span> "audio/opening_song."<\/span> +<\/span> extension<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>"die"<\/span>,<\/span> root<\/span> +<\/span> "audio/die."<\/span> +<\/span> extension<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>"eatghost"<\/span>,<\/span> root<\/span> +<\/span> "audio/eatghost."<\/span> +<\/span> extension<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>"eatpill"<\/span>,<\/span> root<\/span> +<\/span> "audio/eatpill."<\/span> +<\/span> extension<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>"eating"<\/span>,<\/span> root<\/span> +<\/span> "audio/eating.short."<\/span> +<\/span> extension<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>"eating2"<\/span>,<\/span> root<\/span> +<\/span> "audio/eating.short."<\/span> +<\/span> extension<\/span>]<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | load<\/span>(<\/span>audio_files<\/span>,<\/span> function<\/span>(<\/span>)<\/span> {<\/span> loaded<\/span>(<\/span>)<\/span>;<\/span> }<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> load<\/span>(<\/span>arr<\/span>,<\/span> callback<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>arr<\/span>.<\/span>length<\/span> ===<\/span> 0<\/span>)<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | callback<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> x<\/span> =<\/span> arr<\/span>.<\/span>pop<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | audio<\/span>.<\/span>load<\/span>(<\/span>x<\/span>[<\/span>0<\/span>]<\/span>,<\/span> x<\/span>[<\/span>1<\/span>]<\/span>,<\/span> function<\/span>(<\/span>)<\/span> {<\/span> load<\/span>(<\/span>arr<\/span>,<\/span> callback<\/span>)<\/span>;<\/span> }<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | function<\/span> loaded<\/span>(<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | dialog<\/span>(<\/span>"Press N to Start"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | document<\/span>.<\/span>addEventListener<\/span>(<\/span>"keydown"<\/span>,<\/span> keyDown<\/span>,<\/span> true<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | document<\/span>.<\/span>addEventListener<\/span>(<\/span>"keypress"<\/span>,<\/span> keyPress<\/span>,<\/span> true<\/span>)<\/span>;<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | timer<\/span> =<\/span> window<\/span>.<\/span>setInterval<\/span>(<\/span>mainLoop<\/span>,<\/span> 1000<\/span> /<\/span> Pacman<\/span>.<\/span>FPS<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | "init"<\/span> : init<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>(<\/span>)<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | /* Human readable keyCode index */<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> KEY<\/span> =<\/span> {<\/span>'BACKSPACE'<\/span>: 8<\/span>,<\/span> 'TAB'<\/span>: 9<\/span>,<\/span> 'NUM_PAD_CLEAR'<\/span>: 12<\/span>,<\/span> 'ENTER'<\/span>: 13<\/span>,<\/span> 'SHIFT'<\/span>: 16<\/span>,<\/span> 'CTRL'<\/span>: 17<\/span>,<\/span> 'ALT'<\/span>: 18<\/span>,<\/span> 'PAUSE'<\/span>: 19<\/span>,<\/span> 'CAPS_LOCK'<\/span>: 20<\/span>,<\/span> 'ESCAPE'<\/span>: 27<\/span>,<\/span> 'SPACEBAR'<\/span>: 32<\/span>,<\/span> 'PAGE_UP'<\/span>: 33<\/span>,<\/span> 'PAGE_DOWN'<\/span>: 34<\/span>,<\/span> 'END'<\/span>: 35<\/span>,<\/span> 'HOME'<\/span>: 36<\/span>,<\/span> 'ARROW_LEFT'<\/span>: 37<\/span>,<\/span> 'ARROW_UP'<\/span>: 38<\/span>,<\/span> 'ARROW_RIGHT'<\/span>: 39<\/span>,<\/span> 'ARROW_DOWN'<\/span>: 40<\/span>,<\/span> 'PRINT_SCREEN'<\/span>: 44<\/span>,<\/span> 'INSERT'<\/span>: 45<\/span>,<\/span> 'DELETE'<\/span>: 46<\/span>,<\/span> 'SEMICOLON'<\/span>: 59<\/span>,<\/span> 'WINDOWS_LEFT'<\/span>: 91<\/span>,<\/span> 'WINDOWS_RIGHT'<\/span>: 92<\/span>,<\/span> 'SELECT'<\/span>: 93<\/span>,<\/span> 'NUM_PAD_ASTERISK'<\/span>: 106<\/span>,<\/span> 'NUM_PAD_PLUS_SIGN'<\/span>: 107<\/span>,<\/span> 'NUM_PAD_HYPHEN-MINUS'<\/span>: 109<\/span>,<\/span> 'NUM_PAD_FULL_STOP'<\/span>: 110<\/span>,<\/span> 'NUM_PAD_SOLIDUS'<\/span>: 111<\/span>,<\/span> 'NUM_LOCK'<\/span>: 144<\/span>,<\/span> 'SCROLL_LOCK'<\/span>: 145<\/span>,<\/span> 'SEMICOLON'<\/span>: 186<\/span>,<\/span> 'EQUALS_SIGN'<\/span>: 187<\/span>,<\/span> 'COMMA'<\/span>: 188<\/span>,<\/span> 'HYPHEN-MINUS'<\/span>: 189<\/span>,<\/span> 'FULL_STOP'<\/span>: 190<\/span>,<\/span> 'SOLIDUS'<\/span>: 191<\/span>,<\/span> 'GRAVE_ACCENT'<\/span>: 192<\/span>,<\/span> 'LEFT_SQUARE_BRACKET'<\/span>: 219<\/span>,<\/span> 'REVERSE_SOLIDUS'<\/span>: 220<\/span>,<\/span> 'RIGHT_SQUARE_BRACKET'<\/span>: 221<\/span>,<\/span> 'APOSTROPHE'<\/span>: 222<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | (<\/span>function<\/span> (<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | /* 0 - 9 */<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>var<\/span> i<\/span> =<\/span> 48<\/span>;<\/span> i<\/span> <=<\/span> 57<\/span>;<\/span> i<\/span>++<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | KEY<\/span>[<\/span>''<\/span> +<\/span> (<\/span>i<\/span> -<\/span> 48<\/span>)<\/span>]<\/span> =<\/span> i<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | /* A - Z */<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 65<\/span>;<\/span> i<\/span> <=<\/span> 90<\/span>;<\/span> i<\/span>++<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | KEY<\/span>[<\/span>''<\/span> +<\/span> String<\/span>.<\/span>fromCharCode<\/span>(<\/span>i<\/span>)<\/span>]<\/span> =<\/span> i<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | /* NUM_PAD_0 - NUM_PAD_9 */<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 96<\/span>;<\/span> i<\/span> <=<\/span> 105<\/span>;<\/span> i<\/span>++<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | KEY<\/span>[<\/span>'NUM_PAD_'<\/span> +<\/span> (<\/span>i<\/span> -<\/span> 96<\/span>)<\/span>]<\/span> =<\/span> i<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | /* F1 - F12 */<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> =<\/span> 112<\/span>;<\/span> i<\/span> <=<\/span> 123<\/span>;<\/span> i<\/span>++<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | KEY<\/span>[<\/span>'F'<\/span> +<\/span> (<\/span>i<\/span> -<\/span> 112<\/span> +<\/span> 1<\/span>)<\/span>]<\/span> =<\/span> i<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>)<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>WALL<\/span> =<\/span> 0<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>BISCUIT<\/span> =<\/span> 1<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>EMPTY<\/span> =<\/span> 2<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>BLOCK<\/span> =<\/span> 3<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>PILL<\/span> =<\/span> 4<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>MAP<\/span> =<\/span> [<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 4<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 4<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>2<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 3<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>2<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 3<\/span>,<\/span> 3<\/span>,<\/span> 3<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>2<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 2<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>,<\/span> 2<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 4<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 4<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 1<\/span>,<\/span> 0<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>,<\/span> 0<\/span>]<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | Pacman<\/span>.<\/span>WALLS<\/span> =<\/span> [<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>0<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>3<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>3.5<\/span>,<\/span> 9.5<\/span>,<\/span> 3.5<\/span>,<\/span> 9<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>3.5<\/span>,<\/span> 8<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>3.5<\/span>,<\/span> 7.5<\/span>,<\/span> 3<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>1<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>0.5<\/span>,<\/span> 7.5<\/span>,<\/span> 0.5<\/span>,<\/span> 7<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>0.5<\/span>,<\/span> 1<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>0.5<\/span>,<\/span> 0.5<\/span>,<\/span> 1<\/span>,<\/span> 0.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>9<\/span>,<\/span> 0.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>9.5<\/span>,<\/span> 0.5<\/span>,<\/span> 9.5<\/span>,<\/span> 1<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>9.5<\/span>,<\/span> 3.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>9.5<\/span>,<\/span> 1<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>9.5<\/span>,<\/span> 0.5<\/span>,<\/span> 10<\/span>,<\/span> 0.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>18<\/span>,<\/span> 0.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>18.5<\/span>,<\/span> 0.5<\/span>,<\/span> 18.5<\/span>,<\/span> 1<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>18.5<\/span>,<\/span> 7<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>18.5<\/span>,<\/span> 7.5<\/span>,<\/span> 18<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>16<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>15.5<\/span>,<\/span> 7.5<\/span>,<\/span> 15.5<\/span>,<\/span> 8<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>15.5<\/span>,<\/span> 9<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>15.5<\/span>,<\/span> 9.5<\/span>,<\/span> 16<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>19<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>2.5<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>3.5<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>3<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>3.5<\/span>,<\/span> 2.5<\/span>,<\/span> 3.5<\/span>,<\/span> 3<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>3.5<\/span>,<\/span> 3.5<\/span>,<\/span> 3<\/span>,<\/span> 3.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>2.5<\/span>,<\/span> 3.5<\/span>,<\/span> 2.5<\/span>,<\/span> 3<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>2.5<\/span>,<\/span> 2.5<\/span>,<\/span> 3<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>15.5<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>16.5<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>16<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>16.5<\/span>,<\/span> 2.5<\/span>,<\/span> 16.5<\/span>,<\/span> 3<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>16.5<\/span>,<\/span> 3.5<\/span>,<\/span> 16<\/span>,<\/span> 3.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>15.5<\/span>,<\/span> 3.5<\/span>,<\/span> 15.5<\/span>,<\/span> 3<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>15.5<\/span>,<\/span> 2.5<\/span>,<\/span> 16<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>6<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>7<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>7.5<\/span>,<\/span> 2.5<\/span>,<\/span> 7.5<\/span>,<\/span> 3<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>7.5<\/span>,<\/span> 3.5<\/span>,<\/span> 7<\/span>,<\/span> 3.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>6<\/span>,<\/span> 3.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>5.5<\/span>,<\/span> 3.5<\/span>,<\/span> 5.5<\/span>,<\/span> 3<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>5.5<\/span>,<\/span> 2.5<\/span>,<\/span> 6<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>12<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>13<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>13.5<\/span>,<\/span> 2.5<\/span>,<\/span> 13.5<\/span>,<\/span> 3<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>13.5<\/span>,<\/span> 3.5<\/span>,<\/span> 13<\/span>,<\/span> 3.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>12<\/span>,<\/span> 3.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>11.5<\/span>,<\/span> 3.5<\/span>,<\/span> 11.5<\/span>,<\/span> 3<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>11.5<\/span>,<\/span> 2.5<\/span>,<\/span> 12<\/span>,<\/span> 2.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>7.5<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>9<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>9.5<\/span>,<\/span> 5.5<\/span>,<\/span> 9.5<\/span>,<\/span> 6<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>9.5<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>9.5<\/span>,<\/span> 6<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>9.5<\/span>,<\/span> 5.5<\/span>,<\/span> 10.5<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>11.5<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>5.5<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>5.5<\/span>,<\/span> 7<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>5.5<\/span>,<\/span> 7.5<\/span>,<\/span> 6<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>7.5<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>6<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>5.5<\/span>,<\/span> 7.5<\/span>,<\/span> 5.5<\/span>,<\/span> 8<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>5.5<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>13.5<\/span>,<\/span> 5.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>13.5<\/span>,<\/span> 7<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>13.5<\/span>,<\/span> 7.5<\/span>,<\/span> 13<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>11.5<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>13<\/span>,<\/span> 7.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>13.5<\/span>,<\/span> 7.5<\/span>,<\/span> 13.5<\/span>,<\/span> 8<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>13.5<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>0<\/span>,<\/span> 11.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>3<\/span>,<\/span> 11.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>3.5<\/span>,<\/span> 11.5<\/span>,<\/span> 3.5<\/span>,<\/span> 12<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>3.5<\/span>,<\/span> 13<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>3.5<\/span>,<\/span> 13.5<\/span>,<\/span> 3<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>1<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>0.5<\/span>,<\/span> 13.5<\/span>,<\/span> 0.5<\/span>,<\/span> 14<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>0.5<\/span>,<\/span> 17<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>0.5<\/span>,<\/span> 17.5<\/span>,<\/span> 1<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>1.5<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>1<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>0.5<\/span>,<\/span> 17.5<\/span>,<\/span> 0.5<\/span>,<\/span> 18<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>0.5<\/span>,<\/span> 21<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>0.5<\/span>,<\/span> 21.5<\/span>,<\/span> 1<\/span>,<\/span> 21.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>18<\/span>,<\/span> 21.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>18.5<\/span>,<\/span> 21.5<\/span>,<\/span> 18.5<\/span>,<\/span> 21<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>18.5<\/span>,<\/span> 18<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>18.5<\/span>,<\/span> 17.5<\/span>,<\/span> 18<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>17.5<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>18<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>18.5<\/span>,<\/span> 17.5<\/span>,<\/span> 18.5<\/span>,<\/span> 17<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>18.5<\/span>,<\/span> 14<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>18.5<\/span>,<\/span> 13.5<\/span>,<\/span> 18<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>16<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>15.5<\/span>,<\/span> 13.5<\/span>,<\/span> 15.5<\/span>,<\/span> 13<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>15.5<\/span>,<\/span> 12<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>15.5<\/span>,<\/span> 11.5<\/span>,<\/span> 16<\/span>,<\/span> 11.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>19<\/span>,<\/span> 11.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>5.5<\/span>,<\/span> 11.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>5.5<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>13.5<\/span>,<\/span> 11.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>13.5<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>2.5<\/span>,<\/span> 15.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>3<\/span>,<\/span> 15.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>3.5<\/span>,<\/span> 15.5<\/span>,<\/span> 3.5<\/span>,<\/span> 16<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>3.5<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>16.5<\/span>,<\/span> 15.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>16<\/span>,<\/span> 15.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>15.5<\/span>,<\/span> 15.5<\/span>,<\/span> 15.5<\/span>,<\/span> 16<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>15.5<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>5.5<\/span>,<\/span> 15.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>7.5<\/span>,<\/span> 15.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>11.5<\/span>,<\/span> 15.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>13.5<\/span>,<\/span> 15.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | <\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>2.5<\/span>,<\/span> 19.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>5<\/span>,<\/span> 19.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>5.5<\/span>,<\/span> 19.5<\/span>,<\/span> 5.5<\/span>,<\/span> 19<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>5.5<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>5.5<\/span>,<\/span> 19<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>5.5<\/span>,<\/span> 19.5<\/span>,<\/span> 6<\/span>,<\/span> 19.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>7.5<\/span>,<\/span> 19.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>11.5<\/span>,<\/span> 19.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>13<\/span>,<\/span> 19.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>13.5<\/span>,<\/span> 19.5<\/span>,<\/span> 13.5<\/span>,<\/span> 19<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>13.5<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>13.5<\/span>,<\/span> 19<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>13.5<\/span>,<\/span> 19.5<\/span>,<\/span> 14<\/span>,<\/span> 19.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>16.5<\/span>,<\/span> 19.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>7.5<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>9<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>9.5<\/span>,<\/span> 13.5<\/span>,<\/span> 9.5<\/span>,<\/span> 14<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>9.5<\/span>,<\/span> 15.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>9.5<\/span>,<\/span> 14<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>9.5<\/span>,<\/span> 13.5<\/span>,<\/span> 10<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>11.5<\/span>,<\/span> 13.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>7.5<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>9<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"curve"<\/span>: [<\/span>9.5<\/span>,<\/span> 17.5<\/span>,<\/span> 9.5<\/span>,<\/span> 18<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>9.5<\/span>,<\/span> 19.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>9.5<\/span>,<\/span> 18<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>9.5<\/span>,<\/span> 17.5<\/span>,<\/span> 10<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>11.5<\/span>,<\/span> 17.5<\/span>]<\/span>}<\/span>]<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | [<\/span>{<\/span>"move"<\/span>: [<\/span>8.5<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"line"<\/span>: [<\/span>8<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>7.5<\/span>,<\/span> 9.5<\/span>,<\/span> 7.5<\/span>,<\/span> 10<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>7.5<\/span>,<\/span> 11<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>7.5<\/span>,<\/span> 11.5<\/span>,<\/span> 8<\/span>,<\/span> 11.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>11<\/span>,<\/span> 11.5<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>11.5<\/span>,<\/span> 11.5<\/span>,<\/span> 11.5<\/span>,<\/span> 11<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>11.5<\/span>,<\/span> 10<\/span>]<\/span>}<\/span>,<\/span> {<\/span>"curve"<\/span>: [<\/span>11.5<\/span>,<\/span> 9.5<\/span>,<\/span> 11<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>,<\/span><\/td>\n <\/tr>\n |
<\/td>\n | {<\/span>"line"<\/span>: [<\/span>10.5<\/span>,<\/span> 9.5<\/span>]<\/span>}<\/span>]<\/span><\/td>\n <\/tr>\n |
<\/td>\n | ]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | Object<\/span>.<\/span>prototype<\/span>.<\/span>clone<\/span> =<\/span> function<\/span> (<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> i<\/span>,<\/span> newObj<\/span> =<\/span> (<\/span>this<\/span> instanceof<\/span> Array<\/span>)<\/span> ? [<\/span>]<\/span> : {<\/span>}<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | for<\/span> (<\/span>i<\/span> in<\/span> this<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>i<\/span> ===<\/span> 'clone'<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | continue<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>this<\/span>[<\/span>i<\/span>]<\/span> &&<\/span> typeof<\/span> this<\/span>[<\/span>i<\/span>]<\/span> ===<\/span> "object"<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | newObj<\/span>[<\/span>i<\/span>]<\/span> =<\/span> this<\/span>[<\/span>i<\/span>]<\/span>.<\/span>clone<\/span>(<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | newObj<\/span>[<\/span>i<\/span>]<\/span> =<\/span> this<\/span>[<\/span>i<\/span>]<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | return<\/span> newObj<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | \$<\/span>(<\/span>function<\/span>(<\/span>)<\/span>{<\/span><\/td>\n <\/tr>\n |
<\/td>\n | var<\/span> el<\/span> =<\/span> document<\/span>.<\/span>getElementById<\/span>(<\/span>"pacman"<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | if<\/span> (<\/span>Modernizr<\/span>.<\/span>canvas<\/span> &&<\/span> Modernizr<\/span>.<\/span>localstorage<\/span> &&<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | Modernizr<\/span>.<\/span>audio<\/span> &&<\/span> (<\/span>Modernizr<\/span>.<\/span>audio<\/span>.<\/span>ogg<\/span> ||<\/span> Modernizr<\/span>.<\/span>audio<\/span>.<\/span>mp3<\/span>)<\/span>)<\/span> {<\/span><\/td>\n <\/tr>\n |
<\/td>\n | window<\/span>.<\/span>setTimeout<\/span>(<\/span>function<\/span> (<\/span>)<\/span> {<\/span> PACMAN<\/span>.<\/span>init<\/span>(<\/span>el<\/span>,<\/span> "https://raw.githubusercontent.com/daleharvey/pacman/master/"<\/span>)<\/span>;<\/span> }<\/span>,<\/span> 0<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span> else<\/span> {<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | el<\/span>.<\/span>innerHTML<\/span> =<\/span> "Sorry, needs a decent browser<br /><small>"<\/span> +<\/span> <\/td>\n <\/tr>\n |
<\/td>\n | "(firefox 3.6+, Chrome 4+, Opera 10+ and Safari 4+)</small>"<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span><\/td>\n <\/tr>\n |
<\/td>\n | }<\/span>)<\/span>;<\/span><\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | \n<\/td>\n <\/tr>\n |
<\/td>\n | </<\/span>script<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | </<\/span>body<\/span>><\/span><\/td>\n <\/tr>\n |
<\/td>\n | </<\/span>html<\/span>><\/span><\/td>\n <\/tr>\n <\/table>\n<\/div>\n\n\n <\/div>\n\n <\/div>\n<\/div>\n\n <\/div>\n
Suscribirse a:
Entradas (Atom)
|
No hay comentarios:
Publicar un comentario