Construire une application iPad du pendu avec Flash - Programmation du jeu

Bienvenue dans la deuxième partie de notre série de didacticiels sur la création d’un jeu du pendu pour iPad avec Flash. Bien que le premier tutoriel se concentre principalement sur la configuration pour coder les applications iOS avec Flash, ce tutoriel se concentrera sur le code ActionScript et la logique de jeu nécessaires pour programmer réellement le bourreau. Commençons!

Où nous nous sommes laissés?

Dans la première partie de cette série de didacticiels, nous avons expliqué le processus de provisioning de périphérique, l'ajout d'une icône d'application et d'un écran de chargement, ainsi que la procédure de synchronisation de l'application sur votre iPad pendant le développement. Dans cette partie du tutoriel, nous finirons de coder le gameplay..

Ajouter le projet TweenLite

Ce tutoriel incorporera le projet TweenLite, alors allez-y et prenez-en une copie. Une fois que vous l'avez téléchargé, extrayez-le et ajoutez le dossier "com" dans le même dossier que votre projet pendu. Pour finir, ajoutez ce qui suit avec le reste des importations de votre projet:

 importer com.greensock.TweenLite;

Étape 15: Ajout d’un champ de texte

Sélectionnez l'outil Texte, assurez-vous que TextField n'est pas sélectionnable et que les propriétés suivantes sont définies:

  • Taille: 45 pt
  • Couleur: # 0000FF
  • Aligner: centre

Dessinez un TextField sur la scène et définissez les propriétés suivantes:

  • X: 98,00
  • Y: 110,00
  • W: 540,95
  • H: 54.00

Donnez-lui le nom d'instance "guess_word_text".


Étape 16: Création des boutons de jeu

Sélectionnez l'outil Ovale et assurez-vous que les propriétés suivantes sont définies dessus:

  • Couleur de remplissage: # 000000
  • Couleur de trait: # 0000FF
  • AVC: 3.00
  • Style: solide

Maintenez "Shift" pour conformer l'ovale à un cercle et faites glisser un cercle sur la scène.

A l'aide de "l'outil de sélection", faites glisser le contour autour du cercle pour sélectionner le remplissage et le contour. Vous pouvez dire qu'ils sont tous deux sélectionnés par un "motif de hachures".

Avec le remplissage et le trait sélectionnés, donnez au cercle les propriétés suivantes:

  • W: 51.00
  • H: 51.00

Maintenant, faites un clic droit sur le cercle et choisissez "Convertir en symbole". Donnez-lui le nom "GameButton", assurez-vous que "Export For Actionscript" est coché et
que la classe est définie sur "GameButton".

Maintenant, double-cliquez dessus pour passer en mode édition. Sélectionnez l'outil Texte et assurez-vous que les propriétés suivantes sont définies:

  • Couleur blanche
  • Taille: 20 pt

Faites glisser un TextField dans le MovieClip et définissez les propriétés suivantes:

  • X: 11.00
  • Y: 10.00
  • W: 29.00
  • H: 28.00

Assurez-vous que TextField n'est pas sélectionnable:

Donnez à l'instance TextField le nom d'instance "game_btn_text".

Maintenant, supprimez le cercle de la scène.

Étape 17: Classe du bouton de jeu

Allez dans Fichier> Nouveau et choisissez "Fichier Actionscript". Enregistrez-le sous "GameButton.as" dans le même dossier que votre "Hangman.fla"..

Entrez le code suivant dans le "GameButton.as".

 package import flash.text.TextField; import flash.display.MovieClip; Classe publique GameButton étend MovieClip fonction publique GameButton () this.game_btn_text.selectable = false; this.mouseChildren = false;  fonction publique setText (theText: String): void this.game_btn_text.text = theText;  fonction publique getText (): String return this.game_btn_text.text;  fonction publique disable (): void this.mouseEnabled = false; trace ("YEAH"); 

