AMARILLO . '@' . RESET . ' ',
$c === 1 || $c === 2 => ROJO . 'M' . RESET . ' ',
$c === 'X' => ROJO . 'X' . RESET . ' ',
default => $c . ' ',
};
}
echo "n";
}
}
function leer_tecla(): string {
$c = fread(STDIN, 4);
return ($c === false || $c === '') ? '' : $c;
}
function mensaje_fin(string $texto, string $color): void {
limpiar();
echo $color . "nn " . $texto . RESET . "n";
sleep(2);
}
register_shutdown_function(function (): void {
system('stty sane');
cursor(true);
echo RESET . "n";
});
cursor(false);
system('stty -icanon -echo min 0 time 0');
stream_set_blocking(STDIN, false);
$m = generar_tablero();
$py = 0; $px = 0;
$m1y = 0; $m1x = COLS - 1;
$m2y = FILAS - 1; $m2x = COLS - 1;
$puntos = 0;
$m[$py][$px] = '@';
$m[$m1y][$m1x] = 1;
$m[$m2y][$m2x] = 2;
while (true) {
dibujar($m, $puntos);
usleep(DELAY);
$m[$m1y][$m1x] = ' ';
$m[$m2y][$m2x] = ' ';
if (tablero_vacio($m)) {
mensaje_fin("*** 隆Ganaste! *** Puntos: " . ($puntos * 15), VERDE);
exit(0);
}
$tecla = leer_tecla();
if ($tecla !== '') {
if ($tecla === ESC) { exit(0); }
$m[$py][$px] = ' ';
if ($tecla === ESC . "[A" && $py > 0) $py--;
elseif ($tecla === ESC . "[B" && $py < FILAS - 1) $py++;
elseif ($tecla === ESC . "[C" && $px < COLS - 1) $px++;
elseif ($tecla === ESC . "[D" && $px > 0) $px--;
if ($m[$py][$px] === '.') $puntos++;
$m[$py][$px] = '@';
}
if (($m1x === $px && $m1y === $py) || ($m2x === $px && $m2y === $py)) {
$m[$py][$px] = 'X';
dibujar($m, $puntos);
mensaje_fin("*** 隆Perdiste! *** Puntos: " . ($puntos * 15), ROJO);
exit(0);
}
$m1x = rand(0, 1) ? min($m1x + 1, COLS - 1) : max($m1x - 1, 0);
$m1y = rand(0, 1) ? min($m1y + 1, FILAS - 1) : max($m1y - 1, 0);
$m[$m1y][$m1x] = 1;
$m2x = rand(0, 1) ? min($m2x + 1, COLS - 1) : max($m2x - 1, 0);
$m2y = rand(0, 1) ? min($m2y + 1, FILAS - 1) : max($m2y - 1, 0);
$m[$m2y][$m2x] = 2;
}
Pacman en PHP CLI
Implementaci贸n del cl谩sico Pacman en modo texto para ejecutar desde la terminal con PHP. Usa secuencias de escape ANSI para los colores y el posicionamiento del cursor, y pone el terminal en modo raw no bloqueante con stty. Compatible con Linux y macOS; requiere PHP 8.0+ en CLI.
Descargar adjuntos
COMPARTE ESTE TUTORIAL
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP