alexx20 Δημοσ. 23 Μαΐου 2010 Δημοσ. 23 Μαΐου 2010 103 χιλιαδες, παιδια Αnd the winner is... (εκτος αν βρεθει κανας φιλος και το περασει, που δε νομιζω)
Dimitris1948 Δημοσ. 23 Μαΐου 2010 Δημοσ. 23 Μαΐου 2010 103 χιλιαδες, παιδια Αnd the winner is... (εκτος αν βρεθει κανας φιλος και το περασει, που δε νομιζω) είναι μικρό το μέγεθος τις εικόνας δεν φαίνεται καλά!
Mp0u Δημοσ. 23 Μαΐου 2010 Δημοσ. 23 Μαΐου 2010 http://macek.github.com/google_pacman/ χεχε χωρις τo search bar δε φενεται τοσο ωραιο:shock:
Kasrith Δημοσ. 23 Μαΐου 2010 Δημοσ. 23 Μαΐου 2010 χωρις τo search bar δε φενεται τοσο ωραιο:shock: Indeed....
alexx20 Δημοσ. 24 Μαΐου 2010 Δημοσ. 24 Μαΐου 2010 Oριστε εδω και με το search bar(no sound). http://www.underealm.com/download/GooglePacman.zip
BadBoy Δημοσ. 24 Μαΐου 2010 Δημοσ. 24 Μαΐου 2010 Μα τι λέτε, δεν το κατέβασαν. http://www.google.com/pacman/
kurkosdr Δημοσ. 25 Μαΐου 2010 Δημοσ. 25 Μαΐου 2010 Μα τι λέτε, δεν το κατέβασαν. http://www.google.com/pacman/ Και παιζει και σε Iphone/Ipad. (link) Απο τα λιγα παιχνιδια που μπορεις να εχεις στο Iphone χωρις να περασεις απο το app store. Εξυπνος τροπος απο την google να πει στην apple "αρπα την". (λεω και γω, τι το ηθελαν το javascript ενω με το flash και πιο ευκολα θα γινοταν η δουλεια και με πολυ λιγοτερη cpu usage)
billxl Δημοσ. 25 Μαΐου 2010 Δημοσ. 25 Μαΐου 2010 Να πάρει, το 'χασα. Το έχω όμως όπως και δεκάδες άλλα κλασσικά παιχνίδια στην Amiga μου.
mrunbox Δημοσ. 25 Μαΐου 2010 Δημοσ. 25 Μαΐου 2010 Δεν πρόκειται για java αλλα ούτε και για flash παιδιά. Είναι το νέο html 5 και το παιχνιδάκι έγινε σκόπιμα για την πρωόθηση του.
kurkosdr Δημοσ. 27 Μαΐου 2010 Δημοσ. 27 Μαΐου 2010 Δεν πρόκειται για java αλλα ούτε και για flash παιδιά. Είναι το νέο html 5 και το παιχνιδάκι έγινε σκόπιμα για την πρωόθηση του. Εγω παντως javascript βλεπω οταν παταω Προβολη --> Κωδικας σελιδας στο firefox. Δεν ειναι java ή html5.
Demetris77 Δημοσ. 27 Μαΐου 2010 Δημοσ. 27 Μαΐου 2010 Δεν ειναι 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( { 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 ( { 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 ( { 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 ( { 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 != if (this.dir == 0) { if (g.playfield[this.pos[0]][this.pos[1]].allowedDir & this.dir = b } else { var c = g.playfield[this.tilePos[0]][this.tilePos[1]]; if (c && c.allowedDir & { 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 ( { 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 = 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 ( { 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, ; 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( * 8, Math.round© * 8]; if (d[0] != this.tilePos[0] || d[1] != this.tilePos[1]) this.p(d); else { b = [Math.floor( * 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(; 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 ( 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 != { this.physicalSpeed = b; this.speedIntervals = g.getSpeedIntervals(this.physicalSpeed) } }; E.prototype.c = function ( { 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] != { 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 ( { 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 }; g.seed = function ( { 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 ( { return b + -32 }; g.getPlayfieldY = function ( { return b + 0 }; g.getCorrectedSpritePos = function ( { return b / 8 * 10 + 2 }; g.getDotElementId = function (b, c) { return "pcm-d" + b + "-" + c }; g.showElementById = function (b, c) { var d = document.getElementById(; if (d) d.style.visibility = c ? "visible" : "hidden" }; g.getAbsoluteElPos = function ( { 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(; 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 ( { var c = e; switch ( { 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 ( { if (! 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 ( { if (! 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 ( { 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 ( { 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 ( { 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 ( { 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 ( { 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(; 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 ( { 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 != f.reverseDirectionsNext = a; f.a( } } 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(; if (g.playfield[c[0]][c[1]].dot == 2) { g.switchMainGhostMode(4, e); g.addToScore(50, } else g.addToScore(10, ; 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 ( { var c = b <= 4 ? 128 : 160; b = 128 + 16 * ((b - 1) % 4); return [c, b] }; g.getFruitScoreSprite = function ( { 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 ( { 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, } }; 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 ( { 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 ( { 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 ( { g.gameplayMode = b; if (b != 13) for (var c = 0; c < g.playerCount + 4; c++) g.actors[c].b(); switch ( { 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(; 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(; 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(; g.stopAllAudio(); b = document.createElement("div"); b.id = "pcm-go"; g.prepareElement(b, 8, 152); g.playfieldEl.appendChild(; 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 ( { g.showElementById("pcm-sc-1-l", ; g.showElementById("pcm-sc-2-l", ; g.showElementById("pcm-sc-1", ; g.showElementById("pcm-sc-2", ; g.showElementById("pcm-li", ; g.showElementById("pcm-so", }; 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 ( 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(; g.changeGameplayMode(0); break; case 8: b = document.getElementById("pcm-go"); google.dom.remove(; 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 ( { 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( }; g.updateChromeScore = function ( { 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 ( { if (g.soundAvailable && g.soundEnabled) try { g.flashSoundPlayer.stopChannel( } catch © { g.soundAvailable = e } }; g.stopAllAudio = function () { if (g.soundAvailable && g.soundEnabled) { try { g.flashSoundPlayer.stopAmbientTrack() } catch ( { g.soundAvailable = e } for (var c = 0; c < 5; c++) g.stopSoundChannel© } }; g.playDotEatingSound = function ( { 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(); }();
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα