Météoroïdes

GW-Basic, utilisé par PC-Basic

Programme avec Graphique et Texte

PC-BASIC

Asteroids, sorti en 1979, fut un autre classique des bornes d'arcade Atari, avec des dizaines de milliers d'exemplaires vendus.

Il a presque immédiatement rendu obsolète Space Invaders, un jeu au concept similaire : dans Asteroids, vous pouviez déplacer votre vaisseau n'importe où sur l'écran et tirer dans toutes les directions, contrairement à Space Invaders.

De plus, l'action était plus libre, palpitante et imprévisible ; dans Asteroids, vous deviez non seulement détruire des astéroïdes dangereux — dont les plus gros se fragmentaient en petits corps spatiaux mobiles, toujours prêts à attaquer votre vaisseau —, mais aussi éviter les tirs incessants de soucoupes volantes.

METEOR.BAS vous propose un vaisseau spatial aux mouvements similaires à ceux d'Asteroids : rotation, accélération et décélération, et tirs (un à la fois).

Si vous accélérez sans toucher aux commandes, vous finirez par vous arrêter. De plus, l'écran « boucle ».

Si votre vaisseau dépasse un bord de l'écran, il réapparaît de l'autre côté, toujours en mouvement.

Cependant, METEOR.BAS diffère quelque peu d'Asteroids en ce qui concerne les astéroïdes : le programme GW-BASIC affiche un unique et gros météoroïde à détruire.

Une fois touché, il se divise en deux plus petits, qu'il faut également éliminer. Vous disposez de dix tirs seulement pour accomplir votre mission.

Les lignes 15 à 28 déclarent et initialisent plusieurs variables, dont BULLET et METEOR, qui, lorsqu'elles sont initialisées à 1, contrôlent la visibilité des corps en mouvement correspondants.

Notez également que les lignes 15 à 17 définissent la position et la direction initiales du météoroïde.

La trigonométrie nous permet de calculer l'angle de déplacement du vaisseau spatial ainsi que de projeter le canon – qui tire le projectile – dans la bonne direction (voir lignes 40 à 49).

Les lignes 50 à 116 gèrent les entrées utilisateur pour le mouvement et la rotation du vaisseau spatial, les calculs de quantité de mouvement et le retour à la ligne.

Si l'utilisateur appuie sur la barre d'espace, un projectile est tiré (à condition qu'aucun ne soit déjà en vol à l'écran ; voir ligne 200) et une série d'instructions conditionnelles sont exécutées.

Par exemple, la ligne 210 trace la trajectoire du projectile, tandis que les lignes suivantes déterminent si le projectile a franchi le bord de l'écran.

Une sous-routine permettant de dessiner, déplacer et vérifier les propriétés du gros météoroïde se trouve aux lignes 600 à 690.

Les instructions POINT aux lignes 630 et 632 vérifient qu'aucun projectile n'a touché le météoroïde (ce qui provoque un retour à la ligne 800) ni le vaisseau spatial (ce qui provoque un retour à la ligne 700) ; dans les deux cas, le programme se termine.

Une autre sous-routine, commençant à la ligne 900, gère les deux petits météoroïdes, qui n'apparaissent que si le gros météoroïde est détruit.

La variable METEOR détermine ce qui doit être affiché à l'écran : si METEOR vaut 2, deux petits météoroïdes sont affichés ; si elle vaut 3, seul le jaune est affiché ; et si elle vaut 4, seul le vert est présent.

La variable TEMPM comptabilise le nombre de petits météoroïdes détruits. Lorsque TEMPM atteint (ou dépasse) 2, vous avez gagné la partie (voir ligne 955).

Notez que les météoroïdes sont représentés en jaune (14) et en vert (10), et non en blanc (15), comme les astéroïdes. Pourquoi ?

Un projectile sort du centre du vaisseau spatial, là où se trouve le canon (représenté en blanc).

Si les météoroïdes étaient également blancs, l’instruction POINT détecterait immédiatement un tir erroné.

METEOR.BAS vous offre les éléments essentiels d'un jeu de type Asteroids ; cependant, il reste encore beaucoup de travail à accomplir pour coder un véritable clone d'Asteroids.

Ajouter des météoroïdes flottant à l'écran n'est qu'une première étape, car il faut également programmer une physique réaliste pour chacun d'eux lorsqu'ils se désintègrent, ainsi que lorsqu'ils entrent en collision (ce qui est ignoré dans METEOR.BAS).

Une série de tableaux, plutôt que de nombreuses variables ponctuelles, serait plus appropriée.

De plus, vous pourriez envisager d'ajouter des soucoupes volantes, comme dans Asteroids, qui tirent sur votre vaisseau.

Quelle que soit votre approche, vous devrez optimiser le principal obstacle à tout jeu d'action sur GW-BASIC : le scintillement incessant et agaçant des objets en mouvement.

Des pauses bien placées (à l'aide de boucles) et des instructions conditionnelles utilisées uniquement lorsque cela est absolument nécessaire peuvent contribuer à réduire, sans toutefois l'éliminer complètement, le scintillement.

Il est intéressant de noter que METEOR.BAS fonctionne assez mal sur la version Mac OSX de PC-BASIC (avec de nombreux scintillements et des commandes lentes), alors qu'il fonctionne rapidement et de manière fluide sur la version PC.

Ceci démontre qu'il existe des différences non seulement dans les performances des programmes sur GW-BASIC et PC-BASIC, mais aussi entre les versions de l'émulateur.

(Plusieurs autres programmes GW-BASIC présentent des différences similaires selon le système d'exploitation.

METEOR.BAS