Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Terminer le jeu d'aiguilleur du ciel

Finaliser le projet

1. Gérer des trajectoires multiples pour un appareil

Pour que les appareils en vol puissent traiter les demandes du joueur en termes d’ordres de pilotage, on doit procéder à des modifications importantes dans la logique du jeu.

En effet, jusqu’à présent les appareils se déplacent simplement en ligne droite d’un point à un autre et aucun changement de cap ne peut être effectué. De plus, lorsqu’un avion est au décollage, il décolle tout de suite, sans attendre l’autorisation de la tour de contrôle.

Le cahier des charges que le manager de vols doit prendre en compte pour gérer les diverses situations est le suivant :

  • Les appareils au décollage restent en bout de pistes pendant 3 secondes et prennent leur élan pour accélérer et décoller en fin de piste aux alentours de 300 à 400 km/h. Ils adoptent alors leur cap cible et leur vitesse de croisière. Le changement de cap, ainsi géré, est plutôt brutal et ne semble parfois pas très réaliste, mais fait l’affaire.

  • Les appareils à l’atterrissage atteignent la zone d’approche de l’aéroport et changent leur cap pour s’aligner sur la piste tout aussi brutalement et de manière aussi peu réaliste que pour les décollages. Ils touchent ensuite le sol en tiers de piste aux alentours de 350 km/h et prennent enfin quelques secondes pour atteindre la fin de piste, en ralentissant progressivement.

  • Enfin, les appareils en transit entrent par un bord de la carte et se dirigent vers leur point de sortie, sur un autre bord de la carte, en ligne droite.

Le principe à mettre en place est le suivant : au lieu de déplacer les appareils de leur point d’origine à leur point de destination, il est préférable de gérer, pour chaque vol, un tableau des déplacements à effectuer. Cette gestion par tableau de mouvements permet d’insérer à loisir de nouveaux mouvements, de nouveaux ordres de trajectoires, ou d’en supprimer.

Avec cette méthode, il devient aussi possible de découper une trajectoire en plusieurs trajectoires plus petites. Cette décomposition peut s’avérer utile, par exemple pour répondre au cahier des charges...

Améliorer les interactions

1. Interagir avec les paramètres d’un vol

Il est temps de finaliser la fonction de prise de contrôle des appareils par le joueur.

Voici le cahier des charges décrivant les commandes à implémenter et les règles à respecter :

  • Autorisation de décollage :

  • Cette commande ne doit être autorisée que pour les avions en attente de décollage. 

  • Envoyer un message radio indiquant à l’appareil concerné l’autorisation de décoller. 

  • Le statut du vol est en attente, le changer en le passant à Decollage.

  • Les trajets ayant été créés dès l’insertion du vol, il ne reste plus qu’à exécuter la fonction bougerAppareil() pour que les déplacements prévus soient effectués.

  • Accélérer :

  • Cette commande ne doit être autorisée que pour les avions en vol qui ne sont pas en phase d’atterrissage et dont la vitesse est inférieure à 1 150 km/h.

  • Envoyer un message radio à destination de l’appareil concerné lui demandant d’accélérer de 100 km/h.

  • Ajouter une animation sur la vitesse de l’appareil avec une durée de 3 secondes.

  • Ralentir :

  • Cette commande ne doit être autorisée que pour les avions en vol qui ne sont pas en phase d’atterrissage et dont la vitesse est supérieure à 500 km/h.

  • Envoyer un message radio à destination de l’appareil concerné lui demandant de ralentir de 100 km/h.

  • Ajouter une animation sur la vitesse de l’appareil avec une durée de 3 secondes.

  • Monter :

  • Cette commande ne doit être autorisée que pour les avions en vol qui ne sont pas en phase d’atterrissage.

  • Envoyer un message radio à destination de l’appareil concerné lui demandant de monter de 1 000 pieds.

  • Ajouter une animation sur l’altitude de l’appareil avec une durée de six secondes.

  • Descendre :

  • Cette commande ne doit être autorisée que pour les avions en vol qui ne sont pas en phase d’atterrissage.

  • Envoyer un message radio à destination de l’appareil concerné lui demandant de descendre de 1 000 pieds.

  • Ajouter une animation sur l’altitude de l’appareil avec une durée...

Flairer les dangers

1. Détecter et afficher les risques de collisions

Lorsqu’un risque de collision survient, le système de jeu doit pouvoir indiquer au joueur que s’il n’intervient pas rapidement, une catastrophe va se produire.