Ici, nous importons les classes dont nous avons besoin, définissons la game_button_text pour ne pas être sélectionnable, réglez sourisEnfants à faux si le
TextField ne peut pas recevoir d’événements de souris, a ajouté des méthodes de lecture et de définition pour définir le texte sur le désactiver () une fonction
cela désactivera les boutons de réception d'événements de souris. Obtenir et définir le texte sur le game_btn_text.


Étape 18: Importations pour le match principal

Ouvrez le fichier "Main.as" que vous devriez avoir disponible dans la partie 1. Ajoutez les importations suivantes en haut de la déclaration de package:

 import flash.events.MouseEvent; import flash.net.URLRequest; import flash.net.URLLoader; import flash.events.Event; import flash.display.Sprite;

Ce sont les cours dont nous aurons besoin grâce à ce tutoriel


Étape 19: Création des variables

Entrez le code suivant juste en dessous fonction publique Main étend MovieClip:

 classe publique principale étend MovieClip // Utilisé pour les champs de texte sur nos boutons de jeu var alphabetArray = ["A", "B", "C", "D", "E", "F", "G", "H "," I "," J "," K "," L "," M "," N "," O "," P "," Q "," R "," S "," T ", "U", "V", "W", "X", "Y", "Z"]; // Le mot d'origine var theWord: String; // La proposition Word var guessWord: Array; // Un tableau pour nos boutons de jeu var gameButtonArray: Array = new Array (); // Ceci contiendra tous les mots var wordList: Array; // Un Sprite dessine le pendu dans var hangmanContainer: Sprite; // Nombre de suppositions erronées var numWrong: int = 0;

Étape 20: Création des boutons de jeu

