Maison >développement back-end >tutoriel php >Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

黄舟
黄舟original
2017-01-21 09:39:451537parcourir

Avec l'exemple précédent "Hello, World" et l'introduction aux bases des applications Web Yii Framework, nous pouvons commencer à introduire une application Web simple mais relativement complète - Hangman (jeu de devinettes de mots). Cet exemple est fourni avec Yii Development. paquet publié. Grâce à cet exemple, vous pouvez comprendre les étapes de base du développement d'applications Yii

En parlant de "Pendu", cela me rappelle le "jeu de devinettes" auquel je jouais sur l'ordinateur CPC464 au lycée à la fin des années 1980 - Pendu, à chaque fois que je me trompais. Une fois, un méchant s'est rapproché de la potence. DOS venait juste de sortir à ce moment-là :-).

Pour développer une application Web, la première étape consiste à effectuer une analyse des besoins. Celle-ci n'est pas incluse dans ce tutoriel, mais par souci d'exhaustivité, les règles du « jeu des devinettes » sont énumérées ci-dessous :

Devinez le mot Le jeu (anglais : Hangman, signifiant « pendu ») est un jeu à deux joueurs. Un joueur pense à un mot et l’autre joueur essaie de deviner chaque lettre du mot auquel il pense.

Le mot à deviner est représenté par une colonne de lignes horizontales, permettant aux joueurs de savoir combien de lettres comporte le mot. Si le joueur qui devine devine correctement l'une des lettres, l'autre joueur doit écrire cette lettre dans toutes les positions où cette lettre apparaît. Si la lettre devinée n'apparaît pas dans le mot, l'autre joueur dessinera l'un des traits de la poupée au cou suspendu. Le jeu se terminera dans les situations suivantes :

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

"Je veux le mot." "Oui, à la huitième et à la onzième place

Devinez." le mot Le joueur a deviné toutes les lettres, ou a deviné le mot entier

L'autre joueur a dessiné le tableau complet :

L'exemple donné aujourd'hui ne dessine pas "Le Pendu", devinez-le correctement Si vous vous trompez, il affichera « Vous gagnez », si vous vous trompez, il affichera « Vous perdez ». Par conséquent, nous pouvons concevoir quatre pages :

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

Ces quatre pages correspondent au cadre Yii sous la forme de quatre vues, qui peuvent être nommées jouer, deviner, gagner, perdre, chacune. Chaque page affiche le titre "Hangman Game", afin que vous puissiez concevoir une "MasterPage" et devenir un modèle de mise en page dans Yii pour quatre vues à partager. L'application Yii adopte le modèle de conception MVC, nous pouvons donc concevoir un Controller->GameController pour quatre vues.

Le didacticiel précédent indiquait que l'application Yii utilise la structure de répertoires par défaut pour stocker différentes parties de l'application. Utilisez les outils fournis par Yii pour ajouter un répertoire de projet par défaut. Cependant, je préfère personnellement créer chaque répertoire par moi-même, donc sur la base des exigences ci-dessus et de la conception de l'interface, la structure de répertoires du projet peut être créée comme suit :

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

Le GameController.php créé est placé dans le répertoire protected/controller.

Les quatre vues créées Guess.php, Lose.php, Play.php, Win.php sont placées dans le répertoire protected/views/game. Le nom du répertoire game correspond à la mise en page partagée créée par GameController.

et est placé dans le répertoire protected/views/layout. Le nom de la mise en page par défaut est main.php

fichier de configuration de l'application. Placez-le. dans protected/config. Le fichier de configuration par défaut est main.php

Le script d'entrée de l'application est index.php

De plus, le fichier texte pour deviner les mots est word.txt

1. Tout d'abord, jetons un coup d'œil au fichier de configuration protected/config/main.php

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

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

Tous les attributs inscriptibles de l'application CWebApplication peuvent être définis via Dans le fichier de configuration, nous voyons que le fichier de configuration définit le nom de l'application comme "Hangman Game", puis modifie le nom du contrôleur par défaut de l'application Web en jeu, qui correspond à GameController. Si le defaultController n'est pas redéfini, la valeur par défaut. Le nom du contrôleur est SiteController, donc View sera stocké dans le répertoire protected/views/site. De plus, cette application Yii ouvre le composant urlManager. La fonction de ce composant sera présentée plus loin. Il est principalement utilisé pour définir le format des URL auxquelles les utilisateurs peuvent accéder (format de routage).

2. Avec ce fichier de configuration, vous pouvez l'utiliser dans le script d'entrée index.php de chaque application Yii est similaire. Dans la plupart des cas, il s'agit de Copier & Coller

. Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

3. Définissez ensuite le fichier de mise en page protected/views/layout/main.php main.php utilisé par View comme modèle de mise en page par défaut. L'application peut modifier la mise en page utilisée par View. Je veux juste le nom de mise en page par défaut principal.

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

La mise en page est essentiellement un fichier HTML, dans lequel, comme espace réservé de la vue, c'est-à-dire lors de l'affichage d'une vue spécifique, telle que play.php, utilisez le contenu de play.php pour le remplacer $content. Réalisant ainsi une fonction similaire à "MasterPage".
4. Vous pouvez définir les quatre vues une par une. Elles ne sont pas répertoriées ici. Prenez play.php comme exemple :

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

Vous pouvez voir qu'il s'agit essentiellement de HTML, et CHtml est une classe auxiliaire prise en charge par le framework Yii pour aider à générer du code HTML. Hangman est relativement simple, il n'utilise donc pas de modèle séparé, mais transmet les paramètres via le rendu push.

Vous devez appeler CController::render() en passant le nom de la vue. Cette méthode recherchera le fichier de vue correspondant dans le répertoire protected/views/ControllerID

Dans le script de vue, nous pouvons accéder à l'instance du contrôleur via $this. Nous pouvons accéder à l'instance du contrôleur via $this->. ; méthode propertyName pour extraire n'importe quelle propriété du contrôleur.

Nous pouvons également utiliser la méthode push suivante pour transmettre des données à la vue :

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

Dans la méthode ci-dessus, la méthode render() va extraire le deuxième paramètre du tableau dans la variable. Le résultat est que dans le script de vue, nous pouvons accéder directement aux variables $var1 et $var2.

5. Écrivez GameController,

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

Généralement, l'action par défaut du Controller est index. Vous pouvez modifier l'action par défaut via $defaultAction. Dans ce cas, elle est modifiée pour jouer. si cet exemple, l'url est http://127.0.0.1:8888/yii/demos/hangman/
alors utilisez http://127.0.0.1:8888/yii/demos/hangman/index.php et utilisez http : //127.0 .0.1:8888/yii/demos/hangman/index.php?game/play a le même effet. Le contrôleur par défaut est GameController, et l'action par défaut de GameController est play.

Action (action) peut être définie comme une méthode nommée avec le mot action comme préfixe. Hangman définit trois actions, actionPlay, actionGuess, actionGiveup, GameController, d'autres méthodes et attributs, et les mots générés. Déterminer si deviner est équivalent. La logique spécifique du jeu n'a pas grand-chose à voir avec le framework Yii et ne sera pas présentée.

6. Regardez d'abord la playAction par défaut. Il s'agit de la méthode par défaut appelée par l'utilisateur, c'est-à-dire lorsque la barre d'adresse du groupe d'utilisateurs entre http://127.0.0.1:8888/yii/demos. /hangman / Action appelée par index.php (ou http://127.0.0.1:8888/yii/demos/hangman/index.php?game/play).

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

Cette méthode définit les trois niveaux de difficulté du jeu, $levels, avec deux branches Si aucun niveau de difficulté n'est sélectionné, $this->render(' play'. ,$params), affichez la page Play, poussez $params (Array) vers la View correspondante, protected/views/play.php, référez-vous à la définition de View ci-dessus :

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

View utilise Radiobutton pour afficher la liste définie par $levels.

Si l'utilisateur sélectionne le niveau de difficulté, stockez le niveau, les mots, etc. dans les attributs définis par GameController, tels que le mot, le niveau, etc. GameController et CController sont également des sous-classes de CComponent prend en charge des fonctions d'attribut similaires à C# et Java. Plus de détails seront introduits plus tard.
Appelez ensuite $this->render('guess'); pour afficher la page Devinez.
La page de devinettes Guess.php est définie comme suit :

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

Dans View, vous pouvez accéder directement aux méthodes et propriétés de l'objet d'instance de contrôleur correspondant via $this. Tels que $this->guessWord, $this->isGuessed(chr($i)), etc.
Cliquez sur 26 lettres pour déclencher devinerAction (array('submit'=>array('guess','g'=>chr($i))))).

7. La définition de GuessAction est

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

, où le paramètre « g » est transmis lorsqu'il est soumis par la page de deviner. Si tous les mots sont devinés correctement, « Vous gagnez ». être affiché ou tous les temps de deviner incorrectement ont été épuisés. Affiche "Vous perdez", $this->render($result ? 'win' : 'lose'),
Si vous avez encore une chance de deviner, revenir à la page de deviner $this->render('guess');

8. Il y a aussi un bouton "Abandonner" sur la page Deviner, sur lequel l'utilisateur clique pour déclencher GiveupAction. est relativement simple et affiche directement la page perdue

Cadre de développement PHP Tutoriel Yii Framework (4) Exemple de jeu de devinettes de mots du pendu

Maintenant, le jeu du Pendu est pratiquement terminé. Bien que le jeu soit simple, il illustre le processus de base de développement d'applications utilisant Yii. Le processus de développement présenté dans le document de développement de Yii est présenté ci-dessous et n'utilise pas de bases de données ni d'internationalisation.

Le processus de développement suppose ici que nous avons effectué l'analyse des exigences et l'analyse de conception nécessaire de l'application.

Créer un squelette de structure de répertoires. L'outil yiic mentionné dans Création de la première application Web peut rapidement mettre en œuvre cette étape.

Configurez cette application. Ceci est réalisé en modifiant le fichier de configuration de l'application. Cette étape peut également nécessiter l'écriture de certains composants applicatifs (tels que des composants utilisateur).

Créez une classe Model pour chaque type de données gérées. Les outils Gii décrits dans Création de la première application Yii et Génération automatique de code peuvent être utilisés pour créer rapidement des classes d'enregistrement actives pour chaque table de données. 4. Créez une classe de contrôleur pour chaque type de demande utilisateur. La manière de classer les demandes des utilisateurs dépend des besoins réels. De manière générale, si les utilisateurs doivent accéder à une classe de modèle, elle doit avoir une classe de contrôleur correspondante. Les outils Gii peuvent également automatiser cette étape.

Mettre en œuvre des actions et leurs vues correspondantes. C’est le vrai travail qui doit être fait.

Configurez les filtres d'action nécessaires dans la classe du contrôleur.

Si vous avez besoin d'une fonctionnalité de thème, créez un thème.

Si l'internationalisation (I18N) est requise, créez les informations de traduction.

Appliquez des techniques de mise en cache appropriées aux points de données et aux points de vue pouvant être mis en cache.

Ajustements finaux et déploiement.

Ce qui précède est le contenu du tutoriel du framework de développement PHP Yii Framework (4) Exemple de jeu de devinettes de mots du pendu Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Déclaration:
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