ホームページ >バックエンド開発 >PHPチュートリアル >PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語当てゲーム例
前の「Hello, World」の例と Yii Framework Web アプリケーションの基本の紹介で、シンプルだが比較的完全な Web アプリケーション - Hangman (単語当てゲーム) の紹介を始めることができます。このサンプルは Yii 開発キットに付属しています。出版されました。この例を通じて、Yii アプリケーション開発の基本的な手順を理解することができます
「ハングマン」といえば、1980 年代後半に高校の CPC464 コンピューターでプレイした「推理ゲーム」、「毎回」を思い出します。私の推測は間違っていました、私はゲームに負けました。小さな男が絞首台に近づきました。当時は DOS が登場したばかりでした :-)。
Web アプリケーションを開発するには、最初のステップは要件分析を実行することです。これはこのチュートリアルには含まれていませんが、完全を期すために、「推測ゲーム」のルールを以下に示します。
推測ゲーム (英語: Hangman、「吊るす」「人」) は 2 人用のゲームです。 1 人のプレーヤーが単語を考え、もう 1 人のプレーヤーがそのプレーヤーが考える単語の各文字を推測しようとします。
推測される単語は横線の列で表され、プレイヤーはその単語が何文字あるかを知ることができます。推測するプレイヤーが文字の 1 つを正しく推測した場合、他のプレイヤーはその文字が出現するすべての位置にその文字を書かなければなりません。推測した文字が単語の中に現れない場合、他のプレイヤーは首吊り人形のストロークの 1 つを描きます。ゲームは次の状況で終了します:
「単語 t が欲しいです。」 「はい、8 位と 11 位です。」
推測プレイヤーがすべての文字を推測したか、単語全体を推測しました
別のプレイヤーが完全な絵を描きました:
今日の例では、「吊られた男」は描かれていません。推測が正しければ「あなたの勝ち」と表示され、推測が間違っていれば「あなたの負け」と表示されます。 」。 したがって、4 つのページをデザインできます:
これら 4 つのページは、play、guess、win、lose という名前が付けられる 4 つのビューとして Yii フレームワークに対応します。各ページには「Hangman Game」のタイトルが表示されます。 Yii で 4 つのビューが共有するレイアウト テンプレートとなる「MasterPage」をデザインします。 Yii アプリケーションは MVC デザインパターンを採用しているため、4 つのビューに対してコントローラー -> ゲームコントローラーをデザインできます。
前のチュートリアルでは、Yii アプリケーションはデフォルトのディレクトリ構造を使用してアプリケーションのさまざまな部分を保存できると説明しました。デフォルトのプロジェクト ディレクトリに参加します。ただし、個人的には各ディレクトリを自分で作成したいので、上記の要件とインターフェイス設計に基づいて、プロジェクトのディレクトリ構造は次のように作成できます。
作成した 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
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 です。
レイアウトは基本的に HTML ファイルであり、ビューのプレースホルダーとして、つまり play.php などの特定のビューを表示するときに、play.php のコンテンツが $content を置き換えるために使用されます。これにより「MasterPage」と同様の機能を実現します。
4. ここではリストされていない 4 つのビューを 1 つずつ定義できます。これは基本的に 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 を作成できます
通常、コントローラーのデフォルトのアクションは、$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)。
このメソッドは、2 つの分岐を持つゲームの 3 つの難易度レベル $levels を定義します。難易度レベルが選択されていない場合、$this->render('play',$params) が呼び出されて、プレイが表示されます。ページを開き、$params (配列) を対応するビュー (protected/views/play.php) にプッシュします。上記のビューの定義を参照してください:
View は、Radiobutton を使用して $levels 定義のリストを表示します。
ユーザーが難易度を選択した場合、GameControllerで定義された単語、レベルなどの属性にレベル、単語などを格納します。 GameController と CController も CComponent のサブクラスです。CComponent は C# や Java と同様の属性関数をサポートします。詳細は後ほどご紹介します。
次に $this->render(‘guess’); を呼び出して、Guess ページを表示します。
Guess ページのguess.php は次のように定義されています:
View では、$this を通じて、対応するコントローラー インスタンス オブジェクトのメソッドとプロパティに直接アクセスできます。 $this->guessWord、$this->isGuessed(chr($i)) など。
26 文字をクリックすると、guessAction (array('submit'=>array('guess','g'=>chr($i)))) がトリガーされます。
7 は、guessAction の定義です。
推測ページで送信されるときにパラメータ「g」が渡され、すべての単語が正しく推測された場合は「勝ち」が表示され、すべての推測が使用された場合は「負け」が表示されます。 $this->render($result? 'win' : 'lose'),
まだ推測するチャンスがある場合は、推測ページ $this->render('guess');
8. Guess ページには「Give up」ボタンもあります。これをクリックすると、giveupAction がトリガーされ、loose ページが直接表示されます。これで、Hangman ゲームは基本的に完了です。ゲームは単純ですが、Yii を使用したアプリケーション開発の基本プロセスを示しています。Yii 開発ドキュメントに記載されている開発プロセスは比較的単純であり、データベースや国際化は使用しません。
ここでの開発プロセスは、アプリケーションの要件分析と必要な設計分析が完了していることを前提としています。
ディレクトリ構造のスケルトンを作成します。 「最初の Web アプリケーションの作成」で説明した yiic ツールを使用すると、この手順を迅速に実装できます。
このアプリを設定します。これは、アプリケーション構成ファイルを変更することによって実現されます。 この手順では、一部のアプリケーション コンポーネント (ユーザー コンポーネントなど) の作成も必要になる場合があります。
管理するデータの種類ごとに Model クラスを作成します。 「最初の Yii アプリケーションの作成と自動コード生成」で説明されている Gii ツールを使用すると、各データ テーブルのアクティブ レコード クラスを迅速に作成できます。 4. ユーザーリクエストのタイプごとにコントローラークラスを作成します。 ユーザーのリクエストをどのように分類するかは、実際のニーズによって異なります。一般に、ユーザーがモデル クラスにアクセスする必要がある場合は、対応するコントローラー クラスが必要です。 Gii ツールはこのステップを自動化することもできます。
アクションとそれに対応するビューを実装します。 これが実際に行わなければならない作業です。
コントローラークラスで必要なアクションフィルターを設定します。
テーマ機能が必要な場合は、テーマを作成します。
国際化(I18N)が必要な場合は、翻訳情報を作成します。
キャッシュ可能なデータ ポイントとビュー ポイントに適切なキャッシュ手法を適用します。
最終調整と展開。
上記は、PHP 開発フレームワーク Yii Framework チュートリアル (4) ハングマンの単語推測ゲームの例の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。