検索
ホームページバックエンド開発PHPチュートリアルPHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

前の「Hello, World」の例と Yii Framework Web アプリケーションの基本の紹介で、シンプルだが比較的完全な Web アプリケーション - Hangman (単語当てゲーム) の紹介を始めることができます。このサンプルは Yii 開発キットに付属しています。出版されました。この例を通じて、Yii アプリケーション開発の基本的な手順を理解することができます

「ハングマン」といえば、1980 年代後半に高校の CPC464 コンピューターでプレイした「推理ゲーム」、「毎回」を思い出します。私の推測は間違っていました、私はゲームに負けました。小さな男が絞首台に近づきました。当時は DOS が登場したばかりでした :-)。

Web アプリケーションを開発するには、最初のステップは要件分析を実行することです。これはこのチュートリアルには含まれていませんが、完全を期すために、「推測ゲーム」のルールを以下に示します。

推測ゲーム (英語: Hangman、「吊るす」「人」) は 2 人用のゲームです。 1 人のプレーヤーが単語を考え、もう 1 人のプレーヤーがそのプレーヤーが考える単語の各文字を推測しようとします。

推測される単語は横線の列で表され、プレイヤーはその単語が何文字あるかを知ることができます。推測するプレイヤーが文字の 1 つを正しく推測した場合、他のプレイヤーはその文字が出現するすべての位置にその文字を書かなければなりません。推測した文字が単語の中に現れない場合、他のプレイヤーは首吊り人形のストロークの 1 つを描きます。ゲームは次の状況で終了します:

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

「単語 t が欲しいです。」 「はい、8 位と 11 位です。」

推測プレイヤーがすべての文字を推測したか、単語全体を推測しました

別のプレイヤーが完全な絵を描きました:

今日の例では、「吊られた男」は描かれていません。推測が正しければ「あなたの勝ち」と表示され、推測が間違っていれば「あなたの負け」と表示されます。 」。 したがって、4 つのページをデザインできます:

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

これら 4 つのページは、play、guess、win、lose という名前が付けられる 4 つのビューとして Yii フレームワークに対応します。各ページには「Hangman Game」のタイトルが表示されます。 Yii で 4 つのビューが共有するレイアウト テンプレートとなる「MasterPage」をデザインします。 Yii アプリケーションは MVC デザインパターンを採用しているため、4 つのビューに対してコントローラー -> ゲームコントローラーをデザインできます。

前のチュートリアルでは、Yii アプリケーションはデフォルトのディレクトリ構造を使用してアプリケーションのさまざまな部分を保存できると説明しました。デフォルトのプロジェクト ディレクトリに参加します。ただし、個人的には各ディレクトリを自分で作成したいので、上記の要件とインターフェイス設計に基づいて、プロジェクトのディレクトリ構造は次のように作成できます。

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

作成した GameController.php は protected/ に配置されます。コントローラのディレクトリ。

作成された 4 つのビュー、guess.php、lose.php、play.php、win.php は protected/views/game ディレクトリに配置されます。ディレクトリ名 game は GameController によって作成された共有レイアウトに対応します。

は protected/views/layout ディレクトリに配置されます。デフォルトのレイアウト名は main.php です

アプリケーション設定ファイルはデフォルトで protected/config に配置されます。設定ファイルはmain.php

アプリケーションのエントリスクリプトはindex.php

また、単語推測用のテキストファイルはword.txt

1です。まず、設定ファイルprotected/configを見てみましょう。 /main.php

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

return array(
'name'=>'Hangman Game',
'defaultController'=>'game',
'components'=>array(
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'game/guess/'=>'game/guess',),),
),);

CWebApplication アプリケーションのすべての書き込み可能な属性は、構成ファイルを通じて定義できます。構成ファイルではアプリケーションの名前が「Hangman Game」として定義されており、デフォルトのコントローラー名が変更されていることがわかります。 Web アプリケーションのゲームへの接続を GameController に対応させるため、defaultController が再定義されていない場合、デフォルトのコントローラー名は SiteController となるため、View は protected/views/site ディレクトリに保存する必要があります。さらに、この Yii アプリケーションは urlManager コンポーネントを開きます。このコンポーネントの機能は主に、ユーザーがアクセスできる URL の形式 (ルーティング形式) を定義するために使用されます。

2. この設定ファイルを各 Yii アプリケーションのエントリ スクリプトのindex.php で使用できます。レイアウト ファイル protected/views/layout/main.php View によってデフォルトのレイアウト テンプレートとして使用される main.php アプリケーションは View によって使用されるレイアウトを変更できます。この例では、デフォルトのレイアウト名は main です。

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

レイアウトは基本的に HTML ファイルであり、ビューのプレースホルダーとして、つまり play.php などの特定のビューを表示するときに、play.php のコンテンツが $content を置き換えるために使用されます。これにより「MasterPage」と同様の機能を実現します。

4. ここではリストされていない 4 つのビューを 1 つずつ定義できます。

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

これは基本的に HTML であり、CHtml は HTML コードの生成を支援する Yii フレームワークによってサポートされる補助クラスであることがわかります。 Hangman は比較的単純であるため、別個のモデルを使用せず、レンダー プッシュを通じてパラメーターを渡します。

ビューの名前を渡して CController::render() を呼び出す必要があります。このメソッドは、 protected/views/ControllerID ディレクトリで対応するビュー ファイルを検索します。

ビュー スクリプト内で、$this->propertyName Get を使用してビュー内でコントローラー インスタンスにアクセスできます。コントローラーの任意の属性。

次のプッシュ メソッドを使用してデータをビューに渡すこともできます:

$this->render('edit', array(
'var1'=>$value1,
' var2'=>$value2,
));

上記のメソッドでは、render() メソッドが配列の 2 番目のパラメーターを変数に抽出します。その結果、ビュー スクリプトで直接アクセスできるようになります。変数 $var1 と $var2.

5. レイアウトとビューを定義した後、GameController を作成できます

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

通常、コントローラーのデフォルトのアクションは、$defaultAction アクションを通じて変更できます。この例は再生するように変更されているため、この例の URL が http://127.0.0.1:8888/yii/demos/hangman/
の場合は http://127.0.0.1:8888/yii/demos/hangman を使用します。 /index.php は、http://127.0.0.1:8888/yii/demos/hangman/index.php?game/play を使用するのと同じ効果があります。デフォルトのコントローラーは GameController で、GameController のデフォルトのアクションは play.

Action (アクション) という単語を接頭辞として付けたメソッドとして定義できます。 Hangman は、actionPlay、actionGuess、actionGiveup、GameController、その他のメソッドと属性、および生成された単語の 3 つのアクションを定義します。特定のゲーム ロジックは Yii フレームワークとはほとんど関係がないため、説明しません。

6. まず、デフォルトの playAction を見てください。これは、ユーザー グループのアドレス バーが http://127.0.0.1:8888/yii/demos/ になったときに呼び出されます。 Hangman /index.php (または http://127.0.0.1:8888/yii/demos/hangman/index.php?game/play)。

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

このメソッドは、2 つの分岐を持つゲームの 3 つの難易度レベル $levels を定義します。難易度レベルが選択されていない場合、$this->render('play',$params) が呼び出されて、プレイが表示されます。ページを開き、$params (配列) を対応するビュー (protected/views/play.php) にプッシュします。上記のビューの定義を参照してください:

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

View は、Radiobutton を使用して $levels 定義のリストを表示します。

ユーザーが難易度を選択した場合、GameControllerで定義された単語、レベルなどの属性にレベル、単語などを格納します。 GameController と CController も CComponent のサブクラスです。CComponent は C# や Java と同様の属性関数をサポートします。詳細は後ほどご紹介します。
次に $this->render(‘guess’); を呼び出して、Guess ページを表示します。
Guess ページのguess.php は次のように定義されています:

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

View では、$this を通じて、対応するコントローラー インスタンス オブジェクトのメソッドとプロパティに直接アクセスできます。 $this->guessWord、$this->isGuessed(chr($i)) など。
26 文字をクリックすると、guessAction (array('submit'=>array('guess','g'=>chr($i)))) がトリガーされます。

7 は、guessAction の定義です。

PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

推測ページで送信されるときにパラメータ「g」が渡され、すべての単語が正しく推測された場合は「勝ち」が表示され、すべての推測が使用された場合は「負け」が表示されます。 $this->render($result? 'win' : 'lose'),
まだ推測するチャンスがある場合は、推測ページ $this->render('guess');

8. Guess ページには「Give up」ボタンもあります。これをクリックすると、giveupAction がトリガーされ、loose ページが直接表示されます。これで、Hangman ゲームは基本的に完了です。ゲームは単純ですが、Yii を使用したアプリケーション開発の基本プロセスを示しています。Yii 開発ドキュメントに記載されている開発プロセスは比較的単純であり、データベースや国際化は使用しません。

ここでの開発プロセスは、アプリケーションの要件分析と必要な設計分析が完了していることを前提としています。 PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例

ディレクトリ構造のスケルトンを作成します。 「最初の Web アプリケーションの作成」で説明した yiic ツールを使用すると、この手順を迅速に実装できます。

このアプリを設定します。これは、アプリケーション構成ファイルを変更することによって実現されます。 この手順では、一部のアプリケーション コンポーネント (ユーザー コンポーネントなど) の作成も必要になる場合があります。

管理するデータの種類ごとに Model クラスを作成します。 「最初の Yii アプリケーションの作成と自動コード生成」で説明されている Gii ツールを使用すると、各データ テーブルのアクティブ レコード クラスを迅速に作成できます。 4. ユーザーリクエストのタイプごとにコントローラークラスを作成します。 ユーザーのリクエストをどのように分類するかは、実際のニーズによって異なります。一般に、ユーザーがモデル クラスにアクセスする必要がある場合は、対応するコントローラー クラスが必要です。 Gii ツールはこのステップを自動化することもできます。

アクションとそれに対応するビューを実装します。 これが実際に行わなければならない作業です。

コントローラークラスで必要なアクションフィルターを設定します。

テーマ機能が必要な場合は、テーマを作成します。

国際化(I18N)が必要な場合は、翻訳情報を作成します。

キャッシュ可能なデータ ポイントとビュー ポイントに適切なキャッシュ手法を適用します。

最終調整と展開。

上記は、PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語推測ゲームの例の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?セッションに関連するクロスサイトスクリプティング(XSS)攻撃からどのように保護できますか?Apr 23, 2025 am 12:16 AM

セッション関連のXSS攻撃からアプリケーションを保護するには、次の測定が必要です。1。セッションCookieを保護するためにHTTPonlyとセキュアフラグを設定します。 2。すべてのユーザー入力のエクスポートコード。 3.コンテンツセキュリティポリシー(CSP)を実装して、スクリプトソースを制限します。これらのポリシーを通じて、セッション関連のXSS攻撃を効果的に保護し、ユーザーデータを確保できます。

PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?PHPセッションのパフォーマンスを最適化するにはどうすればよいですか?Apr 23, 2025 am 12:13 AM

PHPセッションのパフォーマンスを最適化する方法は次のとおりです。1。遅延セッション開始、2。データベースを使用してセッションを保存します。これらの戦略は、高い並行性環境でのアプリケーションの効率を大幅に改善できます。

session.gc_maxlifetime構成設定とは何ですか?session.gc_maxlifetime構成設定とは何ですか?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifettinginttinginphpdethinesthelifsessessiondata、setinseconds.1)it'sconfiguredinphp.iniorviaini_set()。 2)AbalanceSneededToAvoidPerformanceIssues andunexpectedLogouts.3)php'sgarbagecollectionisisprobabilistic、影響を受けたBygc_probabi

PHPでセッション名をどのように構成しますか?PHPでセッション名をどのように構成しますか?Apr 23, 2025 am 12:08 AM

PHPでは、session_name()関数を使用してセッション名を構成できます。特定の手順は次のとおりです。1。session_name()関数を使用して、session_name( "my_session")などのセッション名を設定します。 2。セッション名を設定した後、session_start()を呼び出してセッションを開始します。セッション名の構成は、複数のアプリケーション間のセッションデータの競合を回避し、セキュリティを強化することができますが、セッション名の一意性、セキュリティ、長さ、設定タイミングに注意してください。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!