Maison > développement back-end > tutoriel php > Comment & # x27; d ils le font? PhpSnake: détection

Comment & # x27; d ils le font? PhpSnake: détection

Christopher Nolan
Libérer: 2025-02-10 11:02:09
original
870 Les gens l'ont consulté

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.

How'd They Do It? PHPSnake: Detecting Keypresses

Concepts clés:

  • PHP CLI Keypress Manipulation: PHP, généralement non associé à des jeux en temps réel, gère efficacement les déempes de clés CLI utilisant stty et readline pour la détection immédiate des entrées.
  • Mappage des clés: Un système de mappage de clés flexible relie les codes de clés des directions de mouvement des serpents, simplifiant la personnalisation du contrôle et le support multi-joueurs.
  • Boucle de jeu: Le jeu utilise une boucle continue pour surveiller les entrées clés et mettre à jour l'état du jeu, y compris la direction du serpent.
  • Méthodes d'entrée: Deux méthodes sont présenté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.
  • Gameplay: Conçu pour la ligne de commande (pas basée sur le navigateur), le jeu comprend des modes simples et multi-joueurs avec des obstacles et des mécanismes de notation variables. Les utilisateurs de Windows ont besoin d'une machine virtuelle (comme Homestead améliorée) pour la compatibilité.

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:

  • un serpent commençant comme un seul caractère, poussant avec chaque aliment consommé.
  • Aliments placés au hasard.
  • Contrôles de touches de flèche solo, multi-joueurs à l'aide de touches Arrow et Wasd.
  • Les collisions murales solo terminées terminent le jeu.
  • Enveloppant mural multi-joueurs; Les collisions réinitialisent la longueur du serpent. Le serpent le plus long après 100 secondes gagne.
  • Interface de ligne de commande uniquement; pas compatible par le navigateur. Windows nécessite un VM.

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:

// 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.
Copier après la connexion
// classes/SnakeGame.php
<?php
namespace PHPSnake;
class SnakeGame {
    public function __construct() {
        echo "Game initialized!\n"; //Simple initialization message.
    }
}
Copier après la connexion

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.

// 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.
        }
    }
Copier après la connexion

How'd They Do It? PHPSnake: Detecting Keypresses

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.)

How'd They Do It? PHPSnake: Detecting Keypresses

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal