Créer son site Gratuitement : Service / Outils webmaster gratuit
Mon Site Gratuit
Contactez nous
Nos partenaires
Scripts
Tutoriaux
Nos services
Forums
Accueil
ForumsMX [6] : Scripts de jeux : Jeu de tir 1 : Verticale
      Imprimer le sujet FAQ  M'enregistrer 
  Le monde virtuelle du flash vous réserve plein de suprise éblouissante rien que pour vous !
Animations à gogo ... Bonne visite !

MX [6] : Scripts de jeux : Jeu de tir 1 : Verticale

Messagede zardoz le 23 Avr 2008, 22:37

.

<< :: >>
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.
zardoz
Plug'zien Star'z
Plug'zien Star'z
 
Messages: 888
Inscription: 16 Fév 2008, 04:05
Points: 582


Retourner vers Flash

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités