Maison >développement back-end >tutoriel php >Comment & # x27; d ils le font? PhpSnake: détection
Cet article détaille la construction d'une version de ligne de commande PHP du jeu de serpents. Un hackathon de la conférence bulgare a inspiré le projet, présentant les capacités surprenantes de PHP dans le développement de jeux en temps réel. Nous allons construire le jeu à partir de zéro, plutôt que d'utiliser le référentiel d'origine.
Concepts clés:
stty
et readline
pour la détection immédiate des entrées. stty cbreak
pour la lecture directe des caractères et readline_callback_handler_install
avec stream_select
pour une manipulation plus robuste, bien que complexe. Les deux sont * spécifiques au Nix. Règles de configuration et de jeu:
Ce tutoriel utilise Homestead améliorée pour faciliter la configuration. Assurez-vous que votre environnement prend en charge l'exécution de php en ligne de commande.
Le jeu présente:
Structure initiale (play.php et snakegame.php):
Le fichier play.php
sert de contrôleur avant, gérant les arguments en ligne de commande et lançant la logique du jeu. SnakeGame.php
contient la classe de jeu de base. Nous commençons par une structure de base:
<code class="language-php">// play.php <?php use PHPSnake\SnakeGame; require_once 'classes/SnakeGame.php'; $param = ($argc > 1) ? $argv[1] : ''; $snake = new SnakeGame(); //Further game initialization would go here.</code>
<code class="language-php">// classes/SnakeGame.php <?php namespace PHPSnake; class SnakeGame { public function __construct() { echo "Game initialized!\n"; //Simple initialization message. } }</code>
Gestion de la boucle de jeu et des clés:
Les jeux traditionnels utilisent des boucles à base. PHP nécessite une solution de contournement. Nous utiliserons stty cbreak -echo
pour activer la lecture immédiate des clés sans faire écho à la console.
<code class="language-php">// classes/SnakeGame.php (updated) public function run() { system('stty cbreak -echo'); $stdin = fopen('php://stdin', 'r'); while (true) { $c = ord(fgetc($stdin)); //Process keypress ($c) here. } }</code>
Classe de serpents et cartographie des clés:
a Snake
La classe gère les instances de serpent individuelles, y compris le nom, la direction et la longueur. Les mappages de clés sont définis dans SnakeGame
pour une configuration de contrôle de lecteur facile.
(Snake.php et Snakegame.php Code seraient ajoutés ici, similaires à l'original, mais avec une clarté améliorée et un code potentiellement plus concis.)
Conclusion et développement ultérieur:
Cela jette les bases d'un jeu de serpent en ligne de commande PHP. La deuxième partie couvrira le rendu, le mouvement et la détection de collision. La méthode stty
est préférée pour sa simplicité.
(La section FAQS a omis pour la concision, car elle était largement répétitive et moins pertinente pour le code et la structure de base du jeu.)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!