CouvreFlash® CS3 ActionScript™ 3.0 pour les jeuxGary Rosenzweig
Introduction3Si vous êtes non pas programmeur mais concepteur, illustrateur ou animateur, vous pourrez utiliser les exemples de ce livre comme str
Structure de jeu élémentaire : le Memory93Chapitre 3Placer les éléments interactifs Pour créer un jeu de Memory, nous devons d’abord créer un jeu de
ActionScript 3.0 pour les jeux94Méthode à symbole uniqueLa seconde méthode pour travailler avec une série de pièces de jeu comme des cartes est la mét
Structure de jeu élémentaire : le Memory95Chapitre 3Figure 3.1Le clip Card est un symbole avec trente-sept images. Chaque image représente une carte
ActionScript 3.0 pour les jeux96Créer la classe ActionScript de basePour créer un fi chier de classe ActionScript, choisissez Fichier > Nouveau, p
Structure de jeu élémentaire : le Memory97Chapitre 3 Il existe trois types de nombres : uint, int et Number. Le type uint est conçu pour tous les no
ActionScript 3.0 pour les jeux98Figure 3.3Défi nissez la classe du document de l’animation Flash en lui donnant le nom du fi chier ActionScript contenan
Structure de jeu élémentaire : le Memory99Chapitre 3Utiliser des constantes pour une meilleure programmation Avant de poursuivre le développement d
ActionScript 3.0 pour les jeux100 Vous remarquerez que j’ai choisi private static const lors de la défi nition de chacune des constantes. Le mot-clé pr
Structure de jeu élémentaire : le Memory101Chapitre 3Mélanger et attribuer des cartesMaintenant que nous pouvons ajouter des cartes à l’écran, il fau
ActionScript 3.0 pour les jeux102À présent, lorsque nous bouclons afi n de créer les trente-six clips, nous récupérons un nombre aléatoire dans cette l
ActionScript 3.0 pour les jeux4Fichier s source Vous aurez également besoin des fi chiers source de ce livre. Consultez la fi n de l’introduction pour p
Structure de jeu élémentaire : le Memory103Chapitre 3 S’il faut généralement déclarer et défi nir des variables, il est également possible d’ajouter d
ActionScript 3.0 pour les jeux104JeuÀ présent que la grille est confi gurée, nous devons permettre à l’utilisateur de cliquer sur des cartes pour tente
Structure de jeu élémentaire : le Memory105Chapitre 3À chaque fois qu’une fonction réagit à un événement, elle doit prendre au moins un paramètre, à
ActionScript 3.0 pour les jeux106Figure 3.6État 1, où l’utilisateur est sur le point de choisir sa première carte. Figure 3.7État 2, où l’utilisateur
Structure de jeu élémentaire : le Memory107Chapitre 3Figure 3.8État 3, où une paire de cartes a été sélectionnée mais aucune correspondance, trouvée.
ActionScript 3.0 pour les jeux108Examinons le code :public function clickCard(event:MouseEvent) { var thisCard:Card = (event.target as Card); // Qu
Structure de jeu élémentaire : le Memory109Chapitre 3Le cas suivant correspond à ce qui se passe si le joueur a sélectionné une fi rstCard puis sélect
ActionScript 3.0 pour les jeux110Il existe plusieurs approches pour ce travail. Par exemple, vous pouvez avoir une nouvelle variable dans laquelle vou
Structure de jeu élémentaire : le Memory111Chapitre 3 Vous pouvez utiliser ++ pour ajouter une unité à une variable et -- pour la soustraire. Par exe
ActionScript 3.0 pour les jeux112Encapsuler le jeu Nous disposons maintenant d’un jeu qui s’exécute sous la forme d’une animation Flash complète. L’an
Introduction5Le Chapitre 3, "Structure de jeu élémentaire : un jeu de Memory", est un peu différent du reste du livre. Au lieu d’examine
Structure de jeu élémentaire : le Memory113Chapitre 3Figure 3.11Ce clip utilisera le fi chier MatchingGameObject7.as comme classe.En somme, ce clip re
ActionScript 3.0 pour les jeux114 Si vous souhaitez conserver tout le code à l’écart du scénario principal, vous pouvez confi gurer un nouveau fi chier
Structure de jeu élémentaire : le Memory115Chapitre 3 Pourquoi n’est-il pas possible d’écire simplement root.gotoAndStop("gameover") ? Aprè
ActionScript 3.0 pour les jeux116Une fois que vous avez ajouté ce bouton à la troisième image, nommez-le playAgainButton à l’aide de l’inspecteur des
Structure de jeu élémentaire : le Memory117Chapitre 3Ensuite, nous devons créer ce champ texte et l’ajouter comme enfant :gameScoreField = new TextFi
ActionScript 3.0 pour les jeux118 secondCard = null; // Ajouter des points gameScore += pointsForMatch; showGameScore(); // Vérifi er si
Structure de jeu élémentaire : le Memory119Chapitre 3 En passant de MatchingGame8.fl a à MatchingGame9.fl a, vous devez faire plus que changer les noms
ActionScript 3.0 pour les jeux120Dans la fonction constructeur, nous ajoutons un nouveau champ texte pour affi cher le temps écoulé. Nous nous déplaçon
Structure de jeu élémentaire : le Memory121Chapitre 3Figure 3.14Le temps écoulé est maintenant affi ché en haut à droite.Décomposons cette tâche en un
ActionScript 3.0 pour les jeux122À présent que nous avons le nombre de minutes et de secondes, nous devons insérer un signe deux-points entre les deux
Structure de jeu élémentaire : le Memory123Chapitre 3Il n’est pas nécessaire d’utiliser du code pour créer les champs texte dynamiques showScore et s
ActionScript 3.0 pour les jeux124Ajouter des effets Qu’ils semblent loin, les premiers temps des jeux sur le Web où la simple idée de pouvoir s’amuse
Structure de jeu élémentaire : le Memory125Chapitre 3La classe Card10 défi nira ensuite certaines variables, confi gurera un écouteur événementiel et e
ActionScript 3.0 pour les jeux126La variable fl ipStep commence donc à 10 lorsque la fonction startFlip est appelée. Elle est ensuite réduite d’une uni
Structure de jeu élémentaire : le Memory127Chapitre 3 Temps d’affi chage limité des cartes L’un des ajouts intéressants à ce jeu consiste à retourner
ActionScript 3.0 pour les jeux128La fonction returnCards duplique le code qui se trouvait auparavant dans clickCard. Dans MatchingGameObject10.as, j’a
Structure de jeu élémentaire : le Memory129Chapitre 3Figure 3.17Chaque son est une classe et devient accessible dans le code ActionScript par le nom
ActionScript 3.0 pour les jeux130Voilà tout ce qu’il faut pour ajouter des effets sonores à notre jeu. À ce stade, il peut être intéressant de pass
Structure de jeu élémentaire : le Memory131Chapitre 3Voilà tout pour notre jeu de Memory, dont la version fi nale utilise les fi chiers suivants :Match
1Utiliser Flash et ActionScript 3.0 Au sommaire de ce chapitre• Qu'est-ce qu'ActionScript 3.0 ?• Créer un programme ActionScri
4Jeux cérébraux : Simon et déduction Au sommaire de ce chapitre• Tableaux et objets de données • Jeu de Simon• Jeu de déduction
ActionScript 3.0 pour les jeux134Au chapitre précédent, nous avons examiné un jeu qui intégrait une unique confi guration de grille de jeu et dont la p
Jeux cérébraux : Simon et déduction135Chapitre 4 Cet exemple crée un tableau de chaînes. Les tableaux peuvent cependant contenir n’importe quel t
ActionScript 3.0 pour les jeux136Tableau 4.1 : Fonctions de tableau courantes (Suite)Fonction Exemple Descriptionshift myArray.shift("Wizard&quo
Jeux cérébraux : Simon et déduction137Chapitre 4 Si vous le souhaitez, vous pouvez créer cette même variable de la manière suivante :var theChara
ActionScript 3.0 pour les jeux138Les structures de données comme les tableaux et les objets de données sont essentielles dans tous les jeux à l’except
Jeux cérébraux : Simon et déduction139Chapitre 4 ce qui signifi e que seulement 25 % de la couleur sous-jacente transparaît. La première image cor
ActionScript 3.0 pour les jeux140Figure 4.2Le scénario du clip LightColors contient une couleur par image. Stratégie de programmation L’animation com
Jeux cérébraux : Simon et déduction141Chapitre 4 Les clips Light seront stockés dans un tableau. Il y a cinq projecteurs, soit cinq éléments dans
ActionScript 3.0 pour les jeux142La défi nition de classe inclut plusieurs déclarations de variables. La seule constante que nous utiliserons est le no
ActionScript 3.0 pour les jeux8ActionScript est un langage de programmation parfaitement adapté à la création de jeux. Il est facile à apprendre, rapi
Jeux cérébraux : Simon et déduction143Chapitre 4 Figure 4.3L’écran du jeu de Simon présente deux champs texte et cinq projecteurs.Ajouter le text
ActionScript 3.0 pour les jeux144 L’oubli qui consiste à ne pas attribuer la valeur false à la propriété selectable d’un champ texte fait partie des e
Jeux cérébraux : Simon et déduction145Chapitre 4 // Chargement des sons soundList = new Array(); for(var i:uint=1;i<=5;i++) {
ActionScript 3.0 pour les jeux146Tous les éléments écran ont été créés. Il est maintenant temps de commencer le jeu. Nous allons attribuer un nouveau
Jeux cérébraux : Simon et déduction147Chapitre 4 La fonction vérifi e la valeur de playStep afi n de déterminer s’il va s’agir du dernier arrêt du
ActionScript 3.0 pour les jeux148 Au lieu d’utiliser les numéros d’image 1 et 2, nous aurions également pu intituler les images "on" et &quo
Jeux cérébraux : Simon et déduction149Chapitre 4 Accepter et vérifi er l’entrée de l’utilisateurLa dernière fonction requise pour le jeu est appel
ActionScript 3.0 pour les jeux150 // Réponse exacte if (event.currentTarget.lightNum == repeatOrder.shift()) { lightOn(event.currentT
Jeux cérébraux : Simon et déduction151Chapitre 4 Ensuite, au lieu d’affi cher simplement le message "Game Over" lorsque le joueur rate u
ActionScript 3.0 pour les jeux152Codes sourceshttp://fl ashgameu.comA3GPU04_Deduction.zip Le jeu de déduction a été popularisé sous le nom de marque Ma
Utiliser Flash et ActionScript 3.09Chapitre 1Nous disposons maintenant d’un excellent environnement de développement pour la création des jeux en deux
Jeux cérébraux : Simon et déduction153Chapitre 4 Figure 4.4L’image 1 inclut un arrière-plan et un titre qui sont présents dans toutes les images,
ActionScript 3.0 pour les jeux154Figure 4.5Le bouton Done utilisé dans le jeu fait la même hauteur que les trous à pion utilisés dans le jeu. Le clip
Jeux cérébraux : Simon et déduction155Chapitre 4 À part l’arrière-plan et le titre, le scénario principal ne contient rien. Nous allons utiliser
ActionScript 3.0 pour les jeux156Il nous faut deux variables principales pour tenir le registre de l’état d’avancement dans le jeu. La première est un
Jeux cérébraux : Simon et déduction157Chapitre 4 La variable turnNum est positionnée à 0. Ensuite, la fonction createPegRow est appelée pour fair
ActionScript 3.0 pour les jeux158 newPeg.y = turnNum*rowSpacing+vertOffset; newPeg.gotoAndStop(1); newPeg.addEventListener(MouseE
Jeux cérébraux : Simon et déduction159Chapitre 4 Le currentButton est défi ni en tant que DoneButton au début de la classe. Il ne se voit cepen-d
ActionScript 3.0 pour les jeux160Vérifi cation des propositions du joueurLorsque le joueur clique sur un trou de pion, il fait défi ler en boucle les pi
Jeux cérébraux : Simon et déduction161Chapitre 4 Évaluer les déplacements du joueurLorsque le joueur clique sur le bouton Done, la fonction click
ActionScript 3.0 pour les jeux162Tableau 4.2 : Calcul des pions mal placés CouleurChoisie par l’utilisateur CorrecteNombre de pions mal positionnésRou
ActionScript 3.0 pour les jeux10Figure 1.1Choisissez Fichier Flash (AS 3.0) pour créer une nouvelle animation Flash. Lorsque vous cliquez sur le bouto
Jeux cérébraux : Simon et déduction163Chapitre 4 Maintenant que nous connaissons le résultat des tests, nous pouvons les affi cher dans le champ t
ActionScript 3.0 pour les jeux164 // Créer le message texte à côté des pions et du bouton currentText = new TextField(); currentText.x =
Jeux cérébraux : Simon et déduction165Chapitre 4 Figure 4.9Le joueur a épuisé tous ses essais. En outre, le bouton Done est modifi é afi n d’appele
ActionScript 3.0 pour les jeux166 for(var i:uint=0;i<numPegs;i++) { var newPeg:Peg = new Peg(); newPeg.x = i*pegSpacing+horizOffse
Jeux cérébraux : Simon et déduction167Chapitre 4 // Positionner toutes les références d’objets d’affi chage à null allDisplayObjects = null
5Animation de jeu : jeux de tir et de rebond Au sommaire de ce chapitre :• Animation de jeu• Air Raid• Casse-brique
ActionScript 3.0 pour les jeux170Jusqu’à présent, nous n’avons créé que des jeux dont les éléments restaient positionnés à un même emplacement. Ces él
Animation de jeu : jeux de tir et de rebond171Chapitre 5 Figure 5.1L’objet avance de 400 pixels par seconde quelle que soit la cadence d’images.
ActionScript 3.0 pour les jeux172Ensuite, dans la dernière image de l’exemple, 260 millisecondes supplémentaires s’écoulent. Cela nous porte à un tota
Utiliser Flash et ActionScript 3.011Chapitre 1La partie supérieure de la fenêtre Document inclut un scénario, avec des images dont la première porte l
Animation de jeu : jeux de tir et de rebond173Chapitre 5 public function AnimatedObject(x,y,dx,dy) { // Défi nir emplacement et
ActionScript 3.0 pour les jeux174 // Mettre à jour la position selon la vitesse et le temps this.x += speedX*timePassed/1000;
Animation de jeu : jeux de tir et de rebond175Chapitre 5 // Obtenir une vitesse comprise entre 70 et 100, positive ou négative pub
ActionScript 3.0 pour les jeux176Air Raid Codes sourceshttp://fl ashgameu.comA3GPU05_AirRaid.zipAir Raid est analogue à certains anciens jeux d’arcade
Animation de jeu : jeux de tir et de rebond177Chapitre 5 la mesure temporelle pour déterminer la différence entre les images. Elle utilisera un é
ActionScript 3.0 pour les jeux178L’altitude n’est qu’un nom un peu pompeux pour désigner la position verticale de l’avion. 0 correspondra au haut de l
Animation de jeu : jeux de tir et de rebond179Chapitre 5 } else if ((dx > 0) && (x > 600)) { deletePlane(); } }Sup
ActionScript 3.0 pour les jeux180Le clip contient un graphisme d’explosion qui démarre à l’image 6. Il se poursuit sur quelques images, puis atteint u
Animation de jeu : jeux de tir et de rebond181Chapitre 5 Tourelle mouvante La classe qui contrôle le canon anti-DCA (voir Figure 5.4) est un peu
ActionScript 3.0 pour les jeux182 public function AAGun() { // Emplacement initial du canon this.x = 275;
ActionScript 3.0 pour les jeux12Figure 1.3Le panneau Actions peut aussi être affi ché à l’aide du raccourci clavier a + 9 (Windows) ou a + 9 (Mac).Figu
Animation de jeu : jeux de tir et de rebond183Chapitre 5 En plus de déplacer le canon, vous remarquerez sous le commentaire "Vérifi cation de
ActionScript 3.0 pour les jeux184Il reste une dernière partie dans la classe AAGun qui correspond à la fonction deleteGun. Nous ne l’utiliserons que l
Animation de jeu : jeux de tir et de rebond185Chapitre 5 La fonction constructeur accepte une valeur x et une valeur y de départ, ainsi qu’une vi
ActionScript 3.0 pour les jeux186La fonction removeBullet, comme la fonction removePlane, se trouvera dans la classe principale. Elle aura à charge de
Animation de jeu : jeux de tir et de rebond187Chapitre 5 Maintenant que nous avons des avions, un canon anti-DCA et des objets Bullet, il est tem
ActionScript 3.0 pour les jeux188Parmi les variables dont nous avons besoin pour la classe fi gurent des références au canon et les tableaux qui référe
Animation de jeu : jeux de tir et de rebond189Chapitre 5 Nous devons également créer les tableaux qui contiendront les balles et les avions :
ActionScript 3.0 pour les jeux190 side = “right”; } var altitude:Number = Math.random()*50+20; var speed:Number = Math.random()*150+15
Animation de jeu : jeux de tir et de rebond191Chapitre 5 break; } } } if ((shotsLeft == 0) && (bullets.length ==
ActionScript 3.0 pour les jeux192Nous ajoutons la balle au tableau bullets et soustrayons une unité à shotsLeft. Nous mettrons également à jour le sco
ActionScript 3.0pour les jeuxGary RosenzweigLE PROGRAMMEUR
Utiliser Flash et ActionScript 3.013Chapitre 1Avec ActionScript 3.0, le fait de créer des objets tels qu’un champ texte ne les ajoute pas à la scène.
Animation de jeu : jeux de tir et de rebond193Chapitre 5 if (airplanes[i] == plane) { airplanes.splice(i,1); break;
ActionScript 3.0 pour les jeux194 } airplanes = null; aagun.deleteGun(); aagun = null; stage.removeEventListener(KeyboardEvent.
Animation de jeu : jeux de tir et de rebond195Chapitre 5 Figure 5.7L’image intro contient des instructions et un bouton Start.Casse-brique Code
ActionScript 3.0 pour les jeux196Dans cette version du jeu de casse-brique, le joueur contrôle en bas de l’écran une raquette qu’il peut déplacer à ga
Animation de jeu : jeux de tir et de rebond197Chapitre 5 clip. Comme Brick et Paddle seront tous deux créés par ActionScript, nous ne pouvons cep
ActionScript 3.0 pour les jeux198Figure 5.10Un fi ltre Biseau est utilisé pour transformer des rectangles simples en graphismes plus sophistiqués. De n
Animation de jeu : jeux de tir et de rebond199Chapitre 5 Nous utiliserons deux variables pour surveiller la vélocité de la balle : ballDX et bal
ActionScript 3.0 pour les jeux200Nous devons donc capturer ce clic et l’utiliser en exécutant newBall :public function startPaddleBall () { //
Animation de jeu : jeux de tir et de rebond201Chapitre 5 Lors de la création de fonctions d’organisation de ce type, ne craignez pas d’effectuer
ActionScript 3.0 pour les jeux202Lancer une nouvelle balleLorsque le jeu commence, il n’y a pas de balle. Au lieu de cela, le message "Click to S
ActionScript 3.0 pour les jeux14Figure 1.5L’écran affi che un petit "Hello World" en haut à gauche.Notre première classe ActionScript 3.0 No
Animation de jeu : jeux de tir et de rebond203Chapitre 5 Animation du jeu et détection des collisions Jusque-là, le code du jeu a été plutôt simp
ActionScript 3.0 pour les jeux204Rappelez-vous que nous avons initialisé la variable lastTime à zéro au lieu de lui attribuer la valeur de getTimer. N
Animation de jeu : jeux de tir et de rebond205Chapitre 5 Nous calculons le rectangle de la raquette (paddleRect) de la même manière : var oldB
ActionScript 3.0 pour les jeux206 // Rebond newBallY -= 2*(newBallRect.bottom - paddleRect.top);
Animation de jeu : jeux de tir et de rebond207Chapitre 5 S’il s’agit de la dernière balle, la partie est terminée et la fonction endGame est appe
ActionScript 3.0 pour les jeux208Pour calculer la collision avec les briques, nous devons parcourir en boucle toutes les briques et les vérifi er une à
Animation de jeu : jeux de tir et de rebond209Chapitre 5 Si la balle est entrée en collision avec une brique, cette dernière doit être supprimée.
ActionScript 3.0 pour les jeux210 } paddle = null; bricks = null; // Supprimer la balle if (ball != null) { removeChild(ball);
6Puzzles d’images et puzzles coulissants Au sommaire de ce chapitre :• Manipuler des images bitmap • Jeu de puzzle coulissant• Jeu
ActionScript 3.0 pour les jeux212Il existe toute une gamme de jeux qui utilisent des photographies ou des dessins détaillés. Les puzzles sont assez no
Utiliser Flash et ActionScript 3.015Chapitre 1Figure 1.6Le document ActionScript contient un programme Hello World très simple.Comme vous pouvez le vo
Puzzles d’images et puzzles coulissants213Chapitre 6Le processus complet ne prend que trois lignes de code. Ensuite, nous utilisons addChild pour
ActionScript 3.0 pour les jeux214 Si URLRequest est au départ destiné au travail sur les serveurs Web, il fonctionnera tout aussi bien sur votre dis
Puzzles d’images et puzzles coulissants215Chapitre 6 // Récupérer l’image à partir d’une source externe public function loadBitmap(b
ActionScript 3.0 pour les jeux216Notre but en soi n’est pas d’avoir une image bitmap. Nous souhaitons avoir un Sprite à affi cher à l’écran. Nous en cr
Puzzles d’images et puzzles coulissants217Chapitre 6Maintenant que nous savons comment créer un ensemble de pièces de puzzle à partir d’une image
ActionScript 3.0 pour les jeux218Confi gurer l’animation Ce jeu utilise la même structure à trois images que nous avons utilisée aux deux derniers chap
Puzzles d’images et puzzles coulissants219Chapitre 6 Le nombre de colonnes et de lignes dans le puzzle devrait approximativement correspondre aux
ActionScript 3.0 pour les jeux220Lorsque le joueur clique sur le bouton Start, il est conduit à la seconde image, qui appelle startSlidingPuzzle. À la
Puzzles d’images et puzzles coulissants221Chapitre 6Pour fi nir, shuffl ePuzzlePieces mélange le puzzle et le prépare pour le joueur :// Chargement
ActionScript 3.0 pour les jeux222Nous avons également une propriété piece de newPuzzleObject. Cette propriété contient une référence au sprite de la p
ActionScript 3.0 pour les jeux16 La ligne de code suivante correspond à la défi nition de la classe. Ici, il doit s’agir d’une classe publique, ce qui
Puzzles d’images et puzzles coulissants223Chapitre 6À ce stade, toutes les pièces sont en place, mais elles ne sont pas mélangées. Si nous ne les
ActionScript 3.0 pour les jeux224A u lieu de placer aléatoirement chacune des pièces, nous commencerons donc par le puzzle terminé et procéderons à de
Puzzles d’images et puzzles coulissants225Chapitre 6 Vous remarquerez que la déclaration de la fonction validMove stipule qu’elle retourne une cha
ActionScript 3.0 pour les jeux226Figure 6.5Le jeu peut maintenant commencer avec les pièces mélangées. La question de savoir combien de fois il faut
Puzzles d’images et puzzles coulissants227Chapitre 6Vous remarquerez que, lorsque la fonction shuffl eRandom a appelé movePiece, elle a utilisé fal
ActionScript 3.0 pour les jeux228La fonction movePieceInDirection change instantanément la propriété currentLoc de la pièce et la variable blankPoin
Puzzles d’images et puzzles coulissants229Chapitre 6Ensuite, le Timer est créé et deux écouteurs lui sont associés. L’écouteur TimerEvent.TIMER dé
ActionScript 3.0 pour les jeux230C’est également le moment d’appeler puzzleComplete afi n de voir si chaque pièce se trouve au bon endroit. Si c’est le
Puzzles d’images et puzzles coulissants231Chapitre 6réinitialisé à null. Comme les pièces du puzzle sont les seuls objets du jeu qui ont été créés
ActionScript 3.0 pour les jeux232Dans notre jeu de puzzle, nous allons découper les pièces comme pour le jeu de puzzle coulissant. Au lieu de les plac
Utiliser Flash et ActionScript 3.017Chapitre 1Travailler avec Flash CS3Si l’essentiel de notre travail se fera en ActionScript, il est nécessaire de c
Puzzles d’images et puzzles coulissants233Chapitre 6Comme pour le puzzle coulissant, nous stockons toutes les pièces du puzzle sous forme d’objets
ActionScript 3.0 pour les jeux234Chargement et découpage de l’image L’image est chargée de la même manière que pour le puzzle coulissant. Je ne rev
Puzzles d’images et puzzles coulissants235Chapitre 6Découper les pièces du puzzle Le principe de base pour la découpe des pièces est identique dan
ActionScript 3.0 pour les jeux236 La fonction shuffl e sélectionne des emplacements aléatoires pour toutes les pièces du puzzle. Nous ne nous préoc
Puzzles d’images et puzzles coulissants237Chapitre 6En plaçant toutes les pièces sur une grille de 10 × 10, nous les amenons à se coller parfaitem
ActionScript 3.0 pour les jeux238 // Trouver la pièce sur laquelle l’utilisateur a cliqué for(var i in puzzleObjects) { if (puzzleObject
Puzzles d’images et puzzles coulissants239Chapitre 6 for (var i in puzzleObjects) { if (i == clickedPiece) continue; sortedObject
ActionScript 3.0 pour les jeux240Si la pièce est effectivement reliée, nous pouvons l’ajouter à la liste beingDragged, positionner sa propriété dragOf
Puzzles d’images et puzzles coulissants241Chapitre 6La clé de la fonction isConnected tient au fait que nous avons déjà trié la liste de pièces en
ActionScript 3.0 pour les jeux242 for (var i in beingDragged) { beingDragged[i].piece.x = mouseX - beingDragged[i].dragOffset.x; bein
ActionScript 3.0 pour les jeux18 Le concept de liste d’affi chage est une nouveauté d’ActionScript 3.0. Si vous avez l’habitude du mécanisme d’ActionSc
Puzzles d’images et puzzles coulissants243Chapitre 6Fin de partie Lorsque la souris est relâchée, nous devons également vérifi er si la partie est
ActionScript 3.0 pour les jeux244Modifi er le jeuLes développeurs de jeu ont trouvé de nombreux moyens de rendre les puzzles sur ordinateur plus intére
7Direction et mouvement : astéroïdes Au sommaire de ce chapitre :• Utiliser Math pour faire pivoter et déplacer des objets• Air
ActionScript 3.0 pour les jeux246Les jeux présentés au Chapitre 5 faisaient appel à un mouvement horizontal et vertical simple. Le déplacement le long
Direction et mouvement : astéroïdes247Chapitre 7 C’est ici qu’entrent en jeu les fonctions Math.cos et Math.sin. Elles permettent de calculer dx
ActionScript 3.0 pour les jeux248ActionScript utilise à la fois des degrés et des radians. Les degrés sont utilisés par la propriété rotation des obje
Direction et mouvement : astéroïdes249Chapitre 7 Nous utiliserons du code analogue à celui du jeu Air Raid du Chapitre 5. Nous ferons appel à tro
ActionScript 3.0 pour les jeux250 // Positionner les variables de touche à false public function keyPressedUp(event:KeyboardEvent) {
Direction et mouvement : astéroïdes251Chapitre 7 Nous utiliserons souvent cette conversion. Il vaut donc la peine de la décomposer pour plus de c
ActionScript 3.0 pour les jeux252Jouez avec l’animation MovingCar.fl a. Faites tourner la voiture à différents angles et appuyez sur la touche fl échée
Utiliser Flash et ActionScript 3.019Chapitre 1Dans le cas de quelques autres, des éléments graphiques se trouveront déjà dans la scène. Cette approche
Direction et mouvement : astéroïdes253Chapitre 7 Le second point se trouve à –9,–3. En fournissant ces valeurs à Math.atan2, nous obtenons –2,82
ActionScript 3.0 pour les jeux254Cette fl èche pointe "vers" le curseur. Nous avons donc un point d’origine pour la fl èche à 275,200 et un po
Direction et mouvement : astéroïdes255Chapitre 7 Figure 7.5La fl èche pointe vers le curseur lorsque celui-ci survole l’animation. Combinés l’un
ActionScript 3.0 pour les jeux256Modifi er le canonLa première chose à faire est de modifi er le clip AAGun afi n d’avoir des canons pivotants. Nous allo
Direction et mouvement : astéroïdes257Chapitre 7 restreindrons la valeur de la rotation tout comme nous avons restreint le mouvement horizontal d
ActionScript 3.0 pour les jeux258 // Vérifi er les limites if (newRotation < -170) newRotation = -170; if (newRotat
Direction et mouvement : astéroïdes259Chapitre 7 Figure 7.7Le nouveau clip Bullet recentre le graphisme et le fait pointer vers la droite.
ActionScript 3.0 pour les jeux260 } public function moveBullet(event:Event) { // Calculer le temps écoulé
Direction et mouvement : astéroïdes261Chapitre 7 Dans startAirRaid, nous devons tenir compte du fait que la mitraillette est maintenant représent
ActionScript 3.0 pour les jeux262Space Rocks Codes sourceshttp://fl ashgameu.comA3GPU07_SpaceRocks.zipL’un des jeux vidéo les plus classiques de tous
ActionScript 3.0 pour les jeux20Le scénarioL’animation Flash est décomposée en images. Le scénario en haut de la fenêtre permet de choisir l’image af
Direction et mouvement : astéroïdes263Chapitre 7 Figure 7.8Les éléments du jeu pour Space Rocks.Vaisseau avecpropulseurBouclier et vaisseauIcônes
ActionScript 3.0 pour les jeux264Si le joueur détruit tous les astéroïdes et qu’il n’en reste plus à l’écran, le niveau est terminé. Après un court dé
Direction et mouvement : astéroïdes265Chapitre 7 Figure 7.9Dans cette image du vaisseau, le bouclier et les gaz sont tous deux activés.Figure 7.1
ActionScript 3.0 pour les jeux266Le scénario principal est confi guré de la manière habituelle : trois images, avec celle du milieu qui appelle startSp
Direction et mouvement : astéroïdes267Chapitre 7 Nous défi nissons aussi le rayon du vaisseau, qui est à peu près de forme ronde. Nous utiliserons
ActionScript 3.0 pour les jeux268Une variable gameMode peut se voir attribuer les valeurs "play" ou "delay". Lorsqu’elle vaut &quo
Direction et mouvement : astéroïdes269Chapitre 7 // Confi gurer les sprites gameObjects = new Sprite(); addChild(gameObjects); scoreO
ActionScript 3.0 pour les jeux270Objets d’affi chage du score et de l’état Le premier grand groupe de fonctions a affaire au nombre de vaisseaux que po
Direction et mouvement : astéroïdes271Chapitre 7 Voici une fonction similaire pour les icônes de bouclier : // Dessiner le nombre de boucliers re
ActionScript 3.0 pour les jeux272À la fi n de createScoreDisplay, nous appelons immédiatement updateScore pour placer un 0 dans le champ, car il s’agit
Utiliser Flash et ActionScript 3.021Chapitre 1Écrire et modifi er du code ActionScriptS’il sera généralement nécessaire de travailler un peu dans le do
Direction et mouvement : astéroïdes273Chapitre 7 Mouvement du vaisseau et entrée du joueur L’ensemble des fonctions suivantes concerne le vaissea
ActionScript 3.0 pour les jeux274Ensuite, nous pouvons ajouter le clip au sprite gameObjects : // Créer, positionner et ajouter le nouveau vaisseau
Direction et mouvement : astéroïdes275Chapitre 7 Lorsque nous appelons ici startShield, nous passons la valeur true afi n d’indiquer qu’il s’agit
ActionScript 3.0 pour les jeux276 } else if (event.keyCode == 39) { rightArrow = false; } else if (event.keyCode == 38) { upArrow
Direction et mouvement : astéroïdes277Chapitre 7 L’une des particularités qui font tout l’attrait de ce jeu tient à la manière dont le vaisseau p
ActionScript 3.0 pour les jeux278Le nombre de vaisseaux est réduit d’une unité et removeShipIcon est appelée afi n de supprimer une icône de l’écran :
Direction et mouvement : astéroïdes279Chapitre 7 shieldTimer = new Timer(3000,1); shieldTimer.addEventListener(TimerEvent.TIMER_COMPLETE ,
ActionScript 3.0 pour les jeux280 Il serait intéressant de calculer dynamiquement le rayon de chaque astéroïde en testant les clips des astéroïdes eux
Direction et mouvement : astéroïdes281Chapitre 7 Créer des vagues d’astéroïdes Au début du jeu et à chaque nouvelle vague d’astéroïdes, nous appe
ActionScript 3.0 pour les jeux282 La fonction newRockWave crée à chaque fois quatre astéroïdes au même emplacement. Vous pourriez cependant souhaite
ActionScript 3.0 pour les jeux22 Vous pouvez également sélectionner une section de code et appuyer sur Tab pour déplacer tout le bloc vers la droite d
Direction et mouvement : astéroïdes283Chapitre 7 } if ((rocks[i].dy < 0) && (rocks[i].rock.y < -20)) { ro
ActionScript 3.0 pour les jeux284 Nous utilisons ici, pour simplifi er les missiles, une astuce qui consiste à les représenter par un rond. Nous n’avo
Direction et mouvement : astéroïdes285Chapitre 7 if ((missiles[i].x < 0) | | (missiles[i].x > 550) | | (missiles[i].y < 0) | | (
ActionScript 3.0 pour les jeux286 lastTime += timePassed; moveRocks(timePassed); if (gameMode != “delay”) { moveShip(timePassed); }
Direction et mouvement : astéroïdes287Chapitre 7 // Mise à jour du score gameScore += 10; updateSco
ActionScript 3.0 pour les jeux288 delayTimer.addEventListener(TimerEvent.TIMER_COMPLETE,nextRockWave); delayTimer.start(); }}Terminer
Direction et mouvement : astéroïdes289Chapitre 7 La plupart des jeux de ce genre sur le Web ne sont pas des jeux dans l’espace. Ce concept généra
8Les “casual games” : Match Three Au sommaire de ce chapitre :• Classe réutilisable : PointBursts• Match Three
ActionScript 3.0 pour les jeux292 À leurs débuts, les jeux vidéo étaient simples et amusants. L’un des plus populaires d’entre eux était ainsi un pet
CampusPress a apporté le plus grand soin à la réalisation de ce livre afi n de vous fournir une information complète et fi able. Cependant, Campu
Utiliser Flash et ActionScript 3.023Chapitre 1Figure 1.13Un bloc de code a été réduit. Ce mécanisme est pratique lorsque vous travaillez sur un script
Les “casual games” : Match Three293Chapitre 8 Vous découvrirez cela dans pratiquement tous les casual games pour le Web. La Figure 8.1 présente mon
ActionScript 3.0 pour les jeux294Figure 8.2Cette représentation synchronique montre à gauchele début de l’explosion de points puis chacun des stades d
Les “casual games” : Match Three295Chapitre 8 Après les constantes viennent plusieurs variables qui contiennent des références aux éléments dans l’
ActionScript 3.0 pour les jeux296Ensuite, nous créons le TextField lui-même. En plus de positionner selectable à false, nous devons demander au champ
Les “casual games” : Match Three297Chapitre 8 Animer l’explosion de points Lorsque le Timer appelle rescaleBurst, nous devons défi nir les proprié
ActionScript 3.0 pour les jeux298// Terminé, se supprimerpublic function removeBurst(event:TimerEvent) { burstSprite.removeChild(tField); parent
Les “casual games” : Match Three299Chapitre 8 Figure 8.4La boîte de dialogue Propriétés de liaison vous permet de spécifi er une classe pour la poli
ActionScript 3.0 pour les jeux300En résumé, il existe quatre moyens pour une animation Flash d’accéder à un fi chier de classe : 1. Placer le fi chier d
Les “casual games” : Match Three301Chapitre 8 Match ThreeCodes sourceshttp://fl ashgameu.comA3GPU08_MatchThree.zipSi Match Three est le casual game
ActionScript 3.0 pour les jeux302 Le jeu Bejeweled, aussi appelé Diamond Mine, est réputé avoir lancé la fureur du Match Three .Vue d’ensemble des fon
ActionScript 3.0 pour les jeux24Stratégies de programmation des jeux ActionScript ActionScript 3.0 est très polyvalent. Vous pouvez adopter toutes so
Les “casual games” : Match Three303Chapitre 8 7. Attribuer des pointsSi une correspondance est trouvée, des points doivent être attribués. 8. Suppr
ActionScript 3.0 pour les jeux304Figure 8.6Le clip Piece contient sept variantes et un cadre de sélection. En ce qui concerne les constantes, nous n’e
Les “casual games” : Match Three305Chapitre 8 Les deux variables booléennes isDropping et isSwapping indiquent si des objets Piece sont en cours d’
ActionScript 3.0 pour les jeux306Confi guration de la grillePour confi gurer la grille, nous commençons par une boucle sans fi n en utilisant l’instruc
Les “casual games” : Match Three307Chapitre 8 Ajouter les pièces du jeu La fonction addPiece crée un objet Piece aléatoire à un emplacement de colo
ActionScript 3.0 pour les jeux308Figure 8.7Voici l’une des grilles de jeu aléatoires possibles.Si le joueur clique deux fois sur le même objet Piece,
Les “casual games” : Match Three309Chapitre 8 Si le joueur a sélectionné un objet Piece qui se trouve trop éloigné du premier, nous supposons que l
ActionScript 3.0 pour les jeux310Figure 8.8Lors de la permutation de deux valeurs, il est nécessaire de créer une variable temporaire pour stocker une
Les “casual games” : Match Three311Chapitre 8 Ces deux positions doivent se correspondre avec l’aide des variables spacing, offsetX et offsetY. Une
ActionScript 3.0 pour les jeux312 } else if (grid[col][row].x < grid[col][row].col*spacing+offsetX) {
Utiliser Flash et ActionScript 3.025Chapitre 1Par exemple, supposons qu’un programmeur souhaite faire pivoter un vaisseau spatial lorsque le joueur ap
Les “casual games” : Match Three313Chapitre 8 Décomposer la tâche en étapes plus petites Nous devons au lieu de cela décomposer cette tâche en prob
ActionScript 3.0 pour les jeux314 var numPoints:Number = (matches[i].length-1)*50; for(var j:int=0;j<matches[i].length;j++) {
Les “casual games” : Match Three315Chapitre 8 Si une série est trouvée, nous souhaitons également prolonger la boucle de quelques étapes. S’il y a
ActionScript 3.0 pour les jeux316En revanche, si la suivante correspond et celle d’après aussi, elle retourne une série de trois Piece :// Rechercher
Les “casual games” : Match Three317Chapitre 8 Il nous suffi t de changer les propriétés col ou row pour que la fonction s’en charge par elle-même :/
ActionScript 3.0 pour les jeux318Cette approche dite par "force brute" fonctionnerait, mais elle risquerait d’être assez lente, notamment su
Les “casual games” : Match Three319Chapitre 8 Si l’on examine le premier motif à la Figure 8.9, on remarque que, si deux emplacements contiennent u
ActionScript 3.0 pour les jeux320 // Possibilité verticale, deux plus un if (matchPattern(col, row, [[0,1]],
Les “casual games” : Match Three321Chapitre 8 Toutes les comparaisons dans matchPattern sont opérées via des appels à matchType. C’est que nous ess
ActionScript 3.0 pour les jeux322Dans le scénario principal, la fonction liée au bouton Play Again appelle cleanUp juste avant de revenir à l’image pr
ActionScript 3.0 pour les jeux26un commentaire plus important, généralement d’une ou de plusieurs phrases, qui apparaît avant une fonction ou une sect
9Jeux de mots : pendu et mots mêlés Au sommaire de ce chapitre :• Chaînes et champs texte • Pendu• Mots mêlés
ActionScript 3.0 pour les jeux324L’utilisation des lettres et des mots pour les jeux s’est considérablement popularisée depuis le milieu du XXe siècle
Jeux de mots : pendu et mots mêlés325Chapitre 9Il est également possible d’utiliser substr pour obtenir un ou plusieurs caractères de la chaîne. Le
ActionScript 3.0 pour les jeux326Cette instruction retourne 9. Vous pouvez également utiliser lastIndexOf pour trouver la dernière occurrence d’une ch
Jeux de mots : pendu et mots mêlés327Chapitre 9Vous pouvez également inclure des options après la barre oblique dans l’expression régulière. La plu
ActionScript 3.0 pour les jeux328Conversions entre chaînes et tableaux Les chaînes et les tableaux sont aussi utiles les uns que les autres pour sto
Jeux de mots : pendu et mots mêlés329Chapitre 9Tableau 9.1 : Fonctions de chaîne (Suite)Fonction Syntaxe Descriptionsearch myString.search(express
ActionScript 3.0 pour les jeux330Vous avez deux choix lors de la création d’un TextFormat. Le premier consiste à créer simplement un objet TextFormat
Jeux de mots : pendu et mots mêlés331Chapitre 9Tableau 9.2 : Propriétés de TextFormat (Suite)Propriété Valeurs d’exemple DescriptioncolorCouleur C
ActionScript 3.0 pour les jeux332L’avantage de setTextFormat tient à ce que vous pouvez ajouter un deuxième et un troisième paramètre pour spécifi er l
Utiliser Flash et ActionScript 3.027Chapitre 1 L’exception courante à cette règle concerne l’utilisation de la variable i comme variable incrémental
Jeux de mots : pendu et mots mêlés333Chapitre 9Tableau 9.3 : Propriétés de TextField (Suite)Propriété Valeurs Descriptionmultiline true/falseDoit ê
ActionScript 3.0 pour les jeux334En utilisant les polices qui se trouvent dans votre bibliothèque, vous pouvez manipuler et animer du texte de différe
Jeux de mots : pendu et mots mêlés335Chapitre 9La fonction constructeur crée tous les objets TextField et Sprite. Elle lance également l’animation
ActionScript 3.0 pour les jeux336 letters[i].y = startLoc.y*(1.0-percentDone) + endLoc.y*percentDone; var scale:Number = startScale*(1-p
Jeux de mots : pendu et mots mêlés337Chapitre 9Confi gurer le pendu En général, le jeu du pendu se joue à deux personnes. La première choisit un mo
ActionScript 3.0 pour les jeux338La classe Hangman Le jeu tout entier ne fait que cinquante lignes de code. Seules quatre variables de classe sont re
Jeux de mots : pendu et mots mêlés339Chapitre 9 // Confi guration du champ texte visible textDisplay = new TextField(); textDisplay.defaul
ActionScript 3.0 pour les jeux340Avant cela, nous allons cependant mettre à jour le texte à l’écran en attribuant la valeur shown au champ texte :
Jeux de mots : pendu et mots mêlés341Chapitre 9Stratégie de développement Notre jeu prendra une liste de mots et créera une grille de 15 × 15 lettr
ActionScript 3.0 pour les jeux342Une fois que les mots ont été placés, toutes les positions de lettres non utilisées sont remplies avec des lettres al
ActionScript 3.0 pour les jeux28Par exemple, si vous souhaitez créer une boucle qui place au hasard dix cercles de couleur différente à l’écran, vous
Jeux de mots : pendu et mots mêlés343Chapitre 9Plusieurs constantes faciliteront l’ajustement de la taille du puzzle, l’espacement entre les lettre
ActionScript 3.0 pour les jeux344La fonction startWordSearch Pour lancer le jeu, nous allons créer un tableau avec les mots utilisés dans le puzzle. D
Jeux de mots : pendu et mots mêlés345Chapitre 9 grid[x] = new Array(); for(var y:int=0;y<puzzleSize;y++) { // Créer un
ActionScript 3.0 pour les jeux346 newWord.defaultTextFormat = letterFormat; newWord.x = 400; newWord.y = i*spacing+offset.y;
Jeux de mots : pendu et mots mêlés347Chapitre 9Il est maintenant temps d’ajouter des mots dans la grille. Cette opération s’effectue en choisissant
ActionScript 3.0 pour les jeux348 } // Insérer le mot dans la grille insertLoop:for (j=0;j<word.length;j++) {
Jeux de mots : pendu et mots mêlés349Chapitre 9Lorsque la fonction placeLetters a terminé, elle retourne son tableau afi n que les Sprite puissent ê
ActionScript 3.0 pour les jeux350 outlineSprite.graphics.clear(); if (isValidRange(startPoint,endPoint)) { drawOutline(outlin
Jeux de mots : pendu et mots mêlés351Chapitre 9 for(var y:int=0;y<puzzleSize;y++) { if (grid[x][y] == letterSprite) {
ActionScript 3.0 pour les jeux352Gérer les mots trouvés Lorsque le joueur termine une sélection, la première chose à faire est de créer un mot à parti
Utiliser Flash et ActionScript 3.029Chapitre 1Une variable de type int peut être un entier, positif ou négatif. Les variables de type uint sont destin
Jeux de mots : pendu et mots mêlés353Chapitre 9Pour inverser un mot, l’un des moyens rapides consiste à utiliser split pour convertir la chaîne en
ActionScript 3.0 pour les jeux354 // Trouver le champ texte et le passer en gris for(var i:int=0;i<wordsSprite.numChildren;i++) { if
Jeux de mots : pendu et mots mêlés355Chapitre 9public function endGame() { gotoAndStop(“gameover”);}Le bouton Play Again appelle cleanUp et cond
10Questions et réponses : quiz et jeux de culture générale Au sommaire de ce chapitre :• Stocker et récupérer des donnée
ActionScript 3.0 pour les jeux358 Différents jeux peuvent être utilisés à différentes fi ns, mais il existe peu de jeux qui puissent être utilisés pou
Questions et réponses : quiz et jeux de culture générale359Chapitre 10 Observez l’exemple suivant :<trivia> <item category=”Entertainmen
ActionScript 3.0 pour les jeux360 </answers> <hint>Was fi red before the Beatles hit it big.</hint>
Questions et réponses : quiz et jeux de culture générale361Chapitre 10 essayez simplement d’obtenir la longueur d’un nœud avec length(), vous obtien
ActionScript 3.0 pour les jeux362La fonction xmlLoaded prend les données chargées de event.target.data et les convertit en XML pour les stocker dans x
ActionScript 3.0 pour les jeux30Lorsque nous utilisons des variables dans des classes, elles deviennent des propriétés de cette classe. Dans ce cas, i
Questions et réponses : quiz et jeux de culture générale363Chapitre 10 Quiz de culture générale Codes sourceshttp://fl ashgameu.comA3GPU10_TriviaGame
ActionScript 3.0 pour les jeux364Figure 10.1Au début du jeu, le joueur voit apparaître un bouton sur lequel il doit cliquer avant d’obtenir la premièr
Questions et réponses : quiz et jeux de culture générale365Chapitre 10 Figure 10.2Le clip Circle contient un champ texte dynamique et un cercle d’ar
ActionScript 3.0 pour les jeux366 private var answerFormat:TextFormat; private var scoreFormat:TextFormat; // Champs text
Questions et réponses : quiz et jeux de culture générale367Chapitre 10 // Défi nition des formats texte questionFormat = new TextFormat("
ActionScript 3.0 pour les jeux368Charger les données du quiz Les questions sont chargées en utilisant des fonctions analogues à l’exemple du début d
Questions et réponses : quiz et jeux de culture générale369Chapitre 10 Pour fi nir, nous défi nissons le texte du champ et ajoutons ce dernier au spri
ActionScript 3.0 pour les jeux370 gameButton.label.text = buttonLabel; gameButton.x = 220; gameButton.y = 300; gameSprite.addChild(gameBut
Questions et réponses : quiz et jeux de culture générale371Chapitre 10 Si les questions ne sont pas terminées, nous appelons askQuestion pour affi ch
ActionScript 3.0 pour les jeux372Avant de placer les réponses, nous devons les mélanger. La première parmi les données d’origine correspond à la bonne
Utiliser Flash et ActionScript 3.031Chapitre 1Boucles Les boucles s’effectuent avec l’instruction for ou l’instruction while.L’instruction for conti
Questions et réponses : quiz et jeux de culture générale373Chapitre 10 La fonction shuffl eAnswers récupère en entrée une XMLList correspondant au ty
ActionScript 3.0 pour les jeux374Toutes les réponses sont ensuite examinées. La fonction fi nishQuestion parcourt en boucle chaque sprite. La réponse c
Questions et réponses : quiz et jeux de culture générale375Chapitre 10 Le bouton créé par clickAnswer est un lien vers la question suivante. Lorsque
ActionScript 3.0 pour les jeux376Pour fi nir, nous allons relooker le système de score. Celui-ci doit tenir compte du temps pris pour répondre à la que
Questions et réponses : quiz et jeux de culture générale377Chapitre 10 Nous utiliserons un Timer pour compter les secondes. Ajoutons donc une instr
ActionScript 3.0 pour les jeux378 L’utilisation de vingt-cinq points pour l’horloge est complètement arbitraire. Vous pourriez créer n’importe quelle
Questions et réponses : quiz et jeux de culture générale379Chapitre 10 Dans la fonction askQuestion, nous créerons le nouveau bouton Hint et le posi
ActionScript 3.0 pour les jeux380Nous souhaitons aussi utiliser l’instruction removeChild à l’intérieur de la fonction fi nishQuestion, en vérifi ant d’
Questions et réponses : quiz et jeux de culture générale381Chapitre 10 Ajouter des informations supplémentaires Il est assez facile d’ajouter des in
ActionScript 3.0 pour les jeux382Ajouter un système de score complexe Le problème avec la fonctionnalité des indices ainsi qu’avec l’horloge tient à c
ActionScript 3.0 pour les jeux32 Vous constaterez parfois que les fonctions sont appelées des méthodes. Dans la documenta-tion, le terme de méthode es
Questions et réponses : quiz et jeux de culture générale383Chapitre 10 Figure 10.10Le nombre de questions posé et le nombre de bonnes réponses ont é
ActionScript 3.0 pour les jeux384Inutile ici d’appeler showScore car la fonction sera appelée immédiatement après dans la fonction fi nishQuestion. C’e
Questions et réponses : quiz et jeux de culture générale385Chapitre 10 // Boucler jusqu’à ce que nous ayons assez de questions while(chosenX
ActionScript 3.0 pour les jeux386Améliorer la disposition des réponsesAvant de pouvoir charger des images, nous devons améliorer la disposition des ré
Questions et réponses : quiz et jeux de culture générale387Chapitre 10 var answer:String = answers[i]; var answerSprite:Sprite = new Sprite()
ActionScript 3.0 pour les jeux388Créer des objets Loader Dans shuffl eAnswers , nous créons un tableau de réponses trié aléatoirement à partir des rép
Questions et réponses : quiz et jeux de culture générale389Chapitre 10 Figure 10.12Des animations externes ont remplacé le texte dans chaque réponse
ActionScript 3.0 pour les jeux390Étendre la zone réactive Un dernier point avant que nous n’en ayons fi ni avec les réponses. Si la réponse est une ré
Questions et réponses : quiz et jeux de culture générale391Chapitre 10 Images pour les questionsEn plus d’utiliser des images dans les réponses, vou
ActionScript 3.0 pour les jeux392Figure 10.14La question est une animation Flash externe, mais les quatre réponses sont du texte. Modifi er le jeu La
Table des matièresIntroduction . . . . . . . . . . . . . . . . . . . . . 1Flash et le développement de jeux. . . . . . . 1À qui ce livre est-il
Utiliser Flash et ActionScript 3.033Chapitre 1 Le type de question le plus courant que j’obtiens de la part d’autres programmeurs concerne des cas où
11Jeux d’action : jeux de plate-forme Au sommaire de ce chapitre :• Concevoir le jeu• Créer la classe• Modifi er le jeu
ActionScript 3.0 pour les jeux394Codes sourceshttp://fl ashgameu.comA3GPU11_PlatformGame.zip Les jeux à défi lement latéral ou jeux de plate-forme sont
Jeux d’action : jeux de plate-forme395Chapitre 11Figure 11.1Le niveau 1 de notre jeu de plate-forme inclut trois ennemis, plusieurs trésors, une c
ActionScript 3.0 pour les jeux396Figure 11.2Le niveau peut être confi guré plus facilement en plaçant les pièces des murs et du sol le long de la grill
Jeux d’action : jeux de plate-forme397Chapitre 11Figure 11.4Le héros possède des images pour la position debout, la marche, le saut et la mort. Vo
ActionScript 3.0 pour les jeux398Figure 11.5L’ennemi n’a que deux séquences pour la position debout et la marche. Autre point concernant les ennemis :
Jeux d’action : jeux de plate-forme399Chapitre 11Figure 11.6Le clip Door contient une image 1 statique et une courte séquence animée de son ouvert
ActionScript 3.0 pour les jeux400Graphismes d’arrière-plan Les niveaux du jeu incluent également un clip avec des graphismes d’arrière-plan. Dans le
Jeux d’action : jeux de plate-forme401Chapitre 11Le scénario principal Le scénario principal inclut une image start avec des instructions. Après
ActionScript 3.0 pour les jeux402 Pour déterminer le type d’objet d’un clip, nous utiliserons l’opérateur is. Cet opérateur compare le type d’objet d
ActionScript 3.0 pour les jeux34Utiliser le débogueur Flash CS3 vous permet d’utiliser un débogueur d’exécution pour tester votre code pendant que vo
Jeux d’action : jeux de plate-forme403Chapitre 11 - enemyDie. Le personnage de l’ennemi est supprimé. - heroDie. Le héros perd une vie et la part
ActionScript 3.0 pour les jeux404 public class PlatformGame extends MovieClip { // Constantes de mouvement static const gravity:Numb
Jeux d’action : jeux de plate-forme405Chapitre 11Commencer la partie et le niveau Lorsque le jeu commence, nous avons besoin de certaines variable
ActionScript 3.0 pour les jeux406 // Créer les personnages createHero(); addEnemies(); // Examiner le niveau et consigner tous les obj
Jeux d’action : jeux de plate-forme407Chapitre 11Viennent ensuite deux propriétés qui décrivent la vélocité du héros : hero.dx = 0.0; hero.d
ActionScript 3.0 pour les jeux408Lorsque le héros entrera en collision avec un objet, nous le réinitialiserons à sa position de départ dans le niveau.
Jeux d’action : jeux de plate-forme409Chapitre 11 enemies.push(enemy); i++; }}La fonction examineLevel Une fois que le héros et
ActionScript 3.0 pour les jeux410Entrée clavierL’acceptation de l’entrée clavier fonctionnera comme dans les précédents jeux, en utilisant les touches
Jeux d’action : jeux de plate-forme411Chapitre 11La fonction checkForCollisions verra si des ennemis entrent en collision avec le héros ou si le h
ActionScript 3.0 pour les jeux412 Il pourrait être souhaitable que différents ennemis possèdent différents comportements. Par exemple, vous pourriez v
Utiliser Flash et ActionScript 3.035Chapitre 1Si vous utilisez la commande Déboguer > Déboguer l’animation avec le point d’arrêt à la ligne 8, tout
Jeux d’action : jeux de plate-forme413Chapitre 11 Vous remarquerez que verticalChange est limitée à 15.0. Il s’agit de ce que l’on appelle la
ActionScript 3.0 pour les jeux414Nous donnerons aussi à newAnimState la valeur "jump". La Figure 11.10 montre l’état de saut du héros. Figur
Jeux d’action : jeux de plate-forme415Chapitre 11Nous allons maintenant examiner chaque objet fi xe et voir si l’un d’entre eux se trouve sous les
ActionScript 3.0 pour les jeux416 Pendant qu’un personnage repose sur le dessus d’un objet Floor ou Wall, ce test vertical est réalisé à chaque étape
Jeux d’action : jeux de plate-forme417Chapitre 11Le reste de la fonction s’occupe de l’apparence du personnage. Nous vérifi ons la valeur char.inAi
ActionScript 3.0 pour les jeux418 // Directions modifi ées if (newDirection != char.direction) { char.direction = newDirection; cha
Jeux d’action : jeux de plate-forme419Chapitre 11Si la collision du hero et de l’enemy intervient pendant que le hero se trouve en l’air et progre
ActionScript 3.0 pour les jeux420Figure 11.12Les mots "Got Em!" apparaissent à l’endroit où se trouvait l’ennemi, changent de taille et disp
Jeux d’action : jeux de plate-forme421Chapitre 11 if (playerLives == 0) { gameMode = „gameover“; dialog.message.text = „Game Over
ActionScript 3.0 pour les jeux422Si le type de l’objet est Treasure, le joueur récupère 100 points. Nous utiliserons la classe PointBurst à nouveau po
ActionScript 3.0 pour les jeux36En haut à gauche, le panneau de débogage indique où vous vous trouvez dans le programme. Dans cet exemple, vous vous t
Jeux d’action : jeux de plate-forme423Chapitre 11 otherObjects[objectNum].gotoAndPlay("open"); levelComplete();
ActionScript 3.0 pour les jeux424 dialog.x = 175; dialog.y = 100; addChild(dialog); dialog.message.text = „Level Complete!“;}Si le deuxièm
Jeux d’action : jeux de plate-forme425Chapitre 11Si gameMode vaut "gameover" (ce qui se produit lorsque le joueur meurt pour la dernière
ActionScript 3.0 pour les jeux426L’autre fonctionnalité qui pourrait rendre le jeu plus attrayant consisterait à avoir plus de moyens de mourir. Pour
12Jeux de mondes : jeux de conduite et d’explorationAu sommaire de ce chapitre • Créer un jeu de conduite en vue aérienne• Cr
ActionScript 3.0 pour les jeux428Au chapitre précédent, vous avez vu comment il était possible de créer un petit monde à l’intérieur d’un jeu ActionSc
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration429Chapitre 12Figure 12.1L’univers entier du jeu fait environ 2 400 pixels de large et
ActionScript 3.0 pour les jeux430Tous ces éléments graphiques ne sont là que pour la décoration. Ils n’importent pas pour le code du jeu. Voilà une ex
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration431Chapitre 12Il y aura trois types d’ordures, un pour chaque benne : les canettes, le
ActionScript 3.0 pour les jeux432Nous ne sommes pas en train de créer un jeu de simulation ; nous pouvons donc ignorer l’accélération, le freinage et
Utiliser Flash et ActionScript 3.037Chapitre 1Formats Les paramètres Formats (voir Figure 1.17) permettent de sélectionner les fi chiers à exporter. L
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration433Chapitre 12OrduresLes ordures correspondent en fait à un unique clip TrashObject de
ActionScript 3.0 pour les jeux434Figure 12.7Les indicateurs de score se trouvent en bas de l’écran, avec un cadre semi-transparent en dessous.Les troi
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration435Chapitre 12 import fl ash.text.*; import fl ash.geom.*; import fl ash.utils.g
ActionScript 3.0 pour les jeux436Le tableau blocks contiendra tous les objets Block qui empêchent la voiture de quitter la route. trashObjects est une
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration437Chapitre 12Les dernières variables sont des références aux quatre sons stockés dans
ActionScript 3.0 pour les jeux438 Nous aurions pu aussi créer un clip vide dans le clip GameMap afi n de contenir toutes les ordures. Nous aurions pu a
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration439Chapitre 12clairement lors du développement de l’animation mais n’aurons pas à nous
ActionScript 3.0 pour les jeux440Si l’emplacement n’entre en intersection avec aucun Block, nous poursuivons et créons le nouvel objet TrashObject. En
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration441Chapitre 12 newObject.gotoAndStop(Math.fl oor(Math.random()*3)+1);
ActionScript 3.0 pour les jeux442 arrowRight = false; } else if (event.keyCode == 38) { arrowUp = false; } else if (event.keyCode
ActionScript 3.0 pour les jeux38 Cochez également l’option Protéger contre l’importation. Il deviendra ainsi plus diffi cile pour vos utilisateurs de t
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration443Chapitre 12Rappelez-vous que le temps est en fait le véritable score de ce jeu. Le
ActionScript 3.0 pour les jeux444Il est aussi assez simple de faire avancer la voiture ou, du moins, cela le serait s’il ne fallait détecter et gérer
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration445Chapitre 12Il est maintenant temps de parcourir en boucle les blocs et de voir si l
ActionScript 3.0 pour les jeux446 } if ((newCarRect.left < mapRect.left) && (carRect.left >= mapRect.left)) { newX += mapRe
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration447Chapitre 12 onboard[trashObjects[i].currentFrame-1]++;
ActionScript 3.0 pour les jeux448 // Déposer score += onboard[i]; onboard[i] = 0; showScor
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration449Chapitre 12Les indicateurs de score Dans ce jeu, l’affi chage du score est complexe
ActionScript 3.0 pour les jeux450Comme le gamesprite ne se trouve que dans l’image play, il n’est pas affi ché dans l’image gameover :// Fin de la part
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration451Chapitre 12Modifi er le jeuCe jeu peut être modifi é pour correspondre à presque n’im
ActionScript 3.0 pour les jeux452 La distinction entre un jeu d’arcade et un jeu de simulation est plus importante ici que dans aucun des jeux que n
Utiliser Flash et ActionScript 3.039Chapitre 1HTML Les paramètres HTML n’importent que si vous souhaitez utiliser la page HTML créée avec la commande
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration453Chapitre 12Figure 12.9La piste est entourée d’une bordure épaisse.La piste inclut é
ActionScript 3.0 pour les jeux454Effets sonores Ce jeu utilisera plusieurs effets sonores. Trois différents sons de conduite seront lus en boucle pen
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration455Chapitre 12 private var gameStartTime:int; private var speed:Number; priva
ActionScript 3.0 pour les jeux456Vous remarquerez que gameStartTime se voit ajouter trois secondes. En effet, le jeu démarre avec un compte à rebours
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration457Chapitre 12Trois facteurs affectent la valeur de rotation : la vitesse (speed), la
ActionScript 3.0 pour les jeux458Nous n’avons à vérifi er le mouvement de la voiture que s’il y a une valeur speed. Si la voiture est complètement à l’
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration459Chapitre 12Nous supposerons que c’est le cas à ce stade et ajusterons la valeur de
ActionScript 3.0 pour les jeux460Nous pouvons maintenant défi nir l’emplacement de la voiture : // Défi nir la nouvelle position de la voiture ga
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration461Chapitre 12J’ai choisi une distance de 150 pour considérer qu’un point de parcours
ActionScript 3.0 pour les jeux462Compte à rebours et chronomètre Si le chronomètre de ce jeu est très proche de celui du jeu de conduite en vue aéri
ActionScript 3.0 pour les jeux40L’une des options souvent utilisées consiste à amener l’animation Flash à se redimensionner pour remplir la fenêtre en
Chapitre 12 Jeux de mondes : jeux de conduite et d’exploration463Chapitre 12Lorsque gameTime atteint 0, nous changeons gameMode et supprimons le nom
ActionScript 3.0 pour les jeux464Modifi er le jeuLe circuit de ce jeu est assez simple : il s’agit d’une piste de vitesse tout ce qu’il y a de plus cla
AAC_RunActiveContent.js 39Actions, panneau 11ActionScriptboucles 220chaînes 324classe de base 96document 14fonctions Math 249historique 8in
ActionScript 3.0 pour les jeux466Cartes 428arrière-plan 109centerMap 443comparer 108mélanger 85, 101Memory 92retourner 94Casse-brique 195Casua
Index467currentCount 68currentFrame 67currentLoc 221currentTarget 105Curseurinvisible 80personnalisé 80survol 49curveTo 52DdataXML 365Débo
ActionScript 3.0 pour les jeux468Fonction (Suite)checkForHits 190clickDialogButton 424clickDone 161clockTime 121concat 147Cos 246createHero 406
Index469JJeuAir Raid 176Air Raid II 255cartes 428casse-brique 195casual games 292conduite en vue aérienne 428course 451déduction 151de plat
ActionScript 3.0 pour les jeux470Objet (Suite)Point 204Rectangle 204SimpleButton 51TextField 13, 54TextFormat 55Timer 68URLLoader 78URLRequest
Index471objets 421points 421système complexe 382voiture 433search 326Sécuritéparamètres 41vol des jeux 88selectable 55, 143setChildIndex 6
ActionScript 3.0 pour les jeux472Vélocité 70, 199, 267Vies 419visible 264Vitesse 266, 457cadence d'images 250limiter 413missiles 284void
Utiliser Flash et ActionScript 3.041Chapitre 1Vérifi er les paramètres de sécurité Dans la section Flash des Paramètres de publication fi gure un param
Mémory et jeux de déductionJeux de tirPuzzles et casual gamesMots mêlésQuiz et jeux de culture généraleJeux de plate-forme Jeux de conduite et d’explo
ActionScript 3.0 pour les jeux42La fonction constructeur possède-t-elle le bon nom ?Si vous avez une classe nommée maClasse, la fonction constructeur
ActionScript 3.0 pour les jeuxIVCHAPITRE 7. Direction et mouvement : astéroïdes . . . . . . . . . . . . . . . . . . . . . . . 245Utiliser Math pour
Utiliser Flash et ActionScript 3.043Chapitre 1Il y a pire encore, si vous utilisez des variables non typées, autrement dit des variables Object. Ces d
ActionScript 3.0 pour les jeux44La solution à tous ces problèmes consiste à proposer un écran de téléchargement dont le rôle se limite à attendre que
2Composants de jeu ActionScriptAu sommaire de ce chapitre :• Créer des objets visuels• Récupérer les entrées utilisateur • Créer une animat
ActionScript 3.0 pour les jeux46Avant de créer des jeux complets, nous allons procéder en composant de petits morceaux. Les programmes courts de ce ch
Composants de jeu ActionScript47Chapitre 2Ensuite, vous pouvez manipuler les propriétés du clip en faisant référence à son nom, comme ceci :myClipInst
ActionScript 3.0 pour les jeux48Si tout cela paraît bien du travail pour un simple clip, notez qu’ActionScript permet facilement d’ajouter plusieurs c
Composants de jeu ActionScript49Chapitre 2Créer des boutons Il est également possible de créer des boutons en n’utilisant que du code ActionScript.
ActionScript 3.0 pour les jeux50La principale différence entre les clips et les symboles de bouton tient à ce que les boutons possèdent quatre images
Composants de jeu ActionScript51Chapitre 2Vous pouvez ajouter un écouteur au bouton de la même manière que vous l’avez fait avec un clip :myButton.a
ActionScript 3.0 pour les jeux52Dessiner des formes Tous les éléments à l’écran ne doivent pas nécessairement provenir de la bibliothèque. Vous pouve
L’auteur Enfant, Gary Rosenzweig est autorisé à jouer aux jeux vidéo autant qu’il le souhaite, pourvu qu’il ait d’abord terminé ses devoirs. Il ado
Composants de jeu ActionScript53Chapitre 2Figure 2.6Une ligne, une courbe et une autre ligne composent ce dessin. Vous pouvez également dessiner un re
ActionScript 3.0 pour les jeux54Figure 2.7Deux lignes, une courbe, un cercle, une ellipse, un cercle rempli, un rectangle et un rectangle arrondi. Tra
Composants de jeu ActionScript55Chapitre 2La Figure 2.8 présente le champ texte avec une bordure afi n de pouvoir en apercevoir la taille. Figure 2.8Un
ActionScript 3.0 pour les jeux56Maintenant que nous avons un objet TextFormat, il existe deux moyens de l’utiliser. Le premier consiste à utiliser set
Composants de jeu ActionScript57Chapitre 2Le moyen le plus simple de créer du texte lié dans un TextField consiste à utiliser la propriété htmlText
ActionScript 3.0 pour les jeux58Figure 2.10Les propriétés defaultTextFormat et styleSheet ont toutes deux été utilisées pour formater le texte et le l
Composants de jeu ActionScript59Chapitre 2Le code qui suit crée un nouveau Sprite et dessine un rectangle de 200 par 200 à l’intérieur. Le rectangle s
ActionScript 3.0 pour les jeux60Figure 2.11Le sprite du cercle est à l’intérieur du sprite du rectangle de gauche. L’animation CreatingSpriteGroups.fl
Composants de jeu ActionScript61Chapitre 2Défi nir la profondeur du Sprite Le moment est sans doute bien choisi pour signaler maintenant la commande
ActionScript 3.0 pour les jeux62Pour détecter le moment où le curseur survole un Sprite, vous pouvez procéder de la même manière que lorsque vous déte
Composants de jeu ActionScript63Chapitre 2Figure 2.12Le curseur survole le sprite, qui devient donc opaque.Parmi les propriétés de l’événement fi gure
ActionScript 3.0 pour les jeux64La fonction suivante capture le relâchement d’une touche. S’il s’agit de la barre d’espace, keyPressed est positionnée
Composants de jeu ActionScript65Chapitre 2myInput.width = 200;myInput.border = true;addChild(myInput);stage.focus = myInput;La dernière ligne de code
ActionScript 3.0 pour les jeux66Créer une animation Nous allons maintenant examiner du code ActionScript qui permet de déplacer des Sprite à l’écran
Composants de jeu ActionScript67Chapitre 2 Que vous choisissiez une cadence d’images de 60 ips n’implique pas nécessairement que l’animation tournera
ActionScript 3.0 pour les jeux68Utiliser des Timer Les Timer (minuteurs) peuvent se comparer à de petites horloges à messages. Vous en créez une et
Composants de jeu ActionScript69Chapitre 2 Essayez de fi xer la cadence d’images à 1 ips. Avec le Timer qui déplace le personnage toutes les 80 millise
ActionScript 3.0 pour les jeux70Animation physique Avec les animations ActionScript, vous pouvez faire bien plus qu’amener un objet à se déplacer le
Composants de jeu ActionScript71Chapitre 2La fonction animateBall commence par calculer le temps écoulé depuis la dernière étape de l’animation :// An
ActionScript 3.0 pour les jeux72Programmer l’interaction avec l’utilisateur Au-delà de l’entrée utilisateur et du mouvement des sprites, il est encore
Introduction Voici un moment bien choisi pour devenir un développeur de jeux Flash. Aujourd’hui, il n’existe pas de meilleur outil de développemen
Composants de jeu ActionScript73Chapitre 2Lorsque l’utilisateur enfonce une touche fl échée, nous positionnons sa variable booléenne à true :// Positio
ActionScript 3.0 pour les jeux74 } if (downArrow) { mascot.y += speed; }}L’animation MovingSprites.fl a présente ce code en action. Vou
Composants de jeu ActionScript75Chapitre 2Lorsque l’utilisateur clique sur le sprite, le décalage est récupéré à partir des propriétés localX et lo
ActionScript 3.0 pour les jeux76À moins que le sprite ne possède la forme d’un rectangle, cela ne suffi t pas pour la plupart des usages pratiques dans
Composants de jeu ActionScript77Chapitre 2Accéder à des données externesParfois, il peut être nécessaire d’accéder à des informations situées hors du
ActionScript 3.0 pour les jeux78Le format fl ashvars est une série de paires nom de propriété = valeur séparées par le symbole &. Dans cet exemple
Composants de jeu ActionScript79Chapitre 2Le xmlLoaded , dans le cas présent, correspond simplement à des instructions trace afi n de montrer que des
ActionScript 3.0 pour les jeux80Éléments de jeu diversVoici quelques scripts simples qui réalisent différentes tâches. La plupart d’entre eux peuvent
Composants de jeu ActionScript81Chapitre 2Ensuite, la commande moveCursor amène simplement l’objet arrow, qui correspond ici au nom d’instance du cu
ActionScript 3.0 pour les jeux82La meilleure méthode pour la plupart des effets de son de jeu consiste à incorporer les sons dans la bibliothèque de l
ActionScript 3.0 pour les jeux2Je n’ai retrouvé un tel sentiment d’excitation concernant le développement des jeux que deux fois depuis la sortie du p
Composants de jeu ActionScript83Chapitre 2Ensuite, pour lire le son, vous devez utiliser la commande play :sound2.play();L’animation d’exemple Playing
ActionScript 3.0 pour les jeux84Cette fonction récupère l’état de l’animation en utilisant this.root.loaderInfo. Elle a des propriétés bytesLoaded et
Composants de jeu ActionScript85Chapitre 2Le code suivant récupère ainsi un nombre compris entre 0,0 et 1,0 sans inclure 1,0 : var random1:Number = Ma
ActionScript 3.0 pour les jeux86Le résultat dans la fenêtre Sortie ressemble à ceci :Unshuffl ed: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
Composants de jeu ActionScript87Chapitre 2Voici un exemple de programme qui place un champ texte à l’écran, capture la mesure temporelle au début puis
ActionScript 3.0 pour les jeux88Si votre animation est conçue pour faire 640 pixels de large et que vous détectiez qu’elle se lit sur 800 pixels de la
Composants de jeu ActionScript89Chapitre 2Au lieu de défi nir simplement un champ texte, vous pouvez arrêter la lecture du jeu ou conduire le joueur à
3Structure de jeu élémentaire : le Memory Au sommaire de ce chapitre : • Placer des éléments interactifs • Jeu• Encapsuler un jeu•
ActionScript 3.0 pour les jeux92Codes sourceshttp://fl ashgameu.comA3GPU03_MatchingGame.zipPour créer votre premier jeu, j’ai choisi l’un des jeux les
Commentaires sur ces manuels