Προς το περιεχόμενο

Το Google τιμά τα 30 χρόνια του Pac man με “πραγματικό” παιχνίδι


nickarmy

Προτεινόμενες αναρτήσεις

  • Απαντ. 62
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

103 χιλιαδες, παιδια

 

103.png

 

 

Αnd the winner is...:-D

(εκτος αν βρεθει κανας φιλος και το περασει, που δε νομιζω)

 

είναι μικρό το μέγεθος τις εικόνας δεν φαίνεται καλά!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μα τι λέτε, δεν το κατέβασαν.

 

http://www.google.com/pacman/

 

Και παιζει και σε Iphone/Ipad. (link)

 

Απο τα λιγα παιχνιδια που μπορεις να εχεις στο Iphone χωρις να περασεις απο το app store. Εξυπνος τροπος απο την google να πει στην apple "αρπα την". ;)

 

(λεω και γω, τι το ηθελαν το javascript ενω με το flash και πιο ευκολα θα γινοταν η δουλεια και με πολυ λιγοτερη cpu usage)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν πρόκειται για java αλλα ούτε και για flash παιδιά. Είναι το νέο html 5 και το παιχνιδάκι έγινε σκόπιμα για την πρωόθηση του.

 

Εγω παντως javascript βλεπω οταν παταω Προβολη --> Κωδικας σελιδας στο firefox. Δεν ειναι java ή html5.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ειναι html κωδικας αυτος φιλε.. δες εδω μεχρι που μπορει να φτασει η html ;)

http://html5demos.com/

 

Να ο java script κωδικας του

 

 

google.pacman ||

function () {

var a = true,

e = false,

g = {},

i = [1, 4, 2, 8],

l = {

0: {

axis: 0,

increment: 0

},

1: {

axis: 0,

increment: -1

},

2: {

axis: 0,

increment: +1

},

4: {

axis: 1,

increment: -1

},

8: {

axis: 1,

increment: +1

}

},

m = [0, 7, 17, 32],

n = [{

x: 5,

y: 1,

w: 56

},

{

x: 5,

y: 4,

w: 5

},

{

x: 5,

y: 1,

h: 4

},

{

x: 9,

y: 1,

h: 12

},

{

x: 5,

y: 12,

h: 4

},

{

x: 10,

y: 12,

h: 4

},

{

x: 5,

y: 15,

w: 16

},

{

x: 5,

y: 12,

w: 31

},

{

x: 60,

y: 1,

h: 4

},

{

x: 54,

y: 1,

h: 4

},

{

x: 19,

y: 1,

h: 12

},

{

x: 19,

y: 4,

w: 26

},

{

x: 13,

y: 5,

w: 7

},

{

x: 13,

y: 5,

h: 4

},

{

x: 13,

y: 8,

w: 3

},

{

x: 56,

y: 4,

h: 9

},

{

x: 48,

y: 4,

w: 13

},

{

x: 48,

y: 1,

h: 12

},

{

x: 60,

y: 12,

h: 4

},

{

x: 44,

y: 15,

w: 17

},

{

x: 54,

y: 12,

h: 4

},

{

x: 44,

y: 12,

w: 17

},

{

x: 44,

y: 1,

h: 15

},

{

x: 41,

y: 13,

w: 4

},

{

x: 41,

y: 13,

h: 3

},

{

x: 38,

y: 13,

h: 3

},

{

x: 38,

y: 15,

w: 4

},

{

x: 35,

y: 10,

w: 10

},

{

x: 35,

y: 1,

h: 15

},

{

x: 35,

y: 13,

w: 4

},

{

x: 21,

y: 12,

h: 4

},

{

x: 24,

y: 12,

h: 4

},

{

x: 24,

y: 15,

w: 12

},

{

x: 27,

y: 4,

h: 9

},

{

x: 52,

y: 9,

w: 5

},

{

x: 56,

y: 8,

w: 10,

type: 1

},

{

x: 1,

y: 8,

w: 9,

type: 1

}],

o = [{

x: 1,

y: 8,

w: 8

},

{

x: 57,

y: 8,

w: 9

},

{

x: 44,

y: 2,

h: 10

},

{

x: 35,

y: 5,

h: 7

},

{

x: 36,

y: 4,

w: 8

},

{

x: 36,

y: 10,

w: 8

},

{

x: 39,

y: 15,

w: 2

}],

p = [{

x: 5,

y: 15

},

{

x: 5,

y: 3

},

{

x: 15,

y: 8

},

{

x: 60,

y: 3

},

{

x: 60,

y: 15

}],

q = [{

x: 2,

y: 8

},

{

x: 63,

y: 8

}],

r = {

1: [{

x: 39.5,

y: 15,

dir: 4

},

{

x: 39.5,

y: 4,

dir: 4,

scatterX: 57,

scatterY: -4

},

{

x: 39.5,

y: 7,

dir: 2,

scatterX: 0,

scatterY: -4

},

{

x: 37.625,

y: 7,

dir: 1,

scatterX: 57,

scatterY: 20

},

{

x: 41.375,

y: 7,

dir: 1,

scatterX: 0,

scatterY: 20

}],

2: [{

x: 40.25,

y: 15,

dir: 8

},

{

x: 38.75,

y: 15,

dir: 4

},

{

x: 39.5,

y: 4,

dir: 4,

scatterX: 57,

scatterY: -4

},

{

x: 39.5,

y: 7,

dir: 2,

scatterX: 0,

scatterY: -4

},

{

x: 37.625,

y: 7,

dir: 1,

scatterX: 57,

scatterY: 20

},

{

x: 41.375,

y: 7,

dir: 1,

scatterX: 0,

scatterY: 20

}]

},

s = [32, 312],

v = [80, 312],

w = {

0: 0.16,

1: 0.23,

2: 1,

3: 1,

4: 2.23,

5: 0.3,

6: 1.9,

7: 2.23,

8: 1.9,

9: 5,

10: 1.9,

11: 1.18,

12: 0.3,

13: 0.5,

14: 1.9,

15: 9,

16: 10,

17: 0.26

},

y = 0.8 * 0.4,

z = [{},

{

ghostSpeed: 0.75,

ghostTunnelSpeed: 0.4,

playerSpeed: 0.8,

dotEatingSpeed: 0.71,

ghostFrightSpeed: 0.5,

playerFrightSpeed: 0.9,

dotEatingFrightSpeed: 0.79,

elroyDotsLeftPart1: 20,

elroySpeedPart1: 0.8,

elroyDotsLeftPart2: 10,

elroySpeedPart2: 0.85,

frightTime: 6,

frightBlinkCount: 5,

fruit: 1,

fruitScore: 100,

ghostModeSwitchTimes: [7, 20, 7, 20, 5, 20, 5, 1],

penForceTime: 4,

penLeavingLimits: [0, 0, 30, 60]

},

{

ghostSpeed: 0.85,

ghostTunnelSpeed: 0.45,

playerSpeed: 0.9,

dotEatingSpeed: 0.79,

ghostFrightSpeed: 0.55,

playerFrightSpeed: 0.95,

dotEatingFrightSpeed: 0.83,

elroyDotsLeftPart1: 30,

elroySpeedPart1: 0.9,

elroyDotsLeftPart2: 15,

elroySpeedPart2: 0.95,

frightTime: 5,

frightBlinkCount: 5,

fruit: 2,

fruitScore: 300,

ghostModeSwitchTimes: [7, 20, 7, 20, 5, 1033, 1 / 60, 1],

penForceTime: 4,

penLeavingLimits: [0, 0, 0, 50],

cutsceneId: 1

},

{

ghostSpeed: 0.85,

ghostTunnelSpeed: 0.45,

playerSpeed: 0.9,

dotEatingSpeed: 0.79,

ghostFrightSpeed: 0.55,

playerFrightSpeed: 0.95,

dotEatingFrightSpeed: 0.83,

elroyDotsLeftPart1: 40,

elroySpeedPart1: 0.9,

elroyDotsLeftPart2: 20,

elroySpeedPart2: 0.95,

frightTime: 4,

frightBlinkCount: 5,

fruit: 3,

fruitScore: 500,

ghostModeSwitchTimes: [7, 20, 7, 20, 5, 1033, 1 / 60, 1],

penForceTime: 4,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.85,

ghostTunnelSpeed: 0.45,

playerSpeed: 0.9,

dotEatingSpeed: 0.79,

ghostFrightSpeed: 0.55,

playerFrightSpeed: 0.95,

dotEatingFrightSpeed: 0.83,

elroyDotsLeftPart1: 40,

elroySpeedPart1: 0.9,

elroyDotsLeftPart2: 20,

elroySpeedPart2: 0.95,

frightTime: 3,

frightBlinkCount: 5,

fruit: 3,

fruitScore: 500,

ghostModeSwitchTimes: [7, 20, 7, 20, 5, 1033, 1 / 60, 1],

penForceTime: 4,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 40,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 20,

elroySpeedPart2: 1.05,

frightTime: 2,

frightBlinkCount: 5,

fruit: 4,

fruitScore: 700,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0],

cutsceneId: 2

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 50,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 25,

elroySpeedPart2: 1.05,

frightTime: 5,

frightBlinkCount: 5,

fruit: 4,

fruitScore: 700,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 50,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 25,

elroySpeedPart2: 1.05,

frightTime: 2,

frightBlinkCount: 5,

fruit: 5,

fruitScore: 1E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 50,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 25,

elroySpeedPart2: 1.05,

frightTime: 2,

frightBlinkCount: 5,

fruit: 5,

fruitScore: 1E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 60,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 30,

elroySpeedPart2: 1.05,

frightTime: 1,

frightBlinkCount: 3,

fruit: 6,

fruitScore: 2E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0],

cutsceneId: 3

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 60,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 30,

elroySpeedPart2: 1.05,

frightTime: 5,

frightBlinkCount: 5,

fruit: 6,

fruitScore: 2E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 60,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 30,

elroySpeedPart2: 1.05,

frightTime: 2,

frightBlinkCount: 5,

fruit: 7,

fruitScore: 3E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 80,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 40,

elroySpeedPart2: 1.05,

frightTime: 1,

frightBlinkCount: 3,

fruit: 7,

fruitScore: 3E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 80,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 40,

elroySpeedPart2: 1.05,

frightTime: 1,

frightBlinkCount: 3,

fruit: 8,

fruitScore: 5E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0],

cutsceneId: 3

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 80,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 40,

elroySpeedPart2: 1.05,

frightTime: 3,

frightBlinkCount: 5,

fruit: 8,

fruitScore: 5E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 100,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 50,

elroySpeedPart2: 1.05,

frightTime: 1,

frightBlinkCount: 3,

fruit: 8,

fruitScore: 5E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 100,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 50,

elroySpeedPart2: 1.05,

frightTime: 1,

frightBlinkCount: 3,

fruit: 8,

fruitScore: 5E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 100,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 50,

elroySpeedPart2: 1.05,

frightTime: 0,

frightBlinkCount: 0,

fruit: 8,

fruitScore: 5E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0],

cutsceneId: 3

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 100,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 50,

elroySpeedPart2: 1.05,

frightTime: 1,

frightBlinkCount: 3,

fruit: 8,

fruitScore: 5E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 120,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 60,

elroySpeedPart2: 1.05,

frightTime: 0,

frightBlinkCount: 0,

fruit: 8,

fruitScore: 5E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 1,

dotEatingSpeed: 0.87,

ghostFrightSpeed: 0.6,

playerFrightSpeed: 1,

dotEatingFrightSpeed: 0.87,

elroyDotsLeftPart1: 120,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 60,

elroySpeedPart2: 1.05,

frightTime: 0,

frightBlinkCount: 0,

fruit: 8,

fruitScore: 5E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

},

{

ghostSpeed: 0.95,

ghostTunnelSpeed: 0.5,

playerSpeed: 0.9,

dotEatingSpeed: 0.79,

ghostFrightSpeed: 0.75,

playerFrightSpeed: 0.9,

dotEatingFrightSpeed: 0.79,

elroyDotsLeftPart1: 120,

elroySpeedPart1: 1,

elroyDotsLeftPart2: 60,

elroySpeedPart2: 1.05,

frightTime: 0,

frightBlinkCount: 0,

fruit: 8,

fruitScore: 5E3,

ghostModeSwitchTimes: [5, 20, 5, 20, 5, 1037, 1 / 60, 1],

penForceTime: 3,

penLeavingLimits: [0, 0, 0, 0]

}],

A = {

1: [{

x: 37.6,

y: 7,

dir: 1,

dest: 6.375,

speed: 0.48

},

{

x: 37.6,

y: 6.375,

dir: 2,

dest: 7.625,

speed: 0.48

},

{

x: 37.6,

y: 7.625,

dir: 1,

dest: 7,

speed: 0.48

}],

2: [{

x: 39.5,

y: 7,

dir: 2,

dest: 7.625,

speed: 0.48

},

{

x: 39.5,

y: 7.625,

dir: 1,

dest: 6.375,

speed: 0.48

},

{

x: 39.5,

y: 6.375,

dir: 2,

dest: 7,

speed: 0.48

}],

3: [{

x: 41.4,

y: 7,

dir: 1,

dest: 6.375,

speed: 0.48

},

{

x: 41.4,

y: 6.375,

dir: 2,

dest: 7.625,

speed: 0.48

},

{

x: 41.4,

y: 7.625,

dir: 1,

dest: 7,

speed: 0.48

}],

4: [{

x: 37.6,

y: 7,

dir: 8,

dest: 39.5,

speed: y

},

{

x: 39.5,

y: 7,

dir: 1,

dest: 4,

speed: y

}],

5: [{

x: 39.5,

y: 7,

dir: 1,

dest: 4,

speed: y

}],

6: [{

x: 41.4,

y: 7,

dir: 4,

dest: 39.5,

speed: y

},

{

x: 39.5,

y: 7,

dir: 1,

dest: 4,

speed: y

}],

7: [{

x: 39.5,

y: 4,

dir: 2,

dest: 7,

speed: 1.6

},

{

x: 39.5,

y: 7,

dir: 4,

dest: 37.625,

speed: 1.6

}],

8: [{

x: 39.5,

y: 4,

dir: 2,

dest: 7,

speed: 1.6

}],

9: [{

x: 39.5,

y: 4,

dir: 2,

dest: 7,

speed: 1.6

},

{

x: 39.5,

y: 7,

dir: 8,

dest: 41.375,

speed: 1.6

}],

10: [{

x: 37.6,

y: 7,

dir: 8,

dest: 39.5,

speed: y

},

{

x: 39.5,

y: 7,

dir: 1,

dest: 4,

speed: y

}],

11: [{

x: 39.5,

y: 7,

dir: 1,

dest: 4,

speed: y

}],

12: [{

x: 41.4,

y: 7,

dir: 4,

dest: 39.5,

speed: y

},

{

x: 39.5,

y: 7,

dir: 1,

dest: 4,

speed: y

}]

},

B = {

1: {

actors: [{

ghost: e,

x: 64,

y: 9,

id: 0

},

{

ghost: a,

x: 68.2,

y: 9,

id: 1

}],

sequence: [{

time: 5.5,

moves: [{

dir: 4,

speed: 0.75 * 0.8 * 2

},

{

dir: 4,

speed: 0.78 * 0.8 * 2

}]

},

{

time: 0.1,

moves: [{

dir: 4,

speed: 32

},

{

dir: 4,

speed: 0

}]

},

{

time: 9,

moves: [{

dir: 8,

speed: 0.75 * 0.8 * 2,

elId: "pcm-bpcm"

},

{

dir: 8,

speed: 0.8,

mode: 4

}]

}]

},

2: {

actors: [{

ghost: e,

x: 64,

y: 9,

id: 0

},

{

ghost: a,

x: 70.2,

y: 9,

id: 1

},

{

ghost: a,

x: 32,

y: 9.5,

id: 2

}],

sequence: [{

time: 2.7,

moves: [{

dir: 4,

speed: 0.75 * 0.8 * 2

},

{

dir: 4,

speed: 0.78 * 0.8 * 2

},

{

dir: 0,

speed: 0,

elId: "pcm-stck"

}]

},

{

time: 1,

moves: [{

dir: 4,

speed: 0.75 * 0.8 * 2

},

{

dir: 4,

speed: 0.1 * 0.8

},

{

dir: 0,

speed: 0,

elId: "pcm-stck"

}]

},

{

time: 1.3,

moves: [{

dir: 4,

speed: 0.75 * 0.8 * 2

},

{

dir: 4,

speed: 0

},

{

dir: 0,

speed: 0,

elId: "pcm-stck"

}]

},

{

time: 1,

moves: [{

dir: 4,

speed: 0.75 * 0.8 * 2

},

{

dir: 4,

speed: 0,

elId: "pcm-ghfa"

},

{

dir: 0,

speed: 0,

elId: "pcm-stck"

}]

},

{

time: 2.5,

moves: [{

dir: 4,

speed: 0.75 * 0.8 * 2

},

{

dir: 4,

speed: 0,

elId: "pcm-ghfa"

},

{

dir: 0,

speed: 0,

elId: "pcm-stck"

}]

}]

},

3: {

actors: [{

ghost: e,

x: 64,

y: 9,

id: 0

},

{

ghost: a,

x: 70.2,

y: 9,

id: 2

}],

sequence: [{

time: 5.3,

moves: [{

dir: 4,

speed: 0.75 * 0.8 * 2

},

{

dir: 4,

speed: 0.78 * 0.8 * 2,

elId: "pcm-ghin"

}]

},

{

time: 5.3,

moves: [{

dir: 4,

speed: 0

},

{

dir: 8,

speed: 0.78 * 0.8 * 2,

elId: "pcm-gbug"

}]

}]

}

},

C = [90, 45, 30],

D = C[0];

 

function E(B) {

this.id = b

}

E.prototype.A = function () {

var b = r[g.playerCount][this.id];

this.pos = [b.y * 8, b.x * 8];

this.posDelta = [0, 0];

this.tilePos = [b.y * 8, b.x * 8];

this.targetPos = [b.scatterY * 8, b.scatterX * 8];

this.scatterPos = [b.scatterY * 8, b.scatterX * 8];

this.lastActiveDir = this.dir = b.dir;

this.physicalSpeed = this.requestedDir = this.nextDir = 0;

this.c(0);

this.reverseDirectionsNext = this.freeToLeavePen = this.modeChangedWhileInPen = this.eatenInThisFrightMode = e;

this.l()

};

E.prototype.createElement = function () {

this.el = document.createElement("div");

this.el.className = "pcm-ac";

this.el.id = "actor" + this.id;

g.prepareElement(this.el, 0, 0);

g.playfieldEl.appendChild(this.el);

this.elPos = [0, 0];

this.elBackgroundPos = [0, 0]

};

E.prototype.a = function (B) {

var c = this.mode;

this.mode = b;

if (this.id == g.playerCount + 3 && (b == 16 || c == 16)) g.updateCruiseElroySpeed();

switch © {

case 32:

g.ghostExitingPenNow = e;

break;

case 8:

g.ghostEyesCount > 0 && g.ghostEyesCount--;

g.ghostEyesCount == 0 && g.playAmbientSound();

break

}

switch (B) {

case 4:

this.fullSpeed = g.levels.ghostFrightSpeed * 0.8;

this.tunnelSpeed = g.levels.ghostTunnelSpeed * 0.8;

this.followingRoutine = e;

break;

case 1:

this.fullSpeed = g.levels.ghostSpeed * 0.8;

this.tunnelSpeed = g.levels.ghostTunnelSpeed * 0.8;

this.followingRoutine =

e;

break;

case 2:

this.targetPos = this.scatterPos;

this.fullSpeed = g.levels.ghostSpeed * 0.8;

this.tunnelSpeed = g.levels.ghostTunnelSpeed * 0.8;

this.followingRoutine = e;

break;

case 8:

this.tunnelSpeed = this.fullSpeed = 1.6;

this.targetPos = [s[0], s[1]];

this.freeToLeavePen = this.followingRoutine = e;

break;

case 16:

this.l();

this.followingRoutine = a;

this.routineMoveId = -1;

switch (this.id) {

case g.playerCount + 1:

this.routineToFollow = 2;

break;

case g.playerCount + 2:

this.routineToFollow = 1;

break;

case g.playerCount + 3:

this.routineToFollow =

3;

break

}

break;

case 32:

this.followingRoutine = a;

this.routineMoveId = -1;

switch (this.id) {

case g.playerCount + 1:

this.routineToFollow = 5;

break;

case g.playerCount + 2:

this.routineToFollow = 4;

break;

case g.playerCount + 3:

this.routineToFollow = 6;

break

}

g.ghostExitingPenNow = a;

break;

case 64:

this.followingRoutine = a;

this.routineMoveId = -1;

switch (this.id) {

case g.playerCount:

case g.playerCount + 1:

this.routineToFollow = 8;

break;

case g.playerCount + 2:

this.routineToFollow = 7;

break;

case g.playerCount + 3:

this.routineToFollow = 9;

break

}

break;

case 128:

this.followingRoutine = a;

this.routineMoveId = -1;

switch (this.id) {

case g.playerCount:

case g.playerCount + 1:

this.routineToFollow = 11;

break;

case g.playerCount + 2:

this.routineToFollow = 10;

break;

case g.playerCount + 3:

this.routineToFollow = 12;

break

}

break

}

this.d()

};

E.prototype.l = function () {

if (this.id >= g.playerCount) this.targetPlayerId = Math.floor(g.rand() * g.playerCount)

};

E.prototype.z = function (B) {

if (this.dir == g.oppositeDirections) {

this.dir = b;

this.posDelta = [0, 0];

this.currentSpeed != 2 && this.c(0);

if (this.dir != 0) this.lastActiveDir = this.dir;

this.nextDir = 0

} else if (this.dir != B) if (this.dir == 0) {

if (g.playfield[this.pos[0]][this.pos[1]].allowedDir & B) this.dir = b

} else {

var c = g.playfield[this.tilePos[0]][this.tilePos[1]];

if (c && c.allowedDir & B) {

c = l[this.dir];

var d = [this.pos[0], this.pos[1]];

d[c.axis] -= c.increment;

var f = 0;

if (d[0] == this.tilePos[0] && d[1] == this.tilePos[1]) f = 1;

else {

d[c.axis] -= c.increment;

if (d[0] == this.tilePos[0] && d[1] == this.tilePos[1]) f = 2

}

if (f) {

this.dir = b;

this.pos[0] = this.tilePos[0];

this.pos[1] = this.tilePos[1];

c = l[this.dir];

this.pos[c.axis] += c.increment * f;

return

}

}

this.nextDir = b;

this.posDelta = [0, 0]

}

};

E.prototype.i = function (B) {

var c = this.tilePos,

d = l[this.dir],

f = [c[0], c[1]];

f[d.axis] += d.increment * 8;

var h = g.playfield[f[0]][f[1]];

if (b && !h.intersection) h = g.playfield[c[0]][c[1]];

if (h.intersection) switch (this.mode) {

case 2:

case 1:

case 8:

if ((this.dir & h.allowedDir) == 0 && h.allowedDir == g.oppositeDirections[this.dir]) this.nextDir = g.oppositeDirections[this.dir];

else {

b = 99999999999;

c = 0;

for (var j in i) {

var k = i[j];

if (h.allowedDir & k && this.dir != g.oppositeDirections[k]) {

d = l[k];

var x = [f[0], f[1]];

x[d.axis] += d.increment;

d = g.getDistance(x, [this.targetPos[0], this.targetPos[1]]);

if (d < B) {

b = d;

c = k

}

}

}

if © this.nextDir = c

}

break;

case 4:

if ((this.dir & h.allowedDir) == 0 && h.allowedDir == g.oppositeDirections[this.dir]) this.nextDir = g.oppositeDirections[this.dir];

else {

do f = i[Math.floor(g.rand() * 4)];

while ((f & h.allowedDir) == 0 || f == g.oppositeDirections[this.dir]);

this.nextDir = f

}

break

}

};

E.prototype.p = function (B) {

g.tilesChanged = a;

if (this.reverseDirectionsNext) {

this.dir = g.oppositeDirections[this.dir];

this.nextDir = 0;

this.reverseDirectionsNext = e;

this.i(a)

}

if (!this.ghost && !g.playfield[b[0]][b[1]].path) {

this.pos[0] = this.lastGoodTilePos[0];

this.pos[1] = this.lastGoodTilePos[1];

b[0] = this.lastGoodTilePos[0];

b[1] = this.lastGoodTilePos[1];

this.dir = 0

} else this.lastGoodTilePos = [b[0], b[1]];

g.playfield[b[0]][b[1]].type == 1 && this.mode != 8 ? this.c(2) : this.c(0);

!this.ghost && g.playfield[b[0]][b[1]].dot && g.dotEaten(this.id, B);

this.tilePos[0] = b[0];

this.tilePos[1] = b[1]

};

E.prototype.t = function () {

var b = this.tilePos;

switch (this.dir) {

case 1:

var c = [b[0], b[1]],

d = [b[0] + 3.6, b[1]];

break;

case 2:

c = [b[0] - 4, b[1]];

d = [b[0], b[1]];

break;

case 4:

c = [b[0], b[1]];

d = [b[0], b[1] + 3.6];

break;

case 8:

c = [b[0], b[1] - 4];

d = [b[0], b[1]];

break

}

if (this.pos[0] >= c[0] && this.pos[0] <= d[0] && this.pos[1] >= c[1] && this.pos[1] <= d[1]) {

b = l[this.nextDir];

this.posDelta[b.axis] += b.increment

}

};

E.prototype.n = function () {

if (this.pos[0] == q[0].y * 8 && this.pos[1] == q[0].x * 8) {

this.pos[0] = q[1].y * 8;

this.pos[1] = (q[1].x - 1) * 8

} else if (this.pos[0] == q[1].y * 8 && this.pos[1] == q[1].x * 8) {

this.pos[0] = q[0].y * 8;

this.pos[1] = (q[0].x + 1) * 8

}

this.mode == 8 && this.pos[0] == s[0] && this.pos[1] == s[1] && this.a(64);

if (!this.ghost && this.pos[0] == v[0] && (this.pos[1] == v[1] || this.pos[1] == v[1] + 8)) g.eatFruit(this.id)

};

E.prototype.u = function () {

this.n();

this.ghost && this.i(e);

var b = g.playfield[this.pos[0]][this.pos[1]];

if (b.intersection) if (this.nextDir && this.nextDir & b.allowedDir) {

if (this.dir != 0) this.lastActiveDir = this.dir;

this.dir = this.nextDir;

this.nextDir = 0;

if (!this.ghost) {

this.pos[0] += this.posDelta[0];

this.pos[1] += this.posDelta[1];

this.posDelta = [0, 0]

}

} else if ((this.dir & b.allowedDir) == 0) {

if (this.dir != 0) this.lastActiveDir = this.dir;

this.nextDir = this.dir = 0;

this.c(0)

}

};

E.prototype.o = function () {

var b = this.pos[0] / 8,

c = this.pos[1] / 8,

d = [Math.round(B) * 8, Math.round© * 8];

if (d[0] != this.tilePos[0] || d[1] != this.tilePos[1]) this.p(d);

else {

b = [Math.floor(B) * 8, Math.floor© * 8];

this.pos[1] == b[1] && this.pos[0] == b[0] && this.u()

}!this.ghost && this.nextDir && g.playfield[d[0]][d[1]].intersection && this.nextDir & g.playfield[d[0]][d[1]].allowedDir && this.t()

};

E.prototype.B = function () {

if (this.id == g.playerCount && g.dotsRemaining < g.levels.elroyDotsLeftPart1 && this.mode == 2 && (!g.lostLifeOnThisLevel || g.actors[g.playerCount + 3].mode != 16)) {

var b = g.actors[this.targetPlayerId];

this.targetPos = [b.tilePos[0], b.tilePos[1]]

} else if (this.ghost && this.mode == 1) {

b = g.actors[this.targetPlayerId];

switch (this.id) {

case g.playerCount:

this.targetPos = [b.tilePos[0], b.tilePos[1]];

break;

case g.playerCount + 1:

this.targetPos = [b.tilePos[0], b.tilePos[1]];

var c = l[b.dir];

this.targetPos[c.axis] += 32 * c.increment;

if (b.dir == 1) this.targetPos[1] -= 32;

break;

case g.playerCount + 2:

var d = g.actors[g.playerCount],

f = [b.tilePos[0], b.tilePos[1]];

c = l[b.dir];

f[c.axis] += 16 * c.increment;

if (b.dir == 1) f[1] -= 16;

this.targetPos[0] = f[0] * 2 - d.tilePos[0];

this.targetPos[1] = f[1] * 2 - d.tilePos[1];

break;

case g.playerCount + 3:

c = g.getDistance(b.tilePos, this.tilePos);

this.targetPos = c > 64 ? [b.tilePos[0], b.tilePos[1]] : this.scatterPos;

break

}

}

};

E.prototype.v = function () {

this.routineMoveId++;

if (this.routineMoveId == A[this.routineToFollow].length) if (this.mode == 16 && this.freeToLeavePen && !g.ghostExitingPenNow) {

this.eatenInThisFrightMode ? this.a(128) : this.a(32);

return

} else if (this.mode == 32 || this.mode == 128) {

this.pos = [s[0], s[1] + 4];

this.dir = this.modeChangedWhileInPen ? 8 : 4;

var b = g.mainGhostMode;

if (this.mode == 128 && b == 4) b = g.lastMainGhostMode;

this.a(B);

return

} else if (this.mode == 64) {

if (this.id == g.playerCount || this.freeToLeavePen) this.a(128);

else {

this.eatenInThisFrightMode =

a;

this.a(16)

}

return

} else this.routineMoveId = 0;

b = A[this.routineToFollow][this.routineMoveId];

this.pos[0] = b.y * 8;

this.pos[1] = b.x * 8;

this.dir = b.dir;

this.physicalSpeed = 0;

this.speedIntervals = g.getSpeedIntervals(b.speed);

this.proceedToNextRoutineMove = e;

this.b()

};

E.prototype.m = function () {

var b = A[this.routineToFollow][this.routineMoveId];

if (B) if (this.speedIntervals[g.intervalTime]) {

var c = l[this.dir];

this.pos[c.axis] += c.increment;

switch (this.dir) {

case 1:

case 4:

if (this.pos[c.axis] < b.dest * 8) {

this.pos[c.axis] = b.dest * 8;

this.proceedToNextRoutineMove = a

}

break;

case 2:

case 8:

if (this.pos[c.axis] > b.dest * 8) {

this.pos[c.axis] = b.dest * 8;

this.proceedToNextRoutineMove = a

}

break

}

this.b()

}

};

E.prototype.j = function () {

if (this.routineMoveId == -1 || this.proceedToNextRoutineMove) this.v();

this.m()

};

E.prototype.d = function () {

switch (this.currentSpeed) {

case 0:

var b = this.id == g.playerCount && (this.mode == 2 || this.mode == 1) ? g.cruiseElroySpeed : this.fullSpeed;

break;

case 1:

b = this.dotEatingSpeed;

break;

case 2:

b = this.tunnelSpeed;

break

}

if (this.physicalSpeed != B) {

this.physicalSpeed = b;

this.speedIntervals = g.getSpeedIntervals(this.physicalSpeed)

}

};

E.prototype.c = function (B) {

this.currentSpeed = b;

this.d()

};

E.prototype.e = function () {

if (this.dir) if (this.speedIntervals[g.intervalTime]) {

var b = l[this.dir];

this.pos[b.axis] += b.increment;

this.o();

this.b()

}

};

E.prototype.move = function () {

if (g.gameplayMode == 0 || this.ghost && g.gameplayMode == 1 && (this.mode == 8 || this.mode == 64)) {

if (this.requestedDir != 0) {

this.z(this.requestedDir);

this.requestedDir = 0

}

if (this.followingRoutine) {

this.j();

this.mode == 64 && this.j()

} else {

this.e();

this.mode == 8 && this.e()

}

}

};

E.prototype.k = function () {

var b = g.getPlayfieldX(this.pos[1] + this.posDelta[1]),

c = g.getPlayfieldY(this.pos[0] + this.posDelta[0]);

if (this.elPos[0] != c || this.elPos[1] != B) {

this.elPos[0] = c;

this.elPos[1] = b;

this.el.style.left = b + "px";

this.el.style.top = c + "px"

}

};

E.prototype.s = function () {

var b = 0,

c = 0,

d = this.dir;

if (d == 0) d = this.lastActiveDir;

if (g.gameplayMode == 1 && this.id == g.playerEatingGhostId) {

b = 3;

c = 0

} else if ((g.gameplayMode == 9 || g.gameplayMode == 10) && this.id == 0) {

b = 2;

c = 0

} else if (g.gameplayMode == 4 || g.gameplayMode == 5 || g.gameplayMode == 7) {

b = this.id == 0 ? 2 : 4;

c = 0

} else if (g.gameplayMode == 3) if (this.id == g.playerDyingId) {

d = 20 - Math.floor(g.gameplayModeTime / g.timing[4] * 21);

if (this.id == 0) {

b = d - 1;

switch (B) {

case -1:

b = 0;

break;

case 11:

b = 10;

break;

case 12:

case 13:

case 14:

case 15:

case 16:

case 17:

case 18:

case 19:

case 20:

b =

11;

break

}

c = 12

} else switch (d) {

case 0:

case 1:

case 2:

case 6:

case 10:

b = 4;

c = 3;

break;

case 3:

case 7:

case 11:

b = 4;

c = 0;

break;

case 4:

case 8:

case 12:

case 13:

case 14:

case 15:

case 16:

case 17:

case 18:

case 19:

case 20:

b = 4;

c = 2;

break;

case 5:

case 9:

b = 4;

c = 1;

break

}

} else {

b = 3;

c = 0

} else if (this.el.id == "pcm-bpcm") {

b = 14;

c = 0;

d = Math.floor(g.globalTime * 0.2) % 4;

if (d == 3) d = 1;

c += 2 * d

} else {

switch (d) {

case 4:

c = 0;

break;

case 8:

c = 1;

break;

case 1:

c = 2;

break;

case 2:

c = 3;

break

}

if (g.gameplayMode != 2) b = Math.floor(g.globalTime * 0.3) % 4;

if (b == 3 && this.dir == 0) b = 0;

if (b == 2 && this.id == 0) b = 0;

if (b == 3) {

b = 2;

if (this.id == 0) c = 0

}

if (this.id == 1) b += 4

}

return [c, b]

};

E.prototype.r = function () {

var b = 0,

c = 0;

if (g.gameplayMode == 10 || g.gameplayMode == 4 || g.gameplayMode == 3) {

b = 3;

c = 0

} else if (g.gameplayMode == 1 && this.id == g.ghostBeingEatenId) {

switch (g.modeScoreMultiplier) {

case 2:

b = 0;

break;

case 4:

b = 1;

break;

case 8:

b = 2;

break;

case 16:

b = 3;

break

}

c = 11;

this.el.className = "pcm-ac pcm-n"

} else if (this.mode == 4 || (this.mode == 16 || this.mode == 32) && g.mainGhostMode == 4 && !this.eatenInThisFrightMode) {

b = 0;

c = 8;

if (g.frightModeTime < g.levels.frightTotalTime - g.levels.frightTime && Math.floor(g.frightModeTime / g.timing[1]) % 2 == 0) b += 2;

b += Math.floor(g.globalTime / 16) % 2

} else if (this.mode == 8 || this.mode == 64) {

c = this.nextDir;

if (!c) c = this.dir;

switch © {

case 4:

b = 2;

break;

case 8:

b = 3;

break;

case 1:

b = 0;

break;

case 2:

b = 1;

break

}

c = 10

} else if (this.el.id == "pcm-ghin") {

b = 6;

c = 8;

b += Math.floor(g.globalTime / 16) % 2

} else if (this.el.id == "pcm-gbug") {

b = 6;

c = 9;

c += Math.floor(g.globalTime / 16) % 2

} else if (this.el.id == "pcm-ghfa") {

b = g.cutsceneSequenceId == 3 ? 6 : 7;

c = 11

} else if (this.el.id == "pcm-stck") {

b = g.cutsceneSequenceId == 1 ? g.cutsceneTime > 60 ? 1 : g.cutsceneTime > 45 ? 2 : 3 : g.cutsceneSequenceId == 2 ? 3 : g.cutsceneSequenceId == 3 || g.cutsceneSequenceId == 4 ? 4 : 0;

c = 13

} else {

c = this.nextDir;

if (!c || g.playfield[this.tilePos[0]][this.tilePos[1]].type == 1) c = this.dir;

switch © {

case 4:

b = 4;

break;

case 8:

b = 6;

break;

case 1:

b = 0;

break;

case 2:

b = 2;

break

}

c = 4 + this.id - g.playerCount;

if (this.speed > 0 || g.gameplayMode != 13) b += Math.floor(g.globalTime / 16) % 2

}

return [c, b]

};

E.prototype.b = function () {

this.k();

var b = [0, 0];

b = g.gameplayMode == 8 || g.gameplayMode == 14 ? [0, 3] : this.ghost ? this.r() : this.s();

if (this.elBackgroundPos[0] != b[0] || this.elBackgroundPos[1] != b[1]) {

this.elBackgroundPos[0] = b[0];

this.elBackgroundPos[1] = b[1];

b[0] *= 16;

b[1] *= 16;

g.changeElementBkPos(this.el, b[1], b[0], a)

}

};

g.rand = function () {

var b = 4294967296,

c = 134775813;

c = c * g.randSeed + 1;

return (g.randSeed = c % B) / b

};

g.seed = function (B) {

g.randSeed = b

};

g.getDistance = function (b, c) {

return Math.sqrt((c[1] - b[1]) * (c[1] - b[1]) + (c[0] - b[0]) * (c[0] - b[0]))

};

g.getPlayfieldX = function (B) {

return b + -32

};

g.getPlayfieldY = function (B) {

return b + 0

};

g.getCorrectedSpritePos = function (B) {

return b / 8 * 10 + 2

};

g.getDotElementId = function (b, c) {

return "pcm-d" + b + "-" + c

};

g.showElementById = function (b, c) {

var d = document.getElementById(B);

if (d) d.style.visibility = c ? "visible" : "hidden"

};

g.getAbsoluteElPos = function (B) {

var c = [0, 0];

do {

c[0] += b.offsetTop;

c[1] += b.offsetLeft

} while (b = b.offsetParent);

return c

};

g.prepareElement = function (b, c, d) {

c = g.getCorrectedSpritePos(parseInt(c, 10));

d = g.getCorrectedSpritePos(parseInt(d, 10));

if (g.useCss) {

b.style.backgroundImage = "url(logos/pacman10-hp-sprite.png)";

b.style.backgroundPosition = -c + "px " + -d + "px";

b.style.backgroundRepeat = "no-repeat"

} else {

b.style.overflow = "hidden";

c = "display: block; position: relative; left: " + -c + "px; top: " + -d + "px";

b.innerHTML = '<img style="' + c + '" src="logos/pacman10-hp-sprite.png">'

}

};

g.changeElementBkPos = function (b, c, d, f) {

if (f) {

c = g.getCorrectedSpritePos©;

d = g.getCorrectedSpritePos(d)

}

if (g.useCss) b.style.backgroundPosition = -c + "px " + -d + "px";

else if (b.childNodes[0]) {

b.childNodes[0].style.left = -c + "px";

b.childNodes[0].style.top = -d + "px"

}

};

g.determinePlayfieldDimensions = function () {

g.playfieldWidth = 0;

g.playfieldHeight = 0;

for (var b in n) {

var c = n;

if (c.w) {

c = c.x + c.w - 1;

if (c > g.playfieldWidth) g.playfieldWidth = c

} else {

c = c.y + c.h - 1;

if (c > g.playfieldHeight) g.playfieldHeight = c

}

}

};

g.preparePlayfield = function () {

g.playfield = [];

for (var b = 0; b <= g.playfieldHeight + 1; b++) {

g.playfield[b * 8] = [];

for (var c = -2; c <= g.playfieldWidth + 1; c++) g.playfield[b * 8][c * 8] = {

path: 0,

dot: 0,

intersection: 0

}

}

};

g.preparePaths = function () {

for (var b in n) {

var c = n,

d = c.type;

if (c.w) {

for (var f = c.y * 8, h = c.x * 8; h <= (c.x + c.w - 1) * 8; h += 8) {

g.playfield[f][h].path = a;

if (g.playfield[f][h].dot == 0) {

g.playfield[f][h].dot = 1;

g.dotsRemaining++

}

g.playfield[f][h].type = !d || h != c.x * 8 && h != (c.x + c.w - 1) * 8 ? d : 0

}

g.playfield[f][c.x * 8].intersection = a;

g.playfield[f][(c.x + c.w - 1) * 8].intersection = a

} else {

h = c.x * 8;

for (f = c.y * 8; f <= (c.y + c.h - 1) * 8; f += 8) {

if (g.playfield[f][h].path) g.playfield[f][h].intersection = a;

g.playfield[f][h].path = a;

if (g.playfield[f][h].dot == 0) {

g.playfield[f][h].dot = 1;

g.dotsRemaining++

}

g.playfield[f][h].type = !d || f != c.y * 8 && f != (c.y + c.h - 1) * 8 ? d : 0

}

g.playfield[c.y * 8][h].intersection = a;

g.playfield[(c.y + c.h - 1) * 8][h].intersection = a

}

}

for (b in o) if (o.w) for (h = o.x * 8; h <= (o.x + o.w - 1) * 8; h += 8) {

g.playfield[o.y * 8][h].dot = 0;

g.dotsRemaining--

} else for (f = o.y * 8; f <= (o.y + o.h - 1) * 8; f += 8) {

g.playfield[f][o.x * 8].dot = 0;

g.dotsRemaining--

}

};

g.prepareAllowedDirections = function () {

for (var b = 8; b <= g.playfieldHeight * 8; b += 8) for (var c = 8; c <= g.playfieldWidth * 8; c += 8) {

g.playfield[c].allowedDir = 0;

if (g.playfield[b - 8][c].path) g.playfield[c].allowedDir += 1;

if (g.playfield[b + 8][c].path) g.playfield[c].allowedDir += 2;

if (g.playfield[c - 8].path) g.playfield[c].allowedDir += 4;

if (g.playfield[c + 8].path) g.playfield[c].allowedDir += 8

}

};

g.createDotElements = function () {

for (var b = 8; b <= g.playfieldHeight * 8; b += 8) for (var c = 8; c <= g.playfieldWidth * 8; c += 8) if (g.playfield[c].dot) {

var d = document.createElement("div");

d.className = "pcm-d";

d.id = g.getDotElementId(b, c);

d.style.left = c + -32 + "px";

d.style.top = b + 0 + "px";

g.playfieldEl.appendChild(d)

}

};

g.createEnergizerElements = function () {

for (var b in p) {

var c = p,

d = g.getDotElementId(c.y * 8, c.x * 8);

document.getElementById(d).className = "pcm-e";

g.prepareElement(document.getElementById(d), 0, 144);

g.playfield[c.y * 8][c.x * 8].dot = 2

}

};

g.createFruitElement = function () {

g.fruitEl = document.createElement("div");

g.fruitEl.id = "pcm-f";

g.fruitEl.style.left = g.getPlayfieldX(v[1]) + "px";

g.fruitEl.style.top = g.getPlayfieldY(v[0]) + "px";

g.prepareElement(g.fruitEl, -32, -16);

g.playfieldEl.appendChild(g.fruitEl)

};

g.createPlayfieldElements = function () {

g.doorEl = document.createElement("div");

g.doorEl.id = "pcm-do";

g.doorEl.style.display = "none";

g.playfieldEl.appendChild(g.doorEl);

g.createDotElements();

g.createEnergizerElements();

g.createFruitElement()

};

g.createActors = function () {

g.actors = [];

for (var b = 0; b < g.playerCount + 4; b++) {

g.actors = new E(B);

if (b < g.playerCount) {

g.actors.ghost = e;

g.actors.mode = 1

} else g.actors.ghost = a

}

};

