Jeu de tir 2 :: Attaquer sous 360 degrés
Le script qui suit est presque à 100% identique au script de jeu : Jeu de tir 1. Avec une différence, cependant, qui fera de cette version une utilisation complètement différente. En effet puisque les missiles, de forme ronde plutôt que rectangulaire, peuvent être lancer dans toutes les directions suivant un comportement rotatif, suivant le mouvement de la souris. Une fonction seulement aura été ajouter pour faire de ce jeu, quelque chose de différent. Le nom de la fonction se nomme pivot. Le socle est donc fixe en ' x ' comme en ' y '. Par contre, dans un mouvement souris circulaire, autour du socle, vous le verrez tourner sur lui même, dans le sens inverse de la souris. Si donc le mouvement circulaire de la souris est dans le sens des aiguilles d'une montre, le socle tournera dans le sens contraire.
La rotation est sans fin. Ce en quoi nous pourrions, et avec raison, identifier ce jeu comme étant un jeu de combat, plutôt qu'un jeu de tir. Voyez la différence et prenez conscience que la frontière, séparant le jeu de tir du jeu de combat, est mince. Si je l'identifie encore comme un jeu de tir, celà est dû au fait que les cibles sont des cibles sans défense. Or, si nous programmons une cible à caractère défensive, nous sommes dès lors en jeu de combat, non plus en un jeu de tir. Mais comme dans la première version: jeu de tir 1, les cibles n'ont pas de capacité programmatique de défense. Les cibles ne sont que des victimes, une espèce en voix d'extinction. Je désirais que vous preniez conscience de celà . Retenez simplement que la version : jeu de tir 2, n'est pas très loin du jeu de combat. Dû à son comportement rotatif. Programmer les cibles comme étant des ennemis, avec des comportements défensifs et des comportements d'attaques, et vous voilà donc dans un jeu de combat.
Ces prises de consciences concernant les jeux vous viendrons dans la pratique et les exercices. Croyez moi que vous trouverez, tout au long de votre apprentissage, des inspirations. Vous pourrez dès lors créé vos propres jeux en Flash. Par contre, il nous faut savoir nous arrêter quelques fois pour mieux considérer ce qu'une interface de jeu a besoin comme programme. Une entré en matière n'est pas rare en programmation de jeu. Une interface conviviale et accessible sera donc les principaux points à considérer. Un aide à la navigation, une zone d'instruction, un programme d'enrégistrement des données utilisateurs et une zone de récupération des données seront autant d'interfaces à programmer dont le but sera de rendre agréable et complet l'utilisation du jeu en cours de lecture.
Encore un fois je n'ai pas chercher à modifier le script. Je n'ai repris que la présentation visuelle. Je vous l'offre donc tel que j'étais en tant que débutant en programmation Flash. Ce en quoi vous verrez même quelques défauts. Mais comme ces défaut n'empêche pas l'exécution du jeu, je les laissent comme étant des défauts sympatiques. Pour ne pas dire inspiratif. Comme pour la première version : jeu de tir 1, Je le présente tel quel. De plus je l'ai tout simplement adapter pour Flash MX version 6.
Voici le script : un fichier zipper.
Ce fichier contiens les scripts de keyframes .as, le fichier .fla + .swf + une capture du scénario en .jpg.
Débutants et débutantes en programmation Flash
Le script qui suit est presque à 100% identique au script de jeu : Jeu de tir 1. Avec une différence, cependant, qui fera de cette version une utilisation complètement différente. En effet puisque les missiles, de forme ronde plutôt que rectangulaire, peuvent être lancer dans toutes les directions suivant un comportement rotatif, suivant le mouvement de la souris. Une fonction seulement aura été ajouter pour faire de ce jeu, quelque chose de différent. Le nom de la fonction se nomme pivot. Le socle est donc fixe en ' x ' comme en ' y '. Par contre, dans un mouvement souris circulaire, autour du socle, vous le verrez tourner sur lui même, dans le sens inverse de la souris. Si donc le mouvement circulaire de la souris est dans le sens des aiguilles d'une montre, le socle tournera dans le sens contraire.
La rotation est sans fin. Ce en quoi nous pourrions, et avec raison, identifier ce jeu comme étant un jeu de combat, plutôt qu'un jeu de tir. Voyez la différence et prenez conscience que la frontière, séparant le jeu de tir du jeu de combat, est mince. Si je l'identifie encore comme un jeu de tir, celà est dû au fait que les cibles sont des cibles sans défense. Or, si nous programmons une cible à caractère défensive, nous sommes dès lors en jeu de combat, non plus en un jeu de tir. Mais comme dans la première version: jeu de tir 1, les cibles n'ont pas de capacité programmatique de défense. Les cibles ne sont que des victimes, une espèce en voix d'extinction. Je désirais que vous preniez conscience de celà . Retenez simplement que la version : jeu de tir 2, n'est pas très loin du jeu de combat. Dû à son comportement rotatif. Programmer les cibles comme étant des ennemis, avec des comportements défensifs et des comportements d'attaques, et vous voilà donc dans un jeu de combat.
Ces prises de consciences concernant les jeux vous viendrons dans la pratique et les exercices. Croyez moi que vous trouverez, tout au long de votre apprentissage, des inspirations. Vous pourrez dès lors créé vos propres jeux en Flash. Par contre, il nous faut savoir nous arrêter quelques fois pour mieux considérer ce qu'une interface de jeu a besoin comme programme. Une entré en matière n'est pas rare en programmation de jeu. Une interface conviviale et accessible sera donc les principaux points à considérer. Un aide à la navigation, une zone d'instruction, un programme d'enrégistrement des données utilisateurs et une zone de récupération des données seront autant d'interfaces à programmer dont le but sera de rendre agréable et complet l'utilisation du jeu en cours de lecture.
Encore un fois je n'ai pas chercher à modifier le script. Je n'ai repris que la présentation visuelle. Je vous l'offre donc tel que j'étais en tant que débutant en programmation Flash. Ce en quoi vous verrez même quelques défauts. Mais comme ces défaut n'empêche pas l'exécution du jeu, je les laissent comme étant des défauts sympatiques. Pour ne pas dire inspiratif. Comme pour la première version : jeu de tir 1, Je le présente tel quel. De plus je l'ai tout simplement adapter pour Flash MX version 6.
Voici le script : un fichier zipper.
Ce fichier contiens les scripts de keyframes .as, le fichier .fla + .swf + une capture du scénario en .jpg.
<< Voir la version 1 pour plus d'information >>
Je n'aurai donc pas à refaire les informations concernant le programme, sauf peut être sur un point important. La nouvelle fonction traite d'un sujet qui fait de ce jeu toute la différence. Étant d'origine écrit à la manière de Flash 5, nous nous retrouvons encore un fois avec un script un peu plus primitif que ne l'aurais été si l'origine du script avait été écrit à la pérode MX. Si vous analyser le script, vous voyez que les deux variables ' dx ' et ' dy ' ont reçu une valeur. La valeur affecté est l'objet souris vis à vis l'objet visuel. Voici un exemple : dx = _xmouse - baseCanon._x; << - >> dy = _ymouse - baseCanon._y;. Par le fait même nous parlons de la distance entre l'objet du socle et la souris, en ' x ' et en ' y '. Faites en vous même l'expérience en déplacant la souris à différente distance du socle des missiles et vous aurez un comportement différent lors de la rotation du socle. Plus vous centrer l'objet mouse au centre de l'objet socle des missiles, plus l'angle de tir sera largeur, à l'inverse plus vous vous éloigner, avec la souris, du socle des missiles, moins d'angles vous aurez à couvrir. Faites des testes. C'est d'ailleur le but du projet que d'apprendre des choses qui je l'espère vous apporteras un plus. Sachez simplement que ce genre peut être programmer d'une façon tout à fait différente.
À la ligne suivante, une nouvelle variable est nommé. On lui attache un objet. Il s'agit de l'objet Math avec sa méthode atan2(param1, param2);. Les deux variables ' dx ' et ' dy ', sont déclarer comme paramètre à la méthode. Mais n'oublions pas que dx et dy sont déjà porteur de valeur. La méthode prend ces deux param's comme expression et en déduit un nombre. Son retour est aussi un nombre. En fait c'est son rôle que d'évaluer une expression et de retourner un nombre comme résultat. Plus intéressant encore sera la façon d'appeler l'exécution de cette fonction, nommé pivot( );
Sur le côté gauche de la scène vous avez un clip vide, il est placer en scénario sur le calque scripts au deuxième keyframe. Sélectionner le, sur la scène et ouvrez le Action Panel. À ce stade vous voyez l'appelle de fonction pivot( ); au gestionnaire d'évènement enterFrame : onClipEvent(enterFrame) { . . . } . Il est normale que nous le placions à ce genre de gestionnaire puisque les objets figurant dans les instruction seront animés. En un mot, si votre valeur ips est la valeur par défaut, c'est à dire ips = 12, votre fonction sera exécuter 12 fois par seconde. Donc votre souris et votre objet visuel sera exécuter 12 fois par seconde en tant que évaluation. Puissez vous imaginer les ressources utilisées. C'est énorme. à toutes les fois que vous bouger votre souris, pendant x temps, votre programme évalue et retourne les résultats, 12 fois par seconde. Si vous le configurer à 35 ips, alors la même évaluation s'opère 35 fois par seconde. La programmation de jeu exige énormément de ressource machine. Enfin . . .
L'autre variable porte aussi une expression comme valeur affecté à cette variable. C'est cette partie qui traite des degrés, 360, lié à l'objet Math.PI. Vous savez comme moi qu'il y a des priorités au niveau des opérateurs. Le fait que : (2 * Math.PI); soit entre parenthèse, force le programme à évaluer, en premier lieu, ce qui se trouve entre parenthèse. Vous trouverez des informations sur le sujet des opérateurs et leurs priorités dans la plupart des livres concernant la programmation en Flash. Soyez toujours sensible aux opérateurs. Lorsque cette partie du source est évaluer nous le divisons par 360 multiplier par baseCanonRayon. Cette dernière porte toujours le résultat des objets souris et du socle des missiles. à la fin on prend l'objet visuel et nous l'affectons à la propriété prédéfini nommé : _rotation, ayant comme résultat la valeur de l'évaluation de la variable : baseCanonDegres. Résultat ? Larguer les missiles . . . et vous comprendrez.
<< Pour ceux et celles qui voudront se rapprocher un peu plus du jeu de combat >>
À la ligne 41 du script des fonctions : 2ième keyframe du calque nommé scripts, vous avez une position en ' y ' aléatoire de la cible. Voici le bout de script que vous devriez lire : _root["cible" + prochaineCible]._y = int (Math.random () * 100) + 20;. Si vous changez la valeur 100 pour 300, vous augmenter la hauteur de la zone, en ' y ', du déplacement aléatoire de l'objet cible. Je le place ici à 300 comme étant le maximum de hauteur, dû au fait que la ligne blanche, séparant la zone de jeu de la zone d'information, est situé à 375px. Ainsi, attendez vous, lors du déplacement des cibles à couvrir la totalité de la zone de jeu.
De plus vous verrez que les cibles passeront au dessus du socle des missiles. Pour remédier à cette situation, vous sélectionnez le clip baseCanon sur la scène, et vous ouvrez le Panel ActionSCript >> Voici le source à écrire : onClipEvent(enterFrame) { this._swapDepths(999999); } . Ainsi le clip baseCanon sera toujours au dessus des cibles. De même, et pourquoi pas, ajouter ce script à l'intérieur du gestionnaire onClipEvent(enterFrame), du genre : this._xscale = 50; this._yscale = 100;. Ainsi vous pourrez programmer une hauteur et une largeur différente du clip sélectionner. Vous pouvez l'expérimenter. La valeur par défaut est 100 en _xscale comme en _yscale. Vous donnez des formes nouvelles à vos objets, parce que vous leurs donnés des dimension différentes.
Ceci fait >> centrer votre clip baseCanon dans la zone de jeu, sur la scène pricipale. La zone de jeux se situe entre le haut de votre scène jusqu'à la ligne blanche. Ainsi vous vous êtes un peu rapprocher des caractères uniques qui nous rappelles les jeux de combats. Par contre, retenez que vos cibles ne sont pas pour autant des objets d'attaques et/ou défensifs. Beaucoup d'autres écritures de scripts pourront être créés pour ce genre particulier qu'est le script de combat. À vrai dire, je veux vous prouvez que l'écriture d'un script quelquonque ne sera jamais coulé dans le béton. En tout temps, un script peut subir des modifications au point de voir comme résultat une lecture complètement nouvelle. Prenez exemple de jeu de tir 1, et jeu de tir 2. Une seule fonction ajouter au jeu de tir 2, nommé pivot( ); , changera de beaucoup la manière d'utilisé le jeu en question.
<< L'objet Math et ses méthodes : cos( ); et sin( ); Trigonométrie >>.
Considérons ces deux méthodes de l'objet Math. Elle touche directement ce que nous appelons la trigonométrie. Je ne vous ferai pas un cours ici concernant la trigonométrie. Le sujet est très large en capacité et demande à lui seul un tuto. Seulement, si vous vous arrêter à la fonction qui traite du lancement des missiles >> lanceMissiles( );, vous trouverez la partie du script qui permet les lancement en angle, bref en diagonale et dans le même sens où pointe le socle des missiles. Il n'est pas rare, voire même essentielle l'utilisation des méthodes cos( ); et sin( );. Voici un exemple tiré du script du jeu :
missile._x = baseCanon._x + Math.cos (baseCanonRayon) * 20; et missile._y = baseCanon._y + Math.sin (baseCanonRayon) * 20;. Retenez seulement que la méthode cos( ); est toujours lié à la direction ' x ', et que la méthode sin( );, sera toujours lié à la direction ' y '. Ces deux méthodes, mise ensemble permettra une direction en diagonale de tous les objets étant attacher aux méthodes. Ici c'est les missiles qui seront attacher à ces méthodes.
Par contre, comprenez qu'un objet >> vaisseau, contrôler par touche clavier, permettra avec ces méthodes un réalisme saisissant. J'ai un jeu de combat qui est écrit, j'espère tout simplement le présenter en tant que tuto. La notion de trigonométrie est présente dans ce jeu. La trigonométrie permettra donc un déplacement de l'objet d'attaque pouvant se déplacer en diagonale et effectuer des ' u-turn ', pour ne pas dire des courbes, d'un profond réalisme. Nous avons vraiment avec ces deux méthode de l'objet Math un déplacement complet en matière de jeu. Il donne le sentiment d'un objet >> vaisseau, pouvant flotter dans l'espace de jeu, et effectuer des déplacements tout genre, selon la façon dont vous manipuler les touches clavier. Attardez vous, en programmation de jeu, sur le potentielle des méthodes cos( ); et sin( );. Vous ne pourrez que considérer l'essence même du jeu. Un jeu de combat sans ses méthodes souffrira d'un manque essentielle. Il n'est pas rare lors de la lecture de ce genre particulier du jeu de combat, ou de tir, de manipuler la flêche gauche ou droite, en relation avec les touches haut ou bas. Ainsi vous pourrez effectuer des déplacements d'objets et des figures de combats, d'arrêt flottant, d'accélération et de décélération. Tout dépendra de vos scripts et de vos intentions en matière de développement de jeu en Flash.




