Scripter un jeu de tir
Les jeux sont sans contredit très populaire sur le web. En Flash, particulièrement. Un jour je me suis mis au scriptage de jeux en Flash. Plusieurs amateurs intéressé ce sont entourer de professionnelles sur le sujet des scripts de jeux. Même si le script que je vous donnent aujourd'hui date de la période de Flash 5, n'en demeure pas moins que nous pouvions l'écrire en Flash MX [version 6]. J'ai dû, évidemment le reprendre et l'adapter pour ce tutoriel. Je lui ai donc donné un genre pédagogique. Ce script est basé sur une quantité de fonctions. Vous pourrez le lire en MX comme en CS3. J'avoue que je me suis un peu amusé de vous préparer ce genre particulier dans l'apprentissage des scripts. Je me suis permis de replonger dans de vieux souvenirs lors de mon apprentissage en Flash.
<< :: >>
Le type de jeu que j'ai choisi ici vous seras familier. L'intérêt des scripts de jeux nous semblent normale. Si il y a un apprentissage qui nous soit complet en terme de programmation, c'est bien le scriptage des jeux. On y retrouve de tout sur le mouvement des objets, leurs directions, leurs vitesses, leurs couleurs et tout cà de manière aléatoire, sans compter évidemment, les touches clavier , la souris et, beaucoup d'autres choses encore. Comme approche de la programmation en Flash, je suggère fortement l'intérêt que vous devriez porter sur la programmation des jeux. Jamais vous ne trouverez apprentissage plus complet que la programmation de jeux. Dans le script que je vous offre aujourd'hui, tout est exécution de fonctions.
<< :: >>
Celui qui m'a enseigner le script de jeux se nomme Gary Rosenzweig. C'est un programmeur développeur tout à fait génial en ce qui concerne l'enseignement des scripts . Auteur de livres sur le sujet, Gary Rosenzweig, Américain, a su s'entourer d'amateurs designer désireux d'apprendre le scriptage dans un contexte de jeux simple et aussi de jeux plus complexe. Son style d'enseignement, souvent progressif, et sa générosité, en aura surpris plus d'un. J'ai eu la chance de connaitre ses scripts et il fut à mes débuts en programmation, d'une source presque inépuisable. Encore aujourdh'hui, j'apprend de cet auteur. Un contact avec ce programmeur m'aura tout de même donné accès à plus de 18 chapitres sur le scriptage de jeux tout genre. Des jeux d'habiletés en passant par des jeux d'arcades et des jeux de cartes, de réflexions et de mémorisation, nous trouvions tous en lui la chance de se parfaire davantage. Malheureusement, je n'ai plus son livre explicatif, mais 18 chapitres de scripts zipper c'est peu dire, surtout que son style est celui de ses débuts dans l'enseignement. J'ai donc conserver précieusement ce qu'il nous donnait si généreusement.
<< :: >>
Aujourdh'hui Gary Rosenzweig a un autre site, complètement nouveau. Il écrit en CS3|AS3. Voici son adresse : http://www.flashgameu.com/. Le nom est Flash game university. Il a écrit un autre livre sur le scriptage de jeux sous CS3|AS3. Une simple inscription suffit à télécharger les chapitres zipper de Gary Rosenzweig. Books source files. 25 chapitres c'est peu dire. Cependant le site est en pleine construction à l'heure actuelle. Vidéos podcast ect . . .
<< :: >>
Comprenez aussi qu'à lépoque de Flash 5, cet auteur nous donnais tous les droits d'utilisation, de modification et de diffusion sous quelque forme que ce soit, de son savoir en matière de programmation et de ses scripts. Moi je ne le regrette pas d'avoir, à ma disposition, la totalité des chapitres zipper du début de son enseignement en Flash 5. C'est une oeuvre de qualité. Je vous le jure.
Voici un script : Un fichier zipper. Ne craignez pas de le télécharger.
Ce script sont mes début en programmation quoique je l'ai adapter pour le tuto, je l'ai écrit il y a plusieurs années. Évidemment dans un contexte d'étude.
Si quelque chose cloche j'aimerais que l'on m'en fasse part. Car je l'ai écrit aujourd'hui avec CS3, mais en mode Flash 6, dont le script d'origine de cette période d'étude provenais de Flash 5. Vous comprenez un peu mes inquiètudes. Moi pour ma part, le script fonctionne très bien sous CS3. Cependant je n'ai pas retravailler le script. Je l'offre tel que je l'ai étudier et écrit à ce moment là . Je n'ai changer que le visuel, voulant l'adapter au contexte du site et des tutos de MSG
Débutants et débutantes en programmation Flash
Les jeux sont sans contredit très populaire sur le web. En Flash, particulièrement. Un jour je me suis mis au scriptage de jeux en Flash. Plusieurs amateurs intéressé ce sont entourer de professionnelles sur le sujet des scripts de jeux. Même si le script que je vous donnent aujourd'hui date de la période de Flash 5, n'en demeure pas moins que nous pouvions l'écrire en Flash MX [version 6]. J'ai dû, évidemment le reprendre et l'adapter pour ce tutoriel. Je lui ai donc donné un genre pédagogique. Ce script est basé sur une quantité de fonctions. Vous pourrez le lire en MX comme en CS3. J'avoue que je me suis un peu amusé de vous préparer ce genre particulier dans l'apprentissage des scripts. Je me suis permis de replonger dans de vieux souvenirs lors de mon apprentissage en Flash.
<< :: >>
Le type de jeu que j'ai choisi ici vous seras familier. L'intérêt des scripts de jeux nous semblent normale. Si il y a un apprentissage qui nous soit complet en terme de programmation, c'est bien le scriptage des jeux. On y retrouve de tout sur le mouvement des objets, leurs directions, leurs vitesses, leurs couleurs et tout cà de manière aléatoire, sans compter évidemment, les touches clavier , la souris et, beaucoup d'autres choses encore. Comme approche de la programmation en Flash, je suggère fortement l'intérêt que vous devriez porter sur la programmation des jeux. Jamais vous ne trouverez apprentissage plus complet que la programmation de jeux. Dans le script que je vous offre aujourd'hui, tout est exécution de fonctions.
<< :: >>
Celui qui m'a enseigner le script de jeux se nomme Gary Rosenzweig. C'est un programmeur développeur tout à fait génial en ce qui concerne l'enseignement des scripts . Auteur de livres sur le sujet, Gary Rosenzweig, Américain, a su s'entourer d'amateurs designer désireux d'apprendre le scriptage dans un contexte de jeux simple et aussi de jeux plus complexe. Son style d'enseignement, souvent progressif, et sa générosité, en aura surpris plus d'un. J'ai eu la chance de connaitre ses scripts et il fut à mes débuts en programmation, d'une source presque inépuisable. Encore aujourdh'hui, j'apprend de cet auteur. Un contact avec ce programmeur m'aura tout de même donné accès à plus de 18 chapitres sur le scriptage de jeux tout genre. Des jeux d'habiletés en passant par des jeux d'arcades et des jeux de cartes, de réflexions et de mémorisation, nous trouvions tous en lui la chance de se parfaire davantage. Malheureusement, je n'ai plus son livre explicatif, mais 18 chapitres de scripts zipper c'est peu dire, surtout que son style est celui de ses débuts dans l'enseignement. J'ai donc conserver précieusement ce qu'il nous donnait si généreusement.
<< :: >>
Aujourdh'hui Gary Rosenzweig a un autre site, complètement nouveau. Il écrit en CS3|AS3. Voici son adresse : http://www.flashgameu.com/. Le nom est Flash game university. Il a écrit un autre livre sur le scriptage de jeux sous CS3|AS3. Une simple inscription suffit à télécharger les chapitres zipper de Gary Rosenzweig. Books source files. 25 chapitres c'est peu dire. Cependant le site est en pleine construction à l'heure actuelle. Vidéos podcast ect . . .
<< :: >>
Comprenez aussi qu'à lépoque de Flash 5, cet auteur nous donnais tous les droits d'utilisation, de modification et de diffusion sous quelque forme que ce soit, de son savoir en matière de programmation et de ses scripts. Moi je ne le regrette pas d'avoir, à ma disposition, la totalité des chapitres zipper du début de son enseignement en Flash 5. C'est une oeuvre de qualité. Je vous le jure.
Voici un script : Un fichier zipper. Ne craignez pas de le télécharger.
Ce script sont mes début en programmation quoique je l'ai adapter pour le tuto, je l'ai écrit il y a plusieurs années. Évidemment dans un contexte d'étude.
Si quelque chose cloche j'aimerais que l'on m'en fasse part. Car je l'ai écrit aujourd'hui avec CS3, mais en mode Flash 6, dont le script d'origine de cette période d'étude provenais de Flash 5. Vous comprenez un peu mes inquiètudes. Moi pour ma part, le script fonctionne très bien sous CS3. Cependant je n'ai pas retravailler le script. Je l'offre tel que je l'ai étudier et écrit à ce moment là . Je n'ai changer que le visuel, voulant l'adapter au contexte du site et des tutos de MSG
<< :: >>
J'hésitais un peu à savoir si dans ce tuto je vous offrais le script directement sur la page, ou en téléchargement seulement. C'est comme si je voulais davantage que vous le téléchargiez. La raison est fort simple à comprendre, c'est que les scripts sont développer en scénario, donc éparpillé un peu partout. Ce qui rend la tâche plus détailler lorsque nous voulons transférer les données et expliquer les bases. Ce n'est pas mon genre que d'écrire les scripts en scénario, pas plus qu'il est de mon genre de placer des scripts sur des clips. En temps normale j'écrit tout sur le premier keyframe. Ce en quoi il serait plus judicieux de télécharger le fichier jeuDeTir.zip. Et en vous remerciant de votre compréhension.
À la base vous n'avez qu'un seul clip cible et il se nomme objet. De même vous n'avez qu'un seul clip missile. Ces deux clips, vous les verrez en bibliothèque de Flash. Ce sont les fonctions, qui se chargent d'attacher à la scène les clips en quantité contrôler, issus d'une matrice.
En fait les deux clips nommés sont entièrement contrôler par programme. Chaque objet, clip cible , nommé objet et le clip missile nommé missile ont chacun leur matrice. Conclusion, il y a deux matrices. Ces matrices sont un peu spéciale puisque leur initialisation, dans la fonction init(); ont des valeurs matricielle vide. Comme exemple : objets = [ ];, et encore missiles = [ ]; Lors d'une boucle << for >> un objet cible et un objet missile seront tout simplement attacher à la scène. Pour ce qui est de la boucle for de l'objet/cible, il s'agit d'un décompte : for ( i = objet.length; i >= 0; i--) { . . . }. La boucle for, l'attachement des clips et les matrices, ont pour objectif de placer, multiplier, ajouter soustraire voire même retrancher des clips lors de l'exécution de l'animation. Il est donc nécessaire, puisque nos objets seront détruits, de procéder par décompte de 24 à 0. Par le fait même nos objets/cibles ne seront pas recréer dans la matrice. À zéro, nous déplaçons la tête de lecture.
Il vaut la peine de s'arrêter sur ces matrices. Voyez vous, il y a, dans l'exécution du programme, deux façons de détruire un objet. Que cette objet soit une cible ou un missile, ils seront détruit soit par le programme, soit par un contact entre le missile et la cible. Quoiqu'il en soit les deux objets sont entièrement détruit jusqu'à ce que la quantité stocker dans la variable nombreObjets soit atteint. Ici la variable nombreObjets = 24;. Lorsque le nombre est atteint, c'est à dire 0, nous déplacons la tête de lecture à l'étiquette nommé ' Fin de partie '.
<< Des informations vous sont données >>
À ce stade, vous avez un rapport sur le nombre d'objets détruit par le programme et le nombre d'objets atteint et détruit par les missiles. Les objets détruit par le programme sont justement les objets/cibles qui n'auront pas été atteint par les missiles. Par le fait même, lorsqu'ils sortent du champ de vision, en dehors du player, c'est le programme qui détruit l'objet. L'objet qui n'aura pas été atteint est détruit et retrancher de la matrice par le programme. Ce comportement est d'abord et avant tout une écriture. C'est le script exécuter.
<< Il en và différemment des missiles >>
Même si la cible est contrôler par un nombre minimun à atteindre, il n'en est pas ainsi des missiles. Les missiles sont en nombre infini. Si donc vous augmenter la valeur de la variable nombreObjets, vous aurez toujours accès aux missiles en nombre suffisant. Le fonctionnement des missiles, est bien différent des comportements des cibles. Le seul point en commun des missiles avec les cibles c'est qu'ils sont détruit eux aussi. Qu'ils atteignent leurs cibles ou qu'ils n'atteignent pas leur cibles, les missiles sont détruits. Cependant ceux ci sont recréer et placer à nouveau dans la matrice. Ce qui en fait un nombre indéterminer, un nombre infini.
L'objet Math et sa méthode random() jouera un rôle précis. Mais l'objet Math s'aacapare surtout de l'objet/cible. Cet objet, de la classe Math, définit de façon aléatoire plusieurs aspects de la cible. D'une part l'objet Math définit dans quelle direction l'objet cible entrera en scène. En effet car la cible entre en scène autant du côté gauche que du côté droit du player. L'objet Math définit aussi les changements de couleurs de la cible, selon une plage prédéfini dans le programme. L'objet Math, de la même façon définit la vitesse de chaque cible représenter et exécuter, la vitesse de chaque objet/cible est donc variable. Il en và de même pour la position ' y ' des cibles. N'oubliez pas que les cibles en question sont placer en haut de l'écran. Par contre une zone limite a été définit avec l'objet Math et sa méthode random(). Ceci afin que les cibles reste tout au long de l'exécution de l'animation, dans le haut du player, suivant une plage à ne pas dépasser, de 20px minimum à 100px maximum, et ce, en ' y ' seulement.
Dans le bas de la partie centrale vous avez la base des missiles. C'est un socle que nous déplacons à l'aide des touches clavier. Trois touches clavier sont nécessaire au bon fonctionnement du jeu en question. La flêche droite et la flêche gauche déplacera le socle de la base des missiles, en horizontale seulement, tandis que la barre espace du clavier lancera les missiles. J'ai ajouter une zone limite dans le déplacement du socle. C'est une variable basé sur le temps ' getTimer() ' qui s'occupera de la quantité des missiles, nous aurons donc l'impression d'une quantité de missiles lancer qui soit supérieur, ou parfois inférieur. Tout dépend de l'initialisation, de la valeur affecté à la variable. Si vous descendez la valeur à +100 ou que vous l'initialisé à +1000, vous aurez des comportements différents des missiles. Plus le temps est réduit ' +100 ', plus de missiles seront lancer. Semblable à une mitraillette, une rafale. Changer ces valeurs et vous verrez. En réalité, le temps, en ce qui concerne les missiles, est un temps de chargement des missiles, chargement rapide +100, chargement lent +2000. Voici un exemple : tempsObjets = getTimer() + 1000;, ou encore : tempsMissiles = getTimer() + 100;. Ce genre d'écriture provoquera des comportements différents.
Ce script, adapter pour les débutants(es) en programmation, est fort simple. Cependant ce script demande un temps d'étude et de pratique pour bien en maîtrisé les bases. Quelques subtilités sont présente en matière de programmation, comme la variable ' dx ' par exemple. La variable dx a un lien direct avec la distance ' x ', tandis que la variable dy a un lien avec la distance ' y '. Vous verrez ces variables agir à plusieurs endroits du script. La dernière fonction est justement nommé distance( );, et s'accapare des données stocker dans ' dx ' et ' dy '. Nous la retrouvons aussi dans un tableau associatif.
Voici un exemple : objets.push( { clip: "objet" + prochainObjet, d: dx });. Un peu plus loin dans le programme on utilise ce genre de données. Comme exemple : dx = objets[i].d; ou encore : objet = _root[objets[i].clip];. C'est le genre de matrice associative. C'est sûrement le seule aspect du source qui vous demandera une attention particulière. Il en est ainsi des collisions. La méthode hitTest( ); n'est tout simplement pas utilisé ici. Les collisions sont programmer tel que l'on pouvait le faire à l'époque de Flash 5. Depuis MX, cependant, la méthode hitTest( ); a été implémenter dans l'API du player. En CS3|AS3 la méthode se nomme hitTestObject( );. Il vaut la peine de s'arrêter sur cette partie du script, dans la fonction surveilleCollision( );. Les programmeurs utilisait la distance entre deux objets pour simuler un collision. If (distance( missile, cible) < 15) { . . . }. Ici la logique conditionnelle fait mention de la fonction distance ( param1, param2 ). Plus le chiffre est bas, du genre < 5 par exemple, obligera à plus de précision dans le tir pour faire éclater la cible. à l'inverse plus le chiffre est haut : < 30, moins de précision dans le tir fera quand même éclater la cible.
À l'époque de Flash 5 des trucs et des astuces étaient parfois nécessaire en programmation. Dans le script du jeu de tir, un clip vide est placer sur le côté gauche de la scène. Un clip vide est souvent considéré comme un conteneur à programme. Celui-ci contient les appelles de fonctions. Il n'est pas obligatoire d'agir ainsi, mais j'ai voulu conserver le cachet de mes débuts en programmation, tel qu'il m'a été enseigner. Vous le sélectionner comme un clip et vous ouvrez le panel action. Il est donc du genre onClipEvent(load) { _root.init(); } ou encore onClipEvent(enterFrame) { _root.nouvelObjet(); _root.lanceMissiles();}
Le script est le centre et la raison du tutorial ici présent. Ce en quoi j'ai opter pour un graphisme simple. L'important ici est l'étude des scripts et il serait insensé de préparer le jeu avec un graphisme éclatant. Ce seras donc à vous de préparer un graphisme de votre choix où le temps passer pour la présentation visuelle deviendra important. Lorsque nous transférons nos connaissances afin de les partager, et que le travail d'adaptation pour donner un sens pédagogique au projet est déjà assez suffisant, la présentation de l'animation reste simpliste. L'important sera le message que l'on veut bien rendre en ce qui concerne l'explication des scripts. Ce script a été réécrit en conservant l'état dans lequel j'étais en tant que débutant il y a 5 ans. Je peux très bien réécrire ce même sujet, le jeu de tir, dont l'écriture serais beaucoup mieux structurer et, par le fait même optimiser. Mais je me plait ici de vous l'offrir tel quel, dû moins en écriture, sauf pour les adaptations visuelles et pédagogiques, qui d'influence proviennent de ma passion, de donner à mon tour mon cheminement en matière de programmation. Ce sera à vous de tendre vers une autonomie en matière de développement de scripts. Par contre, au départ, lorsque nous sommes vraiment débutants(es), il est bien d'écrire des sources, à partir des scripts professionnelles, tels qu'on en rencontre sur le web, ou au travers les livres. L'important sera de garder en tête le besoin de se séparer des enseignements et d'écrire des scripts autonome, des scripts personnalisés.
Plusieurs valeurs de variables, si vous les changer, vous donneront un aperçu de ce que pourrait être les niveaux de difficultés. Dans le script fourni ici, les niveaux de difficultés ne sont programmer. Donc il n'y a pas de niveau. Cependant si vous changer les valeurs de certaine variables, vous en aurez déjà un aperçu. Le nombre de cible, si valeur est changé augmentera la durée du jeux : nombreObjet = 48; comme exemple.
Si vous changer la valeur de : tempsObjet = getTimer( ) + 300;, augmentera la vitesse du jeu en cours de lecture. En réalité les cibles ou les missiles augmentrons en rapidité. Par le fait même vous comprenez que celà diminura la durée du jeux. Il en est de même pour les deux objets principaux, cibles et missiles ont chacun leur objet getTimer( );. Il en de même concernant la précision des tirs : if(distance(missile, objet) < 25) { . . . } . Le seul fait de diminuer la valeur du chiffre, exemple < 10 , vous donnera un aperçu de ce que pourrait être un niveau de difficulté programmer. Il est déjà plus difficile de faire éclater une cible lorsque cette valeur est basse. Nous diminuons la zone sensible des contacts entre les objets. Il en est de même au sujet de la zone restreinte lors du déplacement horizontale du socle des missiles. Réduire cette zone augmentera le niveau de difficulté. Ce sera à vous de changer ces valeurs comme étant un exercice perso. Cet exercice suffira à vous inspirer sur la possibilité de programmer des niveaux de difficultés.
J'hésitais un peu à savoir si dans ce tuto je vous offrais le script directement sur la page, ou en téléchargement seulement. C'est comme si je voulais davantage que vous le téléchargiez. La raison est fort simple à comprendre, c'est que les scripts sont développer en scénario, donc éparpillé un peu partout. Ce qui rend la tâche plus détailler lorsque nous voulons transférer les données et expliquer les bases. Ce n'est pas mon genre que d'écrire les scripts en scénario, pas plus qu'il est de mon genre de placer des scripts sur des clips. En temps normale j'écrit tout sur le premier keyframe. Ce en quoi il serait plus judicieux de télécharger le fichier jeuDeTir.zip. Et en vous remerciant de votre compréhension.
<< Les objets >>
À la base vous n'avez qu'un seul clip cible et il se nomme objet. De même vous n'avez qu'un seul clip missile. Ces deux clips, vous les verrez en bibliothèque de Flash. Ce sont les fonctions, qui se chargent d'attacher à la scène les clips en quantité contrôler, issus d'une matrice.
En fait les deux clips nommés sont entièrement contrôler par programme. Chaque objet, clip cible , nommé objet et le clip missile nommé missile ont chacun leur matrice. Conclusion, il y a deux matrices. Ces matrices sont un peu spéciale puisque leur initialisation, dans la fonction init(); ont des valeurs matricielle vide. Comme exemple : objets = [ ];, et encore missiles = [ ]; Lors d'une boucle << for >> un objet cible et un objet missile seront tout simplement attacher à la scène. Pour ce qui est de la boucle for de l'objet/cible, il s'agit d'un décompte : for ( i = objet.length; i >= 0; i--) { . . . }. La boucle for, l'attachement des clips et les matrices, ont pour objectif de placer, multiplier, ajouter soustraire voire même retrancher des clips lors de l'exécution de l'animation. Il est donc nécessaire, puisque nos objets seront détruits, de procéder par décompte de 24 à 0. Par le fait même nos objets/cibles ne seront pas recréer dans la matrice. À zéro, nous déplaçons la tête de lecture.
<< Les matrices >>
Il vaut la peine de s'arrêter sur ces matrices. Voyez vous, il y a, dans l'exécution du programme, deux façons de détruire un objet. Que cette objet soit une cible ou un missile, ils seront détruit soit par le programme, soit par un contact entre le missile et la cible. Quoiqu'il en soit les deux objets sont entièrement détruit jusqu'à ce que la quantité stocker dans la variable nombreObjets soit atteint. Ici la variable nombreObjets = 24;. Lorsque le nombre est atteint, c'est à dire 0, nous déplacons la tête de lecture à l'étiquette nommé ' Fin de partie '.
<< Des informations vous sont données >>
À ce stade, vous avez un rapport sur le nombre d'objets détruit par le programme et le nombre d'objets atteint et détruit par les missiles. Les objets détruit par le programme sont justement les objets/cibles qui n'auront pas été atteint par les missiles. Par le fait même, lorsqu'ils sortent du champ de vision, en dehors du player, c'est le programme qui détruit l'objet. L'objet qui n'aura pas été atteint est détruit et retrancher de la matrice par le programme. Ce comportement est d'abord et avant tout une écriture. C'est le script exécuter.
<< Il en và différemment des missiles >>
Même si la cible est contrôler par un nombre minimun à atteindre, il n'en est pas ainsi des missiles. Les missiles sont en nombre infini. Si donc vous augmenter la valeur de la variable nombreObjets, vous aurez toujours accès aux missiles en nombre suffisant. Le fonctionnement des missiles, est bien différent des comportements des cibles. Le seul point en commun des missiles avec les cibles c'est qu'ils sont détruit eux aussi. Qu'ils atteignent leurs cibles ou qu'ils n'atteignent pas leur cibles, les missiles sont détruits. Cependant ceux ci sont recréer et placer à nouveau dans la matrice. Ce qui en fait un nombre indéterminer, un nombre infini.
<< L'objet Math et sa méthode random() >>
L'objet Math et sa méthode random() jouera un rôle précis. Mais l'objet Math s'aacapare surtout de l'objet/cible. Cet objet, de la classe Math, définit de façon aléatoire plusieurs aspects de la cible. D'une part l'objet Math définit dans quelle direction l'objet cible entrera en scène. En effet car la cible entre en scène autant du côté gauche que du côté droit du player. L'objet Math définit aussi les changements de couleurs de la cible, selon une plage prédéfini dans le programme. L'objet Math, de la même façon définit la vitesse de chaque cible représenter et exécuter, la vitesse de chaque objet/cible est donc variable. Il en và de même pour la position ' y ' des cibles. N'oubliez pas que les cibles en question sont placer en haut de l'écran. Par contre une zone limite a été définit avec l'objet Math et sa méthode random(). Ceci afin que les cibles reste tout au long de l'exécution de l'animation, dans le haut du player, suivant une plage à ne pas dépasser, de 20px minimum à 100px maximum, et ce, en ' y ' seulement.
<< La zone des missiles >>
Dans le bas de la partie centrale vous avez la base des missiles. C'est un socle que nous déplacons à l'aide des touches clavier. Trois touches clavier sont nécessaire au bon fonctionnement du jeu en question. La flêche droite et la flêche gauche déplacera le socle de la base des missiles, en horizontale seulement, tandis que la barre espace du clavier lancera les missiles. J'ai ajouter une zone limite dans le déplacement du socle. C'est une variable basé sur le temps ' getTimer() ' qui s'occupera de la quantité des missiles, nous aurons donc l'impression d'une quantité de missiles lancer qui soit supérieur, ou parfois inférieur. Tout dépend de l'initialisation, de la valeur affecté à la variable. Si vous descendez la valeur à +100 ou que vous l'initialisé à +1000, vous aurez des comportements différents des missiles. Plus le temps est réduit ' +100 ', plus de missiles seront lancer. Semblable à une mitraillette, une rafale. Changer ces valeurs et vous verrez. En réalité, le temps, en ce qui concerne les missiles, est un temps de chargement des missiles, chargement rapide +100, chargement lent +2000. Voici un exemple : tempsObjets = getTimer() + 1000;, ou encore : tempsMissiles = getTimer() + 100;. Ce genre d'écriture provoquera des comportements différents.
<< Un script adapter pour les débutants(es) >>
Ce script, adapter pour les débutants(es) en programmation, est fort simple. Cependant ce script demande un temps d'étude et de pratique pour bien en maîtrisé les bases. Quelques subtilités sont présente en matière de programmation, comme la variable ' dx ' par exemple. La variable dx a un lien direct avec la distance ' x ', tandis que la variable dy a un lien avec la distance ' y '. Vous verrez ces variables agir à plusieurs endroits du script. La dernière fonction est justement nommé distance( );, et s'accapare des données stocker dans ' dx ' et ' dy '. Nous la retrouvons aussi dans un tableau associatif.
Voici un exemple : objets.push( { clip: "objet" + prochainObjet, d: dx });. Un peu plus loin dans le programme on utilise ce genre de données. Comme exemple : dx = objets[i].d; ou encore : objet = _root[objets[i].clip];. C'est le genre de matrice associative. C'est sûrement le seule aspect du source qui vous demandera une attention particulière. Il en est ainsi des collisions. La méthode hitTest( ); n'est tout simplement pas utilisé ici. Les collisions sont programmer tel que l'on pouvait le faire à l'époque de Flash 5. Depuis MX, cependant, la méthode hitTest( ); a été implémenter dans l'API du player. En CS3|AS3 la méthode se nomme hitTestObject( );. Il vaut la peine de s'arrêter sur cette partie du script, dans la fonction surveilleCollision( );. Les programmeurs utilisait la distance entre deux objets pour simuler un collision. If (distance( missile, cible) < 15) { . . . }. Ici la logique conditionnelle fait mention de la fonction distance ( param1, param2 ). Plus le chiffre est bas, du genre < 5 par exemple, obligera à plus de précision dans le tir pour faire éclater la cible. à l'inverse plus le chiffre est haut : < 30, moins de précision dans le tir fera quand même éclater la cible.
<< Un style propre à Flash 5 >>
À l'époque de Flash 5 des trucs et des astuces étaient parfois nécessaire en programmation. Dans le script du jeu de tir, un clip vide est placer sur le côté gauche de la scène. Un clip vide est souvent considéré comme un conteneur à programme. Celui-ci contient les appelles de fonctions. Il n'est pas obligatoire d'agir ainsi, mais j'ai voulu conserver le cachet de mes débuts en programmation, tel qu'il m'a été enseigner. Vous le sélectionner comme un clip et vous ouvrez le panel action. Il est donc du genre onClipEvent(load) { _root.init(); } ou encore onClipEvent(enterFrame) { _root.nouvelObjet(); _root.lanceMissiles();}
<< Un graphisme simple >>
Le script est le centre et la raison du tutorial ici présent. Ce en quoi j'ai opter pour un graphisme simple. L'important ici est l'étude des scripts et il serait insensé de préparer le jeu avec un graphisme éclatant. Ce seras donc à vous de préparer un graphisme de votre choix où le temps passer pour la présentation visuelle deviendra important. Lorsque nous transférons nos connaissances afin de les partager, et que le travail d'adaptation pour donner un sens pédagogique au projet est déjà assez suffisant, la présentation de l'animation reste simpliste. L'important sera le message que l'on veut bien rendre en ce qui concerne l'explication des scripts. Ce script a été réécrit en conservant l'état dans lequel j'étais en tant que débutant il y a 5 ans. Je peux très bien réécrire ce même sujet, le jeu de tir, dont l'écriture serais beaucoup mieux structurer et, par le fait même optimiser. Mais je me plait ici de vous l'offrir tel quel, dû moins en écriture, sauf pour les adaptations visuelles et pédagogiques, qui d'influence proviennent de ma passion, de donner à mon tour mon cheminement en matière de programmation. Ce sera à vous de tendre vers une autonomie en matière de développement de scripts. Par contre, au départ, lorsque nous sommes vraiment débutants(es), il est bien d'écrire des sources, à partir des scripts professionnelles, tels qu'on en rencontre sur le web, ou au travers les livres. L'important sera de garder en tête le besoin de se séparer des enseignements et d'écrire des scripts autonome, des scripts personnalisés.
<< À propos des niveaux de difficultés >>
Plusieurs valeurs de variables, si vous les changer, vous donneront un aperçu de ce que pourrait être les niveaux de difficultés. Dans le script fourni ici, les niveaux de difficultés ne sont programmer. Donc il n'y a pas de niveau. Cependant si vous changer les valeurs de certaine variables, vous en aurez déjà un aperçu. Le nombre de cible, si valeur est changé augmentera la durée du jeux : nombreObjet = 48; comme exemple.
Si vous changer la valeur de : tempsObjet = getTimer( ) + 300;, augmentera la vitesse du jeu en cours de lecture. En réalité les cibles ou les missiles augmentrons en rapidité. Par le fait même vous comprenez que celà diminura la durée du jeux. Il en est de même pour les deux objets principaux, cibles et missiles ont chacun leur objet getTimer( );. Il en de même concernant la précision des tirs : if(distance(missile, objet) < 25) { . . . } . Le seul fait de diminuer la valeur du chiffre, exemple < 10 , vous donnera un aperçu de ce que pourrait être un niveau de difficulté programmer. Il est déjà plus difficile de faire éclater une cible lorsque cette valeur est basse. Nous diminuons la zone sensible des contacts entre les objets. Il en est de même au sujet de la zone restreinte lors du déplacement horizontale du socle des missiles. Réduire cette zone augmentera le niveau de difficulté. Ce sera à vous de changer ces valeurs comme étant un exercice perso. Cet exercice suffira à vous inspirer sur la possibilité de programmer des niveaux de difficultés.




