ホームページ >バックエンド開発 >PHPチュートリアル >どのように彼らはそれをしますか? phpsnake:キープレスの検出

どのように彼らはそれをしますか? phpsnake:キープレスの検出

Christopher Nolan
Christopher Nolanオリジナル
2025-02-10 11:02:09870ブラウズ

この記事では、SnakeゲームのPHPコマンドラインバージョンの構築について詳しく説明しています。 ブルガリアの会議ハッカソンがプロジェクトに影響を与え、リアルタイムゲーム開発におけるPHPの驚くべき能力を紹介しました。 元のリポジトリを使用するのではなく、ゲームをゼロから構築します。

How'd They Do It? PHPSnake: Detecting Keypresses

重要な概念:

  • PHP CLIキープレスの取り扱い:PHPは、通常、リアルタイムゲームに関連付けられていませんが、即時の入力検出のためにおよびsttyを使用してCLIキープレスを効果的に管理します。 readline
  • キーマッピング:
  • 柔軟なキーマッピングシステムは、キーコードをヘビの動きの方向にリンクし、制御のカスタマイズとマルチプレイヤーサポートを簡素化します。 ゲームループ:
  • ゲームは連続ループを採用して、キー入力を監視し、ヘビの方向を含むゲーム状態を更新します。
  • 入力方法:2つのメソッドが表示されます。直接の文字読み取りの場合は
  • stty cbreakゲームプレイ:コマンドライン用に設計された(ブラウザベースではない)、ゲームには、さまざまな障害物とスコアリングメカニズムを備えたシングルおよびマルチプレイヤーモードが含まれます。 Windowsユーザーは、互換性のためにVM(Homesteadの改善など)が必要です。 readline_callback_handler_install stream_select
  • セットアップとゲームルール:
  • このチュートリアルは、セットアップを容易にするためにHomesteadが改善されたことを利用しています。 環境がコマンドラインのPHP実行をサポートしていることを確認してください ゲーム機能:

1人のキャラクターとして始まるヘビは、各食品アイテムが消費されて成長しています。 ランダムに配置された食品 シングルプレイヤー矢印キーコントロール、矢印キーを使用したマルチプレイヤー。

シングルプレイヤーの壁の衝突ゲームはゲームを終了します

マルチプレイヤーウォールラップアラウンド;衝突はヘビの長さをリセットします。 100秒後の最長のヘビが勝ちました。

コマンドラインインターフェイスのみ。ブラウザ互換ではありません。 WindowsにはVMが必要です

  • 初期構造(play.php and snakegame.php):
  • ファイルは、コマンドライン引数を処理し、ゲームロジックを開始するフロントコントローラーとして機能します。
  • コアゲームクラスが含まれています。 基本的な構造から始めます:
  • ゲームループとキープレスの取り扱い:

従来のゲームはフレームベースのループを使用します。 PHPには回避策が必要です。 コンソールへの入力をエコーせずに即時キープレスの読み取り値を有効にするためにを使用します。

play.php

ヘビのクラスとキーマッピング:

aSnakeクラスは、名前、方向、長さなど、個々のヘビインスタンスを管理します。 キーマッピングは、簡単なプレーヤーコントロール構成のためにSnakeGameで定義されています。

(snake.phpとsnakegame.phpコードは、元のものと同様にここに追加されますが、明確さが向上し、潜在的に簡潔なコードがあります。

How'd They Do It? PHPSnake: Detecting Keypresses 結論とさらなる開発:

これは、PHPコマンドラインスネークゲームの基礎を築きます。 パート2では、レンダリング、動き、および衝突検出について説明します。 メソッドは、そのシンプルさに適しています。

stty(FAQSセクションは簡潔に省略されています。これは、大部分が繰り返され、ゲームのコアコードと構造に関連性が低いため)

以上がどのように彼らはそれをしますか? phpsnake:キープレスの検出の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。