/** _eat power pill. */ private void _eatPowerPill() { pildoraPoderFueComida = false; int powerPillIndex = laberintoActua.graph[pacman.currentNodeIndex].powerPillIndex; if (powerPillIndex >= 0 && powerPills.get(powerPillIndex)) { score += POWER_PILL; fastamasComerMultiplicador = 1; powerPills.clear(powerPillIndex); int newEdibleTime = (int) (EDIBLE_TIME * (Math.pow(EDIBLE_TIME_REDUCTION, cuentaElLvl % LEVEL_RESET_REDUCTION))); for (Ghost ghost : fantasmas.values()) if (ghost.lairTime == 0) ghost.edibleTime = newEdibleTime; else ghost.edibleTime = 0; pildoraPoderFueComida = true; } }
/** _feast. */ private void _feast() { pacmanFueComido = false; for (GHOST ghost : GHOST.values()) fantasmaComido.put(ghost, false); for (Ghost ghost : fantasmas.values()) { int distance = getShortestPathDistance(pacman.currentNodeIndex, ghost.currentNodeIndex); if (distance <= EAT_DISTANCE && distance != -1) { if (ghost.edibleTime > 0) // pac-man eats ghost { score += GHOST_EAT_SCORE * fastamasComerMultiplicador; fastamasComerMultiplicador *= 2; ghost.edibleTime = 0; ghost.lairTime = (int) (COMMON_LAIR_TIME * (Math.pow(LAIR_REDUCTION, cuentaElLvl % LEVEL_RESET_REDUCTION))); ghost.currentNodeIndex = laberintoActua.lairNodeIndex; ghost.lastMoveMade = MOVE.NEUTRAL; fantasmaComido.put(ghost.type, true); } else // ghost eats pac-man { pacman.numberOfLivesRemaining--; pacmanFueComido = true; if (pacman.numberOfLivesRemaining <= 0) juegoTerminado = true; else _levelReset(); return; } } } for (Ghost ghost : fantasmas.values()) if (ghost.edibleTime > 0) ghost.edibleTime--; }