g.restartActors = function () {

for (var b in g.actors) g.actors.A()

};

g.createActorElements = function () {

for (var b in g.actors) g.actors.createElement()

};

g.createPlayfield = function () {

g.playfieldEl = document.createElement("div");

g.playfieldEl.id = "pcm-p";

g.canvasEl.appendChild(g.playfieldEl)

};

g.resetPlayfield = function () {

g.dotsRemaining = 0;

g.dotsEaten = 0;

g.playfieldEl.innerHTML = "";

g.prepareElement(g.playfieldEl, 256, 0);

g.determinePlayfieldDimensions();

g.preparePlayfield();

g.preparePaths();

g.prepareAllowedDirections();

g.createPlayfieldElements();

g.createActorElements()

};

g.keyPressed = function (B) {

var c = e;

switch (B) {

case 37:

g.actors[0].requestedDir = 4;

c = a;

break;

case 38:

g.actors[0].requestedDir = 1;

c = a;

break;

case 39:

g.actors[0].requestedDir = 8;

c = a;

break;

case 40:

g.actors[0].requestedDir = 2;

c = a;

break;

case 65:

if (g.playerCount == 2) {

g.actors[1].requestedDir = 4;

c = a

}

break;

case 83:

if (g.playerCount == 2) {

g.actors[1].requestedDir = 2;

c = a

}

break;

case 68:

if (g.playerCount == 2) {

g.actors[1].requestedDir = 8;

c = a

}

break;

case 87:

if (g.playerCount == 2) {

g.actors[1].requestedDir = 1;

c = a

}

break

}

return c

};

g.handleKeyDown = function (B) {

if (!B) b = window.event;

if (g.keyPressed(b.keyCode)) if (b.preventDefault) b.preventDefault();

else b.returnValue = e

};

g.canvasClicked = function (b, c) {

var d = g.getAbsoluteElPos(g.canvasEl);

b -= d[1] - -32;

c -= d[0] - 0;

d = g.actors[0];

var f = g.getPlayfieldX(d.pos[1] + d.posDelta[1]) + 16,

h = g.getPlayfieldY(d.pos[0] + d.posDelta[0]) + 32,

j = Math.abs(b - f),

k = Math.abs(c - h);

if (j > 8 && k < j) d.requestedDir = b > f ? 8 : 4;

else if (k > 8 && j < k) d.requestedDir = c > h ? 2 : 1

};

g.handleClick = function (B) {

if (!B) b = window.event;

g.canvasClicked(b.clientX, b.clientY)

};

g.registerTouch = function () {

document.body.addEventListener("touchstart", g.handleTouchStart, a);

g.canvasEl.addEventListener("touchstart", g.handleTouchStart, a);

document.f && document.f.q && document.f.q.addEventListener("touchstart", g.handleTouchStart, a)

};

g.handleTouchStart = function (B) {

g.touchDX = 0;

g.touchDY = 0;

if (b.touches.length == 1) {

g.touchStartX = b.touches[0].pageX;

g.touchStartY = b.touches[0].pageY;

document.body.addEventListener("touchmove", g.handleTouchMove, a);

document.body.addEventListener("touchend", g.handleTouchEnd, a)

}

b.preventDefault();

b.stopPropagation()

};

g.handleTouchMove = function (B) {

if (b.touches.length > 1) g.cancelTouch();

else {

g.touchDX = b.touches[0].pageX - g.touchStartX;

g.touchDY = b.touches[0].pageY - g.touchStartY

}

b.preventDefault();

b.stopPropagation()

};

g.handleTouchEnd = function (B) {

if (g.touchDX == 0 && g.touchDY == 0) g.canvasClicked(g.touchStartX, g.touchStartY);

else {

var c = Math.abs(g.touchDX),

d = Math.abs(g.touchDY);

if (c < 8 && d < 8) g.canvasClicked(g.touchStartX, g.touchStartY);

else if (c > 15 && d < c * 2 / 3) g.actors[0].requestedDir = g.touchDX > 0 ? 8 : 4;

else if (d > 15 && c < d * 2 / 3) g.actors[0].requestedDir = g.touchDY > 0 ? 2 : 1

}

b.preventDefault();

b.stopPropagation();

g.cancelTouch()

};

g.cancelTouch = function () {

document.body.removeEventListener("touchmove", g.handleTouchMove, a);

document.body.removeEventListener("touchend", g.handleTouchEnd, a);

g.touchStartX = null;

g.touchStartY = null

};

g.addEventListeners = function () {

if (window.addEventListener) {

window.addEventListener("keydown", g.handleKeyDown, e);

g.canvasEl.addEventListener("click", g.handleClick, e);

g.registerTouch()

} else {

document.body.attachEvent("onkeydown", g.handleKeyDown);

g.canvasEl.attachEvent("onclick", g.handleClick)

}

};

g.startGameplay = function () {

g.score = [0, 0];

g.extraLifeAwarded = [e, e];

g.lives = 3;

g.level = 0;

g.paused = e;

g.globalTime = 0;

g.newLevel(a)

};

g.restartGameplay = function (B) {

g.seed(0);

g.frightModeTime = 0;

g.intervalTime = 0;

g.gameplayModeTime = 0;

g.fruitTime = 0;

g.ghostModeSwitchPos = 0;

g.ghostModeTime = g.levels.ghostModeSwitchTimes[0] * D;

g.ghostExitingPenNow = e;

g.ghostEyesCount = 0;

g.tilesChanged = e;

g.updateCruiseElroySpeed();

g.hideFruit();

g.resetForcePenLeaveTime();

g.restartActors();

g.updateActorPositions();

g.switchMainGhostMode(2, a);

for (var c = g.playerCount + 1; c < g.playerCount + 4; c++) g.actors[c].a(16);

g.dotEatingChannel = [0, 0];

g.dotEatingSoundPart = [1, 1];

g.clearDotEatingNow();

b ? g.changeGameplayMode(4) : g.changeGameplayMode(6)

};

g.initiateDoubleMode = function () {

if (g.playerCount != 2) {

g.stopAllAudio();

g.changeGameplayMode(12)

}

};

g.newGame = function () {

g.playerCount = 1;

g.createChrome();

g.createPlayfield();

g.createActors();

g.startGameplay()

};

g.switchToDoubleMode = function () {

g.playerCount = 2;

g.createChrome();

g.createPlayfield();

g.createActors();

g.startGameplay()

};

g.insertCoin = function () {

g.gameplayMode == 8 || g.gameplayMode == 14 ? g.newGame() : g.initiateDoubleMode()

};

g.createKillScreenElement = function (b, c, d, f, h) {

var j = document.createElement("div");

j.style.left = b + "px";

j.style.top = c + "px";

j.style.width = d + "px";

j.style.height = f + "px";

j.style.zIndex = 119;

if (h) {

j.style.background = "url(logos/pacman10-hp-sprite.png) -" + g.killScreenTileX + "px -" + g.killScreenTileY + "px no-repeat";

g.killScreenTileY += 8

} else j.style.background = "black";

g.playfieldEl.appendChild(j)

};

g.killScreen = function () {

g.seed(0);

g.canvasEl.style.visibility = "";

g.createKillScreenElement(272, 0, 200, 80, e);

g.createKillScreenElement(280, 80, 192, 56, e);

g.killScreenTileX = 80;

g.killScreenTileY = 0;

for (var b = 280; b <= 472; b += 8) for (var c = 0; c <= 136; c += 8) {

if (g.rand() < 0.03) {

g.killScreenTileX = Math.floor(g.rand() * 25) * 10;

g.killScreenTileY = Math.floor(g.rand() * 2) * 10

}

g.createKillScreenElement(b, c, 8, 8, a)

}

g.changeGameplayMode(14)

};

g.newLevel = function (B) {

g.level++;

g.levels = g.level >= z.length ? z[z.length - 1] : z[g.level];

g.levels.frightTime = Math.round(g.levels.frightTime * D);

g.levels.frightTotalTime = g.levels.frightTime + g.timing[1] * (g.levels.frightBlinkCount * 2 - 1);

for (var c in g.actors) g.actors[c].dotCount = 0;

g.alternatePenLeavingScheme = e;

g.lostLifeOnThisLevel = e;

g.updateChrome();

g.resetPlayfield();

g.restartGameplay(B);

g.level == 256 && g.killScreen()

};

g.newLife = function () {

g.lostLifeOnThisLevel = a;

g.alternatePenLeavingScheme = a;

g.alternateDotCount = 0;

g.lives--;

g.updateChromeLives();

g.lives == -1 ? g.changeGameplayMode(8) : g.restartGameplay(e)

};

g.switchMainGhostMode = function (b, c) {

if (b == 4 && g.levels.frightTime == 0) for (var d in g.actors) {

var f = g.actors[d];

if (f.ghost) f.reverseDirectionsNext = a

} else {

f = g.mainGhostMode;

if (b == 4 && g.mainGhostMode != 4) g.lastMainGhostMode = g.mainGhostMode;

g.mainGhostMode = b;

if (b == 4 || f == 4) g.playAmbientSound();

switch (B) {

case 1:

case 2:

g.currentPlayerSpeed = g.levels.playerSpeed * 0.8;

g.currentDotEatingSpeed = g.levels.dotEatingSpeed * 0.8;

break;

case 4:

g.currentPlayerSpeed = g.levels.playerFrightSpeed * 0.8;

g.currentDotEatingSpeed = g.levels.dotEatingFrightSpeed * 0.8;

g.frightModeTime = g.levels.frightTotalTime;

g.modeScoreMultiplier = 1;

break

}

for (d in g.actors) {

f = g.actors[d];

if (f.ghost) {

if (b != 64 && !c) f.modeChangedWhileInPen = a;

if (b == 4) f.eatenInThisFrightMode = e;

if (f.mode != 8 && f.mode != 16 && f.mode != 32 && f.mode != 128 && f.mode != 64 || c) {

if (!c && f.mode != 4 && f.mode != B) f.reverseDirectionsNext = a;

f.a(B)

}

} else {

f.fullSpeed = g.currentPlayerSpeed;

f.dotEatingSpeed = g.currentDotEatingSpeed;

f.tunnelSpeed = g.currentPlayerSpeed;

f.d()

}

}

}

};

g.figureOutPenLeaving = function () {

if (g.alternatePenLeavingScheme) {

g.alternateDotCount++;

switch (g.alternateDotCount) {

case m[1]:

g.actors[g.playerCount + 1].freeToLeavePen = a;

break;

case m[2]:

g.actors[g.playerCount + 2].freeToLeavePen = a;

break;

case m[3]:

if (g.actors[g.playerCount + 3].mode == 16) g.alternatePenLeavingScheme = e;

break

}

} else if (g.actors[g.playerCount + 1].mode == 16 || g.actors[g.playerCount + 1].mode == 8) {

g.actors[g.playerCount + 1].dotCount++;

if (g.actors[g.playerCount + 1].dotCount >= g.levels.penLeavingLimits[1]) g.actors[g.playerCount + 1].freeToLeavePen = a

} else if (g.actors[g.playerCount + 2].mode == 16 || g.actors[g.playerCount + 2].mode == 8) {

g.actors[g.playerCount + 2].dotCount++;

if (g.actors[g.playerCount + 2].dotCount >= g.levels.penLeavingLimits[2]) g.actors[g.playerCount + 2].freeToLeavePen = a

} else if (g.actors[g.playerCount + 3].mode == 16 || g.actors[g.playerCount + 3].mode == 8) {

g.actors[g.playerCount + 3].dotCount++;

if (g.actors[g.playerCount + 3].dotCount >= g.levels.penLeavingLimits[3]) g.actors[g.playerCount + 3].freeToLeavePen = a

}

};

g.resetForcePenLeaveTime = function () {

g.forcePenLeaveTime = g.levels.penForceTime * D

};

g.dotEaten = function (b, c) {

g.dotsRemaining--;

g.dotsEaten++;

g.actors.c(1);

g.playDotEatingSound(B);

if (g.playfield[c[0]][c[1]].dot == 2) {

g.switchMainGhostMode(4, e);

g.addToScore(50, B)

} else g.addToScore(10, B);

var d = document.getElementById(g.getDotElementId(c[0], c[1]));

d.style.display = "none";

g.playfield[c[0]][c[1]].dot = 0;

g.updateCruiseElroySpeed();

g.resetForcePenLeaveTime();

g.figureOutPenLeaving();

if (g.dotsEaten == 70 || g.dotsEaten == 170) g.showFruit();

g.dotsRemaining == 0 && g.finishLevel();

g.playAmbientSound()

};

g.getFruitSprite = function (B) {

var c = b <= 4 ? 128 : 160;

b = 128 + 16 * ((b - 1) % 4);

return [c, b]

};

g.getFruitScoreSprite = function (B) {

var c = 128;

b = 16 * (b - 1);

return [c, b]

};

g.hideFruit = function () {

g.fruitShown = e;

g.changeElementBkPos(g.fruitEl, 32, 16, a)

};

g.showFruit = function () {

g.fruitShown = a;

var b = g.getFruitSprite(g.levels.fruit);

g.changeElementBkPos(g.fruitEl, b[0], b[1], a);

g.fruitTime = g.timing[15] + (g.timing[16] - g.timing[15]) * g.rand()

};

g.eatFruit = function (B) {

if (g.fruitShown) {

g.playSound("fruit", 0);

g.fruitShown = e;

var c = g.getFruitScoreSprite(g.levels.fruit);

g.changeElementBkPos(g.fruitEl, c[0], c[1], a);

g.fruitTime = g.timing[14];

g.addToScore(g.levels.fruitScore, B)

}

};

g.updateActorTargetPositions = function () {

for (var b = g.playerCount; b < g.playerCount + 4; b++) g.actors.B()

};

g.moveActors = function () {

for (var b in g.actors) g.actors.move()

};

g.ghostDies = function (b, c) {

g.playSound("eating-ghost", 0);

g.addToScore(200 * g.modeScoreMultiplier, c);

g.modeScoreMultiplier *= 2;

g.ghostBeingEatenId = b;

g.playerEatingGhostId = c;

g.changeGameplayMode(1)

};

g.playerDies = function (B) {

g.playerDyingId = b;

g.changeGameplayMode(2)

};

g.detectCollisions = function () {

g.tilesChanged = e;

for (var b = g.playerCount; b < g.playerCount + 4; b++) for (var c = 0; c < g.playerCount; c++) if (g.actors.tilePos[0] == g.actors[c].tilePos[0] && g.actors.tilePos[1] == g.actors[c].tilePos[1]) if (g.actors.mode == 4) {

g.ghostDies(b, c);

return

} else g.actors.mode != 8 && g.actors.mode != 16 && g.actors.mode != 32 && g.actors.mode != 128 && g.actors.mode != 64 && g.playerDies©

};

g.updateCruiseElroySpeed = function () {

var b = g.levels.ghostSpeed * 0.8;

if (!g.lostLifeOnThisLevel || g.actors[g.playerCount + 3].mode != 16) {

var c = g.levels;

if (g.dotsRemaining < c.elroyDotsLeftPart2) b = c.elroySpeedPart2 * 0.8;

else if (g.dotsRemaining < c.elroyDotsLeftPart1) b = c.elroySpeedPart1 * 0.8

}

if (b != g.cruiseElroySpeed) {

g.cruiseElroySpeed = b;

g.actors[g.playerCount].d()

}

};

g.getSpeedIntervals = function (B) {

if (!g.speedIntervals) {

var c = 0,

d = 0;

g.speedIntervals = [];

for (var f = 0; f < D; f++) {

c += b;

if (Math.floor© > d) {

g.speedIntervals.push(a);

d = Math.floor©

} else g.speedIntervals.push(e)

}

}

return g.speedIntervals

};

g.finishLevel = function () {

g.changeGameplayMode(9)

};

g.changeGameplayMode = function (B) {

g.gameplayMode = b;

if (b != 13) for (var c = 0; c < g.playerCount + 4; c++) g.actors[c].b();

switch (B) {

case 0:

g.playAmbientSound();

break;

case 2:

g.stopAllAudio();

g.gameplayModeTime = g.timing[3];

break;

case 3:

g.playerDyingId == 0 ? g.playSound("death", 0) : g.playSound("death-double", 0);

g.gameplayModeTime = g.timing[4];

break;

case 6:

g.canvasEl.style.visibility = "hidden";

g.gameplayModeTime = g.timing[5];

break;

case 7:

g.stopAllAudio();

g.canvasEl.style.visibility = "";

g.doorEl.style.display = "block";

b = document.createElement("div");

b.id = "pcm-re";

g.prepareElement(b, 160, 0);

g.playfieldEl.appendChild(B);

g.gameplayModeTime = g.timing[6];

break;

case 4:

g.doorEl.style.display = "block";

b = document.createElement("div");

b.id = "pcm-re";

g.prepareElement(b, 160, 0);

g.playfieldEl.appendChild(B);

g.gameplayModeTime = g.timing[7];

g.stopAllAudio();

g.playerCount == 2 ? g.playSound("start-music-double", 0, a) : g.playSound("start-music", 0, a);

break;

case 5:

g.lives--;

g.updateChromeLives();

g.gameplayModeTime = g.timing[8];

break;

case 8:

case 14:

b = document.getElementById("pcm-re");

google.dom.remove(B);

g.stopAllAudio();

b = document.createElement("div");

b.id = "pcm-go";

g.prepareElement(b, 8, 152);

g.playfieldEl.appendChild(B);

g.gameplayModeTime = g.timing[9];

break;

case 9:

g.stopAllAudio();

g.gameplayModeTime = g.timing[10];

break;

case 10:

g.doorEl.style.display = "none";

g.gameplayModeTime = g.timing[11];

break;

case 11:

g.canvasEl.style.visibility = "hidden";

g.gameplayModeTime = g.timing[12];

break;

case 12:

g.playfieldEl.style.visibility = "hidden";

g.gameplayModeTime = g.timing[13];

break;

case 1:

g.gameplayModeTime =

g.timing[2];

break;

case 13:

g.startCutscene();

break

}

};

g.showChrome = function (B) {

g.showElementById("pcm-sc-1-l", B);

g.showElementById("pcm-sc-2-l", B);

g.showElementById("pcm-sc-1", B);

g.showElementById("pcm-sc-2", B);

g.showElementById("pcm-li", B);

g.showElementById("pcm-so", B)

};

g.startCutscene = function () {

g.playfieldEl.style.visibility = "hidden";

g.canvasEl.style.visibility = "";

g.showChrome(e);

g.cutsceneCanvasEl = document.createElement("div");

g.cutsceneCanvasEl.id = "pcm-cc";

g.canvasEl.appendChild(g.cutsceneCanvasEl);

g.cutscene = B[g.cutsceneId];

g.cutsceneSequenceId = -1;

g.frightModeTime = g.levels.frightTotalTime;

g.cutsceneActors = [];

for (var b in g.cutscene.actors) {

var c = g.cutscene.actors.id;

if (c > 0) c += g.playerCount - 1;

var d = document.createElement("div");

d.className = "pcm-ac";

d.id = "actor" + c;

g.prepareElement(d, 0, 0);

c = new E©;

c.el = d;

c.elBackgroundPos = [0, 0];

c.elPos = [0, 0];

c.pos = [g.cutscene.actors.y * 8, g.cutscene.actors.x * 8];

c.posDelta = [0, 0];

c.ghost = g.cutscene.actors.ghost;

g.cutsceneCanvasEl.appendChild(d);

g.cutsceneActors.push©

}

g.cutsceneNextSequence();

g.stopAllAudio();

g.playAmbientSound()

};

g.stopCutscene = function () {

g.playfieldEl.style.visibility = "";

google.dom.remove(g.cutsceneCanvasEl);

g.showChrome(a);

g.newLevel(e)

};

g.cutsceneNextSequence = function () {

g.cutsceneSequenceId++;

if (g.cutscene.sequence.length == g.cutsceneSequenceId) g.stopCutscene();

else {

var b = g.cutscene.sequence[g.cutsceneSequenceId];

g.cutsceneTime = b.time * D;

for (var c in g.cutsceneActors) {

var d = g.cutsceneActors[c];

d.dir = b.moves[c].dir;

d.speed = b.moves[c].speed;

if (b.moves[c].elId) d.el.id = b.moves[c].elId;

if (b.moves[c].mode) d.mode = b.moves[c].mode;

d.b()

}

}

};

g.checkCutscene = function () {

g.cutsceneTime <= 0 && g.cutsceneNextSequence()

};

g.advanceCutscene = function () {

for (var b in g.cutsceneActors) {

var c = g.cutsceneActors,

d = l[c.dir];

c.pos[d.axis] += d.increment * c.speed;

c.b()

}

g.cutsceneTime--

};

g.updateActorPositions = function () {

for (var b in g.actors) g.actors.k()

};

g.blinkEnergizers = function () {

switch (g.gameplayMode) {

case 4:

case 5:

case 6:

case 7:

case 9:

case 10:

case 11:

case 12:

g.playfieldEl.className = "";

break;

case 8:

case 14:

g.playfieldEl.className = "blk";

break;

default:

if (g.globalTime % (g.timing[0] * 2) == 0) g.playfieldEl.className = "";

else if (g.globalTime % (g.timing[0] * 2) == g.timing[0]) g.playfieldEl.className = "blk";

break

}

};

g.blinkScoreLabels = function () {

if (g.gameplayMode != 13) {

var b = "";

if (g.globalTime % (g.timing[17] * 2) == 0) b = "visible";

else if (g.globalTime % (g.timing[17] * 2) == g.timing[17]) b = "hidden";

if (B) for (var c = 0; c < g.playerCount; c++) g.scoreLabelEl[c].style.visibility = b

}

};

g.finishFrightMode = function () {

g.switchMainGhostMode(g.lastMainGhostMode, e)

};

g.handleGameplayModeTimer = function () {

if (g.gameplayModeTime) {

g.gameplayModeTime--;

switch (g.gameplayMode) {

case 2:

case 3:

for (var b = 0; b < g.playerCount + 4; b++) g.actors.b();

break;

case 10:

Math.floor(g.gameplayModeTime / (g.timing[11] / 8)) % 2 == 0 ? g.changeElementBkPos(g.playfieldEl, 322, 2, e) : g.changeElementBkPos(g.playfieldEl, 322, 138, e)

}

if (g.gameplayModeTime <= 0) {

g.gameplayModeTime = 0;

switch (g.gameplayMode) {

case 1:

g.changeGameplayMode(0);

g.ghostEyesCount++;

g.playAmbientSound();

g.actors[g.ghostBeingEatenId].el.className = "pcm-ac";

g.actors[g.ghostBeingEatenId].a(8);

var c = e;

for (b = g.playerCount; b < g.playerCount + 4; b++) if (g.actors.mode == 4 || (g.actors.mode == 16 || g.actors.mode == 128) && !g.actors.eatenInThisFrightMode) {

c = a;

break

}

c || g.finishFrightMode();

break;

case 2:

g.changeGameplayMode(3);

break;

case 3:

g.newLife();

break;

case 4:

g.changeGameplayMode(5);

break;

case 6:

g.changeGameplayMode(7);

break;

case 7:

case 5:

b = document.getElementById("pcm-re");

google.dom.remove(B);

g.changeGameplayMode(0);

break;

case 8:

b = document.getElementById("pcm-go");

google.dom.remove(B);

google.pacManQuery && google.pacManQuery();

break;

case 9:

g.changeGameplayMode(10);

break;

case 10:

g.changeGameplayMode(11);

break;

case 11:

if (g.levels.cutsceneId) {

g.cutsceneId = g.levels.cutsceneId;

g.changeGameplayMode(13)

} else {

g.canvasEl.style.visibility = "";

g.newLevel(e)

}

break;

case 12:

g.playfieldEl.style.visibility = "";

g.canvasEl.style.visibility = "";

g.switchToDoubleMode();

break

}

}

}

};

g.handleFruitTimer = function () {

if (g.fruitTime) {

g.fruitTime--;

g.fruitTime <= 0 && g.hideFruit()

}

};

g.handleGhostModeTimer = function () {

if (g.frightModeTime) {

g.frightModeTime--;

if (g.frightModeTime <= 0) {

g.frightModeTime = 0;

g.finishFrightMode()

}

} else if (g.ghostModeTime > 0) {

g.ghostModeTime--;

if (g.ghostModeTime <= 0) {

g.ghostModeTime = 0;

g.ghostModeSwitchPos++;

if (g.levels.ghostModeSwitchTimes[g.ghostModeSwitchPos]) {

g.ghostModeTime = g.levels.ghostModeSwitchTimes[g.ghostModeSwitchPos] * D;

switch (g.mainGhostMode) {

case 2:

g.switchMainGhostMode(1, e);

break;

case 1:

g.switchMainGhostMode(2, e);

break

}

}

}

}

};

g.handleForcePenLeaveTimer = function () {

if (g.forcePenLeaveTime) {

g.forcePenLeaveTime--;

if (g.forcePenLeaveTime <= 0) {

for (var b = 1; b <= 3; b++) if (g.actors[g.playerCount + b].mode == 16) {

g.actors[g.playerCount + b].freeToLeavePen = a;

break

}

g.resetForcePenLeaveTime()

}

}

};

g.handleTimers = function () {

if (g.gameplayMode == 0) {

g.handleForcePenLeaveTimer();

g.handleFruitTimer();

g.handleGhostModeTimer()

}

g.handleGameplayModeTimer()

};

g.tick = function () {

var b = (new Date).getTime();

g.lastTimeDelta += b - g.lastTime - g.tickInterval;

if (g.lastTimeDelta > 100) g.lastTimeDelta = 100;

if (g.canDecreaseFps && g.lastTimeDelta > 50) {

g.lastTimeSlownessCount++;

g.lastTimeSlownessCount == 20 && g.decreaseFps()

}

var c = 0;

if (g.lastTimeDelta > g.tickInterval) {

c = Math.floor(g.lastTimeDelta / g.tickInterval);

g.lastTimeDelta -= g.tickInterval * c

}

g.lastTime = b;

if (g.gameplayMode == 13) {

for (b = 0; b < g.tickMultiplier + c; b++) {

g.advanceCutscene();

g.intervalTime = (g.intervalTime + 1) % D;

g.globalTime++

}

g.checkCutscene();

g.blinkScoreLabels()

} else for (b = 0; b < g.tickMultiplier + c; b++) {

g.moveActors();

if (g.gameplayMode == 0) if (g.tilesChanged) {

g.detectCollisions();

g.updateActorTargetPositions()

}

g.globalTime++;

g.intervalTime = (g.intervalTime + 1) % D;

g.blinkEnergizers();

g.blinkScoreLabels();

g.handleTimers()

}

};

g.extraLife = function (B) {

g.playSound("extra-life", 0);

g.extraLifeAwarded = a;

g.lives++;

if (g.lives > 5) g.lives = 5;

g.updateChromeLives()

};

g.addToScore = function (b, c) {

g.score[c] += b;

!g.extraLifeAwarded[c] && g.score[c] > 1E4 && g.extraLife©;

g.updateChromeScore©

};

g.updateChrome = function () {

g.updateChromeLevel();

g.updateChromeLives();

for (var b = 0; b < g.playerCount; b++) g.updateChromeScore(B)

};

g.updateChromeScore = function (B) {

var c = g.score.toString();

if (c.length > g.scoreDigits) c = c.substr(c.length - g.scoreDigits, g.scoreDigits);

for (var d = 0; d < g.scoreDigits; d++) {

var f = document.getElementById("pcm-sc-" + (b + 1) + "-" + d),

h = c.substr(d, 1);

h ? g.changeElementBkPos(f, 8 + 8 * parseInt(h, 10), 144, a) : g.changeElementBkPos(f, 48, 0, a)

}

};

g.updateChromeLives = function () {

g.livesEl.innerHTML = "";

for (var b = 0; b < g.lives; b++) {

var c = document.createElement("div");

c.className = "pcm-lif";

g.prepareElement(c, 64, 129);

g.livesEl.appendChild©

}

};

g.updateChromeLevel = function () {

g.levelEl.innerHTML = "";

for (var b = g.level; b >= Math.max(g.level - 4 + 1, 1); b--) {

var c = b >= z.length ? z[z.length - 1].fruit : z.fruit,

d = document.createElement("div");

c = g.getFruitSprite©;

g.prepareElement(d, c[0], c[1]);

g.levelEl.appendChild(d)

}

g.levelEl.style.marginTop = (4 - Math.min(g.level, 4)) * 16 + "px"

};

g.createChrome = function () {

g.canvasEl.innerHTML = "";

g.scoreDigits = g.playerCount == 1 ? 10 : 5;

g.scoreLabelEl = [];

g.scoreLabelEl[0] = document.createElement("div");

g.scoreLabelEl[0].id = "pcm-sc-1-l";

g.prepareElement(g.scoreLabelEl[0], 160, 56);

g.canvasEl.appendChild(g.scoreLabelEl[0]);

g.scoreEl = [];

g.scoreEl[0] = document.createElement("div");

g.scoreEl[0].id = "pcm-sc-1";

for (var b = 0; b < g.scoreDigits; b++) {

var c = document.createElement("div");

c.id = "pcm-sc-1-" + b;

c.style.top = b * 8 + "px";

c.style.left = 0;

c.style.position = "absolute";

c.style.width = "8px";

c.style.height = "8px";

g.prepareElement(c, 48, 0);

g.scoreEl[0].appendChild©

}

g.canvasEl.appendChild(g.scoreEl[0]);

g.livesEl = document.createElement("div");

g.livesEl.id = "pcm-li";

g.canvasEl.appendChild(g.livesEl);

g.levelEl = document.createElement("div");

g.levelEl.id = "pcm-le";

g.canvasEl.appendChild(g.levelEl);

if (g.playerCount == 2) {

g.scoreLabelEl[1] = document.createElement("div");

g.scoreLabelEl[1].id = "pcm-sc-2-l";

g.prepareElement(g.scoreLabelEl[1], 160, 64);

g.canvasEl.appendChild(g.scoreLabelEl[1]);

g.scoreEl[1] = document.createElement("div");

g.scoreEl[1].id = "pcm-sc-2";

for (b = 0; b < g.scoreDigits; b++) {

c = document.createElement("div");

c.id = "pcm-sc-2-" + b;

c.style.top = b * 8 + "px";

c.style.left = 0;

c.style.position = "absolute";

c.style.width = "8px";

c.style.height = "8px";

g.prepareElement(c, 48, 0);

g.scoreEl[1].appendChild©

}

g.canvasEl.appendChild(g.scoreEl[1])

}

};

g.clearDotEatingNow = function () {

g.dotEatingNow = [e, e];

g.dotEatingNext = [e, e]

};

g.playSound = function (b, c, d) {

if (!(!g.soundAvailable || !g.soundEnabled || g.paused)) {

d || g.stopSoundChannel©;

try {

g.flashSoundPlayer.playTrack(b, c)

} catch (f) {

g.soundAvailable = e

}

}

};

g.stopSoundChannel = function (B) {

if (g.soundAvailable && g.soundEnabled) try {

g.flashSoundPlayer.stopChannel(B)

} catch © {

g.soundAvailable = e

}

};

g.stopAllAudio = function () {

if (g.soundAvailable && g.soundEnabled) {

try {

g.flashSoundPlayer.stopAmbientTrack()

} catch (B) {

g.soundAvailable = e

}

for (var c = 0; c < 5; c++) g.stopSoundChannel©

}

};

g.playDotEatingSound = function (B) {

if (g.soundAvailable && g.soundEnabled) if (g.gameplayMode == 0) if (g.dotEatingNow) g.dotEatingNext = a;

else {

if (b == 0) {

var c = g.dotEatingSoundPart == 1 ? "eating-dot-1" : "eating-dot-2";

g.playSound(c, 1 + g.dotEatingChannel, a);

g.dotTimer = window.setInterval(g.repeatDotEatingSoundPacMan, 150)

} else {

g.playSound("eating-dot-double", 3 + g.dotEatingChannel, a);

g.dotTimerMs = window.setInterval(g.repeatDotEatingSoundMsPacMan, 150)

}

g.dotEatingChannel = (g.dotEatingChannel + 1) % 2;

g.dotEatingSoundPart =

3 - g.dotEatingSoundPart

}

};

g.repeatDotEatingSound = function (B) {

g.dotEatingNow = e;

if (g.dotEatingNext) {

g.dotEatingNext = e;

g.playDotEatingSound(B)

}

};

g.repeatDotEatingSoundPacMan = function () {

g.repeatDotEatingSound(0)

};

g.repeatDotEatingSoundMsPacMan = function () {

g.repeatDotEatingSound(1)

};

g.playAmbientSound = function () {

if (g.soundAvailable && g.soundEnabled) {

var b = 0;

if (g.gameplayMode == 0 || g.gameplayMode == 1) b = g.ghostEyesCount ? "ambient-eyes" : g.mainGhostMode == 4 ? "ambient-fright" : g.dotsEaten > 241 ? "ambient-4" : g.dotsEaten > 207 ? "ambient-3" : g.dotsEaten > 138 ? "ambient-2" : "ambient-1";

else if (g.gameplayMode == 13) b = "cutscene";

if (B) try {

g.flashSoundPlayer.playAmbientTrack(B)

} catch © {

g.soundAvailable = e

}

}

};

g.initializeTickTimer = function () {

window.clearInterval(g.tickTimer);

g.fps = C[g.fpsChoice];

g.tickInterval = 1E3 / g.fps;

g.tickMultiplier = D / g.fps;

g.timing = {};

for (var b in w) {

var c = !g.soundEnabled && (b == 7 || b == 8) ? 1 : w;

g.timing = Math.round(c * D)

}

g.lastTime = (new Date).getTime();

g.lastTimeDelta = 0;

g.lastTimeSlownessCount = 0;

g.tickTimer = window.setInterval(g.tick, g.tickInterval)

};

g.decreaseFps = function () {

if (g.fpsChoice < C.length - 1) {

g.fpsChoice++;

g.initializeTickTimer();

if (g.fpsChoice == C.length - 1) g.canDecreaseFps = e

}

};

g.addCss = function () {

var b = "#pcm-c { width: 554px; border-top: 25px solid black; padding-bottom: 25px; height: 136px; position: relative; background: black; outline: 0; overflow: hidden; -webkit-tap-highlight-color: rgba(0, 0, 0, 0);}#pcm-c * { position: absolute; overflow: hidden;}#pcm-p,#pcm-cc { left: 45px; width: 464px; height: 136px; z-index: 99; overflow: hidden;}#pcm-p .pcm-d { width: 2px; height: 2px; margin-left: 3px; margin-top: 3px; background: #f8b090; z-index: 100;}#pcm-p .pcm-e { width: 8px; height: 8px; z-index: 101;}#pcm-sc-1 { left: 18px; top: 16px; width: 8px; height: 56px; position: absolute; overflow: hidden;}#pcm-sc-2 { left: 18px; top: 80px; width: 8px; height: 56px; position: absolute; overflow: hidden;}#pcm-le { position: absolute; left: 515px; top: 74px; height: 64px; width: 32px;} #pcm-le div { position: relative;}#pcm-sc-1-l { left: -2px; top: 0; width: 48px; height: 8px;}#pcm-sc-2-l { left: -2px; top: 64px; width: 48px; height: 8px;}#pcm-so { left: 7px; top: 116px; width: 12px; height: 12px; border: 8px solid black; cursor: pointer;}#pcm-li { position: absolute; left: 523px; top: 0; height: 80px; width: 16px;}#pcm-li .pcm-lif { position: relative; width: 16px; height: 12px; margin-bottom: 3px;}#pcm-p.blk .pcm-e { visibility: hidden;}#pcm-c .pcm-ac { width: 16px; height: 16px; margin-left: -4px; margin-top: -4px; z-index: 110;}#pcm-c .pcm-n { z-index: 111;}#pcm-c #pcm-stck { z-index: 109;}#pcm-c #pcm-gbug { width: 32px;}#pcm-c #pcm-bpcm { width: 32px; height: 32px; margin-left: -20px; margin-top: -20px;}#pcm-f,#pcm-le div { width: 32px; height: 16px; z-index: 105;}#pcm-f { margin-left: -8px; margin-top: -4px;}#pcm-do { width: 19px; height: 2px; left: 279px; top: 46px; overflow: hidden; position: absolute; background: #ffaaa5;}#pcm-re { width: 48px; height: 8px; z-index: 120; left: 264px; top: 80px;}#pcm-go { width: 80px; height: 8px; z-index: 120; left: 248px; top: 80px;}";

g.styleElement =

document.createElement("style");

g.styleElement.type = "text/css";

if (g.styleElement.styleSheet) g.styleElement.styleSheet.cssText = b;

else g.styleElement.appendChild(document.createTextNode(B));

document.getElementsByTagName("head")[0].appendChild(g.styleElement)

};

g.createCanvasElement = function () {

g.canvasEl = document.createElement("div");

g.canvasEl.id = "pcm-c";

g.canvasEl.hideFocus = a;

document.getElementById("logo").appendChild(g.canvasEl);

g.canvasEl.tabIndex = 0;

g.canvasEl.focus()

};

g.everythingIsReady = function () {

if (!g.ready) {

g.ready = a;

var b = document.getElementById("logo-l");

google.dom.remove(B);

document.getElementById("logo").style.background = "black";

g.addCss();

g.createCanvasElement();

g.speedIntervals = [];

g.oppositeDirections = [];

g.oppositeDirections[1] = 2;

g.oppositeDirections[2] = 1;

g.oppositeDirections[4] = 8;

g.oppositeDirections[8] = 4;

g.addEventListeners();

g.fpsChoice = 0;

g.canDecreaseFps = a;

g.initializeTickTimer();

g.newGame()

}

};

g.checkIfEverythingIsReady = function () {

if (g.soundReady || g.graphicsReady) g.updateLoadingProgress(0.67);

if (g.soundReady && g.graphicsReady) {

g.updateLoadingProgress(1);

g.everythingIsReady()

}

};

g.preloadImage = function (B) {

var c = new Image,

d = google.browser.engine.IE;

if (!d) c.onload = g.imageLoaded;

c.src = b;

d && g.imageLoaded()

};

g.imageLoaded = function () {

g.graphicsReady = a;

g.checkIfEverythingIsReady()

};

g.prepareGraphics = function () {

g.graphicsReady = e;

g.preloadImage("logos/pacman10-hp-sprite.png")

};

g.trimString = function (B) {

return b.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "")

};

g.g = function (b, c) {

if (b < c) return -1;

else if (b > c) return 1;

return 0

};

g.compareVersions = function (b, c) {

for (var d = 0, f = g.trimString(String(B)).split("."), h = g.trimString(String©).split("."), j = Math.max(f.length, h.length), k = 0; d == 0 && k < j; k++) {

var x = f[k] || "",

F = h[k] || "",

G = new RegExp("(\\d*)(\\D*)", "g"),

H = new RegExp("(\\d*)(\\D*)", "g");

do {

var t = G.exec(x) || ["", "", ""],

u = H.exec(F) || ["", "", ""];

if (t[0].length == 0 && u[0].length == 0) break;

d = t[1].length == 0 ? 0 : parseInt(t[1], 10);

var I = u[1].length == 0 ? 0 : parseInt(u[1], 10);

d = g.g(d, I) || g.g(t[2].length == 0, u[2].length == 0) || g.g(t[2], u[2])

} while (d == 0)

}

return d

};

g.getFlashVersion = function (B) {

b = b.match(/[\d]+/g);

b.length = 3;

return b.join(".")

};

g.detectFlash = function () {

var b = e,

c = "";

if (navigator.plugins && navigator.plugins.length) {

var d = navigator.plugins["Shockwave Flash"];

if (d) {

b = a;

if (d.description) c = g.getFlashVersion(d.description)

}

if (navigator.plugins["Shockwave Flash 2.0"]) {

b = a;

c = "2.0.0.11"

}

} else if (navigator.mimeTypes && navigator.mimeTypes.length) {

if (b = (d = navigator.mimeTypes["application/x-shockwave-flash"]) && d.enabledPlugin) {

c = d.enabledPlugin.description;

c = g.getFlashVersion©

}

} else try {

d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");

b = a;

c = g.getFlashVersion(d.GetVariable("$version"))

} catch (f) {

try {

d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

b = a;

c = "6.0.21"

} catch (h) {

try {

d = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");

b = a;

c = g.getFlashVersion(d.GetVariable("$version"))

} catch (j) {}

}

}

g.hasFlash = b;

g.flashVersion = c

};

g.isFlashVersion = function (B) {

return g.compareVersions(g.flashVersion, B) >= 0

};

g.prepareSound = function () {

g.soundAvailable = e;

g.soundEnabled = e;

g.soundReady = e;

g.detectFlash();

if (!g.hasFlash || !g.isFlashVersion("9.0.0.0")) {

g.soundReady = a;

g.checkIfEverythingIsReady()

} else {

g.flashIframe = document.createElement("iframe");

g.flashIframe.name = "pm-sound";

g.flashIframe.style.position = "absolute";

g.flashIframe.style.top = "-150px";

g.flashIframe.style.border = 0;

g.flashIframe.style.width = "100px";

g.flashIframe.style.height = "100px";

google.dom.append(g.flashIframe);

g.flashIframeDoc = g.flashIframe.contentDocument;

if (g.flashIframeDoc == undefined || g.flashIframeDoc == null) g.flashIframeDoc = g.flashIframe.contentWindow.document;

g.flashIframeDoc.open();

g.flashIframeDoc.write('<html><head></head><body><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="0" height="0" id="pacman-sound-player" type="application/x-shockwave-flash"> <param name="movie" value="logos/swf/pacman10-hp-sound.swf"> <param name="allowScriptAccess" value="always"> <object id="pacman-sound-player-2" type="application/x-shockwave-flash" data="logos/swf/pacman10-hp-sound.swf" width="0" height="0"><param name="allowScriptAccess" value="always"> </object></object></body></html>');

g.flashIframeDoc.close();

window.setTimeout(g.flashNotReady, 3E3)

}

};

g.flashNotReady = function () {

if (!g.ready) {

g.soundAvailable = e;

g.soundEnabled = e;

g.soundReady = a;

g.checkIfEverythingIsReady()

}

};

g.flashReady = function (B) {

g.flashSoundPlayer = b;

g.soundAvailable = a;

g.soundEnabled = a;

g.soundReady = a;

g.checkIfEverythingIsReady()

};

g.flashLoaded = function () {

if (g.flashIframeDoc) {

var b = g.flashIframeDoc.getElementById("pacman-sound-player");

if (b && b.playTrack) {

g.flashReady(B);

return

} else if ((b = g.flashIframeDoc.getElementById("pacman-sound-player-2")) && b.playTrack) {

g.flashReady(B);

return

}

}

g.flashNotReady()

};

g.destroy = function () {

if (google.pacman) {

g.stopAllAudio();

window.clearInterval(g.tickTimer);

window.clearInterval(g.dotTimer);

window.clearInterval(g.dotTimerMs);

google.dom.remove(g.styleElement);

google.dom.remove(g.flashIframe);

google.dom.remove(g.canvasEl);

google.pacman = undefined

}

};

g.exportFunctionCalls = function () {

google.pacman = {};

google.pacman.insertCoin = g.insertCoin;

google.pacman.flashLoaded = g.flashLoaded;

google.pacman.destroy = g.destroy

};

g.updateLoadingProgress = function (B) {

b = Math.round(b * 200);

document.getElementById("logo-b").style.width = b + "px"

};

g.init = function () {

g.ready = e;

document.getElementById("logo").title = "";

g.updateLoadingProgress(0.33);

g.exportFunctionCalls();

g.useCss = navigator.userAgent.indexOf("MSIE 5.") != -1 || navigator.userAgent.indexOf("MSIE 6.") != -1 || navigator.userAgent.indexOf("MSIE 7.") != -1 ? e : a;

g.prepareGraphics();

g.prepareSound()

};

g.init();

}();

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...