Entrez le code suivant sous le fonction publique Main () constructeur:

 fonction privée setupGameButtons (): void var xPos = 150; var yPos = 600; gameButtonArray = new Array (); pour (var i: int = 0; i 

Nous déclarons d'abord deux variables xPos et yPos. Ceux-ci tiennent les positions initiales de nos boutons de jeu. Nous instancions alors le
gameButtonArray
à un nouveau tableau. Ensuite, nous parcourons le alphabetArray, créer un nouveau bouton de jeu. Nous vérifions si je est égal à
8 ou 16, et si c’est nous incrémentons la yPos variable de 65, et réinitialiser le xPos variable à 150. Nous vérifions ensuite si je est égal
à 24, et si c'est nous incrémentons yPos par 65 et ensemble xPos à 330. Ceci présente nos boutons dans une belle grille.

Nous créons ensuite un GameButton et définissez le texte sur la lettre courante du tableau alphabet en utilisant (alphabetArray [i]) nous avons ensuite
régler le bouton .X et .y en utilisant xPos et yPos. Nous enfonçons ensuite le bouton dans le gameButtonArray
ajoutez-le à la scène et ajoutez-lui un EventListener.

Enfin, nous incrémentons le xPos par 60 de sorte que la prochaine fois dans la boucle les boutons seront décalés au lieu de l'un sur l'autre.


Étape 21: Fonction checkLetter

Entrez le code suivant sous le setupGameButtons () vous avez créé ci-dessus.

 fonction privée checkLetter (e: MouseEvent): void var tempButton: GameButton = e.currentTarget as GameButton; var theLetter = tempButton.getText (). toLowerCase (); trace (theLetter); 

Ici nous mettons en place un tempButton, et un la lettre variable qui récupère le texte des boutons et le convertit en lowerCase. Puis on trace la lettre à
le panneau de sortie.

Ajouter ce qui suit dans le fonction publique Main ().

 fonction publique Main () setupGameButtons ()

Allez-y et testez le film et vous devriez voir les boutons de jeu bien aligner sur la scène, et si vous cliquez dessus, la lettre correcte devrait
être tracé sur le panneau de sortie.


Étape 22: Chargement dans une liste de mots

Nous chargerons dans un fichier externe .txt contenant les mots utilisés dans ce jeu, séparés par un caractère de nouvelle ligne.

J'ai téléchargé une liste de mots de SourceForge et j'utilise le "variant_1-words.95". Je l'ai renommé en
"wordlist.txt".

Entrez le code suivant sous le checkLetter fonction que vous avez créée ci-dessus.

 function doRequest (): void wordList = new Array (); var loader: URLLoader = new URLLoader (); loader.load (new URLRequest ("wordlist.txt")); loader.addEventListener (Event.COMPLETE, wordListLoaded); 

Ici nous avons mis liste de mots dans un nouveau tableau, configurez un URLLoader, chargez le "wordlist.txt", puis configurez un Event.COMPLETE auditeur
au chargeur.


Étape 23: Fonction wordListLoaded

Ajouter ce qui suit ci-dessous le doDemande fonction que vous avez créée à l'étape ci-dessus:

 function wordListLoaded (e: Event): void var tempString: String = e.target.data as String; trace (tempString); 

Ajouter ce qui suit à fonction publique Main ().

 fonction publique Main () setupGameButtons (); doRequest (); 

Allez-y et testez le film à nouveau. Vous devriez voir les mots de "wordlist.txt" tracés dans la fenêtre de sortie.


Étape 24: Créer le mot de devinette

Nous allons prendre le mot original et remplacer tous les caractères par un "?". Cependant, certains mots contiennent des apostrophes ('), nous allons donc remplacer ceux
le cas échéant.

Ajouter ce qui suit ci-dessous le wordListLoaded () fonction que vous avez créée à l'étape ci-dessus:

 function createGuessWord (): void guessWord = new Array (); var randomWord = Math.floor (Math.random () * wordList.length); theWord = wordList [randomWord]; trace (le mot); theWord = theWord.substring (0, theWord.length-1); pour (var i: int = 0; i< theWord.length;i++) if(theWord.charAt(i) == "'") guessWord[i] ="'"; else guessWord[i]="?";   var newGuessWord = guessWord.join(""); guess_word_text.text = newGuessWord; 

Comme les chaînes sont immuables dans AS3, nous allons stocker chaque caractère dans un tableau, puis convertir le tableau en chaîne. En utilisant un tableau, nous pouvons facilement
changer chaque personnage.

La première chose que nous faisons est de définir devineMot à un nouveau tableau. Nous avons ensuite choisi un élément aléatoire de notre liste de mots tableau et set le mot
égal à l'élément aléatoire de la liste de mots, ce qui nous donne un mot aléatoire.

Ensuite, nous utilisons le sous-chaîne méthode pour couper le dernier caractère du mot. Pendant le test, j'ai remarqué que les mots avaient un espace supplémentaire à la fin. Cela prend soin de cet espace supplémentaire.

Nous passons ensuite en boucle le mot caractère par caractère, vérifie si le caractère actuel est une apostrophe ('), et si c'est le cas, nous définissons l'index actuel du devineMot
tableau à une apostrophe ('), sinon on le met à "?".

Enfin, nous créons un newGuessWord en utilisant les tableaux construits dans le joindre méthode qui prend les éléments d'un tableau et les transforme
dans une chaîne. Enfin, nous définissons la guess_word_text Texte de TextField dans le nouveau GuessWord.


Étape 25: réinitialiser le jeu

le réinitialiser le jeu() fonction est où nous allons réinitialiser tous nos éléments de jeu pour un nouveau jeu. Pour l'instant, nous l'utilisons juste pour créer le MOT-CONGÉ et configurer nos boutons..

Entrez le code suivant sous le createGuessWord fonction que vous avez créée à l'étape ci-dessus.

 function resetGame (): void setupGameButtons (); createGuessWord (); 

Changer le code dans fonction publique Main () au suivant.

 fonction publique Main () doRequest (); 

Ajoutez ensuite la ligne suivante au wordListLoaded une fonction.

 function wordListLoaded (e: Event): void var tempString: String = e.target.data as String; wordList = tempString.split ("\ n"); réinitialiser le jeu(); 

Ici, nous ajoutons les mots à la liste de mots tableau en utilisant les chaînes intégrées Divisé() méthode, en passant "\ n" depuis nos mots
sont séparés par des caractères newline, nous appelons alors réinitialiser le jeu fonction que nous avons créée ci-dessus.

Allez-y et testez le film et vous devriez voir que guessWord a été remplacé par "?" et "'" le cas échéant.


Étape 26: Dessin du conteneur du pendu

Notre pendu est dessiné dynamiquement à l’aide de l’API de dessin d’AS3. La première chose à faire est de dessiner le conteneur du bourreau. Entrez le code suivant
sous le réinitialiser le jeu() une fonction:

 fonction privée addHangmanContainer (): void hangmanContainer = new Sprite (); hangmanContainer.x = 180; hangmanContainer.y = 180; hangmanContainer.graphics.lineStyle (3,0x000000); hangmanContainer.graphics.drawRect (0,0400 400); addChild (HangmanContainer); 

Ici nous définissons le Conteneur du pendu à un nouveau Sprite, définissez-le .X et .y propriétés, et utiliser le dessin
API pour définir le style de ligne à une ligne noire 3px. Ensuite, nous dessinons un rectangle en utilisant le drawRect () méthode et l'ajouter à la scène.

Ajouter ce qui suit au réinitialiser le jeu() une fonction:

 function resetGame (): void if (hangmanContainer! = null) removeChild (hangmanContainer); hangmanContainer = null;  addHangmanContainer (); setupGameButtons (); createGuessWord (); 

Nous vérifions d'abord pour nous assurer Conteneur du pendu n'est pas égal à null. Si ce n'est pas le cas, nous le retirons de la scène et le définissons sur null, puis nous
utilisation addHangmanContainer l'ajouter à la scène.

Testez le film et vous devriez voir le conteneur du pendu bien placé au-dessus des boutons.

Étape 27: Fonction drawHangman ()

le drawHangman () fonction sera utilisée pour dessiner les pièces individuelles du pendu au fur et à mesure que le jeu avance. Entrez le code suivant sous le
addHangmanContainer () une fonction:

 fonction drawHangman (drawNum: int): void commutateur (drawNum) cas 0: drawGallows (); Pause; cas 1: drawHead (); Pause; cas 2: drawBody (); Pause; cas 3: drawArm1 (); Pause; cas 4: drawArm2 (); Pause; cas 5: drawLeg1 (); Pause; cas 6: drawLeg2 (); Pause; 

Cette fonction prendra un int comme paramètre et utilisera une instruction switch pour décider quelle partie du pendu dessiner.

Étape 28: Fonction drawGallows ()

Le code suivant utilise l'API de dessin pour dessiner la potence à l'intérieur de l'image-objet hangmanContainer. Ajouter ce qui suit ci-dessous le drawHangman () une fonction.

 function drawGallows (): void hangmanContainer.graphics.moveTo (20 380); hangmanContainer.graphics.lineTo (360,380); hangmanContainer.graphics.moveTo (290, 380); hangmanContainer.graphics.lineTo (290,50); hangmanContainer.graphics.lineTo (180,50); hangmanContainer.graphics.lineTo (180,90); 

Étape 29: Fonction drawHead ()

Ce code est utilisé pour dessiner la tête du bourreau. Ajoutez le code suivant sous le drawGallows () une fonction.

 function drawHead (): void hangmanContainer.graphics.drawCircle (180,120,30); 

Étape 30: Fonction drawBody ()

Ce code dessine le corps du bourreau. Ajoutez le code suivant drawHead () une fonction:

 function drawBody (): void hangmanContainer.graphics.moveTo (180,150); hangmanContainer.graphics.lineTo (180 300); 

Étape 31: Fonctions de drawArm

Ces deux fonctions sont utilisées pour dessiner les bras gauche et droit. Ajoutez les fonctions suivantes sous le drawBody () une fonction:

 function drawArm1 (): void hangmanContainer.graphics.moveTo (180,200); hangmanContainer.graphics.lineTo (130,190);  function drawArm2 (): void hangmanContainer.graphics.moveTo (180,200); hangmanContainer.graphics.lineTo (230,190)

Étape 32: Fonctions drawLeg

Ces deux fonctions sont utilisées pour dessiner les jambes gauche et droite. Ajoutez les fonctions suivantes sous le drawArm2 () une fonction.

 function drawLeg1 (): void hangmanContainer.graphics.moveTo (180 300); hangmanContainer.graphics.lineTo (130 330); hangmanContainer.graphics.lineTo (120, 320);  function drawLeg2 (): void hangmanContainer.graphics.moveTo (180 300); hangmanContainer.graphics.lineTo (230 330); hangmanContainer.graphics.lineTo (240, 320); 

Étape 33: Création du clip You Win

Allez dans Insertion> Nouveau symbole. Donnez-lui le nom YouWin et assurez-vous que "Export for ActionScript" est coché et que la classe est définie sur "YouWin".

Sélectionnez l'outil Texte et assurez-vous que les propriétés suivantes sont définies:

  • Taille: 14pt
  • Couleur: # 00FF00

Faites glisser un TextField dans le MovieClip et entrez les mots "YOU WIN !!" dans ça.

Ensuite, définissez les propriétés suivantes sur le TextField.

  • X; -49.00
  • Y: -8.00
  • W: 104,00
  • H: 19h00

Nous devons créer une variable pour contenir notre MovieClip YouWin, entrez donc les informations suivantes au bas de vos déclarations de variable:

 var youwin: YouWin;

Étape 34: Créer le clip que vous perdez

Allez dans Insertion> Nouveau symbole. Donnez-lui le nom YouLose et assurez-vous que l'option "Exporter pour ActionScript" est cochée et que la classe est définie sur "YouLose"..

Sélectionnez l'outil Texte et assurez-vous que les propriétés suivantes sont définies..

  • Taille: 14pt
  • Couleur: # FF0000

Faites glisser un TextField dans le MovieClip et entrez les mots "YOU LOSE !!" dans ça.

Définissez les propriétés suivantes dans le TextField

  • X; -49.00
  • Y: -8.00
  • W: 104,00
  • H: 19h00

Nous avons besoin d’une variable pour contenir notre MovieClip YouLose, alors entrez ce qui suit au bas de votre déclaration de variable.

 var youlose: YouLose;

Étape 35: Fonction disableButtons ()

Ajoutez le code suivant sous le drawLeg2 () une fonction.

 fonction privée disableButtons (): void for (var i: int = 0; i < gameButtonArray.length;i++) gameButtonArray[i].disable();  

Ce code passe tout simplement à travers le gameButtonArray et désactive tous les boutons.

Étape 36: Terminer checkLetter ()

Dans cette étape, nous terminerons la checkLetter () fonction qui est le cœur du jeu. Entrez le code suivant
à l'intérieur de checkLetter () fonction créée précédemment.

 fonction privée checkLetter (e: MouseEvent): void var tempButton: GameButton = e.currentTarget as GameButton; var theLetter = tempButton.getText (). toLowerCase (); var correctGuess: Boolean = false; var newGuessWord; tempButton.removeEventListener (MouseEvent.CLICK, checkLetter); removeChild (tempButton); pour (var i: int = 0; i 

le tempButton et la lettre les variables ont été expliquées dans les étapes précédentes. le correct variable est définie sur
false au début, si l'utilisateur choisit une lettre correcte, nous définissons ceci sur true. le newGuessWord est une variable temporaire que nous allons utiliser pour construire le nouveau mot à afficher.

Ensuite, nous supprimons EventListener du bouton et le retirons de la scène..

Nous passons en boucle le mot caractère par caractère et vérifiez si le caractère actuel de le mot est égal à la lettre, et
si c’est le cas, nous mettons la lettre appropriée dans devineMot tableau à la lettre.

Nous utilisons ensuite la méthode de jointure de la classe String pour transformer notre devineMot tableau dans une chaîne (newGuessWord) et définissez le guess_word_text à newGuessWord.

Nous vérifions si correct est faux, et si c'est nous incrémentons numWrong et appelez notre fonction drawHangman en passant numWrong.

Nous vérifions ensuite si nouveauGuessWordM est égal à le mot et si c'est le cas, nous désactivons les boutons, instancions notre Vous gagnez MovieClip, définissez son .x
et .y, ajoutez-le à la scène et appelez TweenLite pour l'animer avec un onComplete une fonction.

Enfin, nous vérifions si numWrong est égal à six et si c'est le cas, on passe en boucle le mot et mettre chaque lettre dans le devineMot
tableau égal au caractère actuel le mot. Nous utilisons ensuite join comme expliqué ci-dessus et montrons le mot. Nous désactivons les boutons, instancions nos tu as perdu MovieClip,
ajoutez-le à la scène et une fois encore appelez TweenLite pour animer avec un onComplete une fonction.

Étape 37: Fonction resetTheGame ()

le resetTheGame () les fonctions sont appelées lorsque les animations du Vous gagnez et tu as perdu Les MovieClips sont terminés. Entrez le code suivant
sous le drawLeg2 () une fonction:

 function resetTheGame (): void if (youwin! = null) removeChild (youwin); youwin = null;  if (youlose! = null) removeChild (youlose); youlose = null;  réinitialiser le jeu(); 

Cette fonction vérifie si le Vous gagnez et tu as perdu ne sont pas nuls, et s'ils ne sont pas nous appelons enleverChild retirer
les de la scène et les mettre à zéro. Enfin nous appelons le réinitialiser le jeu une fonction.

Étape 38: Terminer resetGame ()

Nous devons faire un dernier nettoyage dans le réinitialiser le jeu une fonction. Ajoutez le code suivant au réinitialiser le jeu() une fonction:

 function resetGame (): void numWrong = 0; if (gameButtonArray.length> 0) pour (var i: int = 0; i 

Nous avons d'abord réinitialisé numWrong à 0, puis nous parcourons le gameButtonArray, vérifier si les boutons sont sur la scène et s'ils
est-ce qu'on les enlève.

Étape 39: Ajout de la liste de mots

Vous devrez inclure le "wordlist.txt" aux fichiers inclus. Alors allez dans les paramètres "AIR pour IOS" et sur l'onglet "Général" cliquez sur le bouton "+"
et accédez au "wordlist.txt" en l'ajoutant aux fichiers inclus.

Ceci termine notre jeu! L'étape suivante consiste à publier pour l'App Store et à télécharger via iTunes Connect..

Étape 40: Préparation pour l'App Store

Vous devrez d’abord générer un "Distribution" Profil d'approvisionnement. Suivez les étapes de l’étape 4 de la première partie du didacticiel, mais
assurez-vous que vous êtes sous "Distribution" au lieu de développement.

Ensuite, vous devrez télécharger le "Distribution" certificat et le convertir en .P12 en suivant l'exemple de l'étape 5 de la première partie de cette série.

Ensuite, retournez dans "Air For IOS" et sous l'onglet "DÉPLOIEMENT", remplacez le fichier .p12 de développement par la distribution .P12, puis le fichier de provisioning de devloper.
avec le profil de distribution, cochez la case "Déploiement - Apple App Store" et cliquez sur Publier..

Enfin, connectez-vous à iTunes Connect, allez dans "Gérer les applications" et ajoutez une nouvelle application, suivez les instructions, puis téléchargez votre application avec "App Loader"..

Conclusion

Cette série a fourni une bonne introduction au développement mobile avec Flash CS5.5. J'espère que vous avez appris quelque chose d'utile et merci d'avoir lu! Si vous souhaitez voir plus de contenu de développement iOS pour Flash CS 5.5, laissez un commentaire ci-dessous.!