Pour que le joueur remarque qu’une situation est dangereuse, il faut qu’il puisse la visualiser à l’écran. On considère qu’il y a un risque lorsque deux appareils sont proches l’un de l’autre. On entend par "proches" le fait qu’ils sont peu éloignés en distance horizontale et en distance verticale. La tâche est de catégoriser le niveau de risque en fonction de ces deux distances.

Nous adoptons donc les catégories de risques suivantes :

  • niveau 0 (pas de risque) : plus de 200 unités d’écart en distance horizontale ou plus de 2 000 pieds d’écart en distance verticale

  • niveau 1 : moins de 200 unités d’écart en distance horizontale et moins de 2 000 pieds d’écart en distance verticale

  • niveau 2 : moins de 150 unités d’écart en distance horizontale et moins de 1 500 pieds d’écart en distance verticale

  • niveau 3 : moins de 100 unités d’écart en distance horizontale et moins de 1 000 pieds d’écart en distance verticale

  • niveau 4 (collision, crash) : moins de 50 unités d’écart en distance horizontale et moins de 500 pieds d’écart en distance verticale

Les risques 0 et 4 ne sont pas vraiment des risques. Le risque 0 indique que tout va bien et que les appareils sont en sécurité alors que lorsqu’un risque de niveau 4 survient, la partie se termine pour raison de catastrophe aérienne.

Les risques 1 à 3 sont à visualiser à l’écran. Il s’agit d’afficher un élément HTML encadrant les appareils impliqués dans le risque et de lui appliquer un code de couleur indiquant la sévérité du risque : 1 = vert, 2 = jaune, 3 = orange, par exemple.

Si le joueur parvient à exécuter avec succès une commande de déroutage sur l’un des appareils et que le risque se trouve levé après la manœuvre, il faut bien entendu supprimer le cadre de l’affichage correspondant...

Game Over

1. Gérer la fin de partie

terminerPartie()

Lorsqu’un crash survient, nous devons stopper la partie. Pour cela, on crée une fonction terminerPartie() qui effectue les opérations suivantes :

  • Stopper toutes les animations du jeu.

  • Empêcher que de nouveaux vols soient définis.

  • Supprimer tous les avions, sauf les deux avions impliqués dans le crash.

  • Supprimer tous les cadres de risque du jeu, sauf celui du crash.

  • Retrouver le cadre de risque du crash, lui retirer ses classes CSS de risque et lui attribuer la classe CSS risqueCrash.

  • Indiquer au jouer qu’une catastrophe a eu lieu et que la partie est terminée, et proposer une nouvelle partie.

L’implémentation de cette fonction récupère tous les avions du jeu avec un sélecteur jQuery sur la classe CSS .avion et stoppe toutes les animations.

On neutralise les nouvelles créations de vols par l’intermédiaire de la fonction JavaScript clearInterval() à laquelle on passe en paramètre l’identifiant qui a été retourné, lors du démarrage de la partie, par la fonction setInterval() et qui est conservé dans la variable partieEnCours du manager. De cette manière, la fonction testerEtAjouterVol() n’est plus sollicitée toutes les secondes et les vols ne sont plus insérés dans le jeu.

Un autre sélecteur jQuery s’occupe...

Quelques pistes de réflexion pour améliorer le jeu

Si vous désirez continuer à développer le jeu, voici quelques propositions d’améliorations :

  • Les changements de direction des appareils, brutaux, sont parfois peu réalistes. Pour les rendre plus vraisemblables, une solution consiste à mesurer, en degrés, la rotation totale à effectuer et à décomposer le virage en plusieurs trajets de 1 à 2 secondes chacun pour réorienter l’appareil de 10 ou 20 degrés à chaque fois, jusqu’à atteindre l’orientation souhaitée.

  • Le jeu peut être agrémenté d’effets sonores dans les moments importants, par exemple la réception de messages radio, le décollage d’un appareil, le marquage des points, les alertes, ou encore, un crash.

  • Les avions en phase d’atterrissage atterrissent sans avoir besoin de l’autorisation de la tour de contrôle. Ils pourraient se mettre à tourner autour de l’aéroport, sur un circuit d’attente, et n’atterrir que lorsque le joueur leur donne l’autorisation via la boîte de commandes.

  • Les appareils à l’atterrissage pourraient avoir une jauge de carburant qui s’amenuiserait avec le temps afin que, s’ils restent trop longtemps dans le circuit d’attente, une urgence survienne.

  • Certains des appareils...