Obligement - L'Amiga au maximum

Mardi 03 juin 2025 - 20:43  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : AMOS - Faites vos jeux (Com-Roid)
(Article écrit par Stéphane Schreiber et Yves Huitric et extrait d'Amiga News Tech - janvier 1991)


Après le Pac-Man, voici un autre grand classique des jeux vidéo, j'ai nommé Break-Out. Ou plutôt Arkanoki, puisque ce petit jeu en est fortement inspiré. Contrairement à la dernière fois, où nous n'avions pas employés AMAL, le langage d'animation sous interruption d'AMOS, Com-Roid l'utilise abondamment pour la gestion de la balle bien sûr, mais aussi pour tous les autres BOB que l'on a besoin d'afficher. Le résultat est une animation fluide et hyper-propre avec toutefois une exception, que nous verrons plus loin.

Préparatifs

Mais avant toute chose, vous allez devoir dessiner quelques sprites et icônes à l'aide du Sprite-Designer pour pouvoir profiter de ce génial programme. Voici donc la composition des banques utilisées :

Numéros Tailles Définition
1 16*8 La balle
2 32*8 La raquette
3 à 8 32*32 Animation de l'explosion de la raquette
9 16*16 Motif de remplissage pour le fond
10 à 14 16*8 Animation de la disparition des briques

Note : placez le "hot-spot" (point chaud) de chaque sprite en son centre.

Banque Icônes "ComRoid_lcones.ABK" - sept icônes en 32 couleurs.

Numéros Tailles Définition
1 à 7 16*8 Les sept types de briques
(le type 7 est indestructible)

Vous aurez également besoin de copier depuis les disquettes originales d'AMOS, dans le répertoire "Samples", le fichier Boom.ABK en le renommant en "ComRoid_Sample.ABK".

Enfin, dessinez-vous sous Deluxe Paint un écran de jeu en 320x256 et 32 couleurs, comportant sur sa droite le panneau de contrôle (score, nombre de vies, etc.). La fenêtre de jeu, quant à elle, va des coordonnées (8,8) à (228,242). Compactez cet écran et sauvez-le sous forme de banque, grâce aux quelques lignes suivantes :

AMOS

A noter pour les fainéants de nature qu'ils pourront s'esbaudir devant les talents de graphiste de notre vénéré rédacteur en chef en achetant la disquette que nous n'allons pas manquer de mettre en vente incessamment sous peu.

Le tableau

La définition du tableau est stockée dans... ben, dans le tableau "LEVEL" (ligne, colonne). Chaque brique mesurant 16 pixels de large et la bordure de la fenêtre de jeu mesurant, quant à elle, 8 pixels sur 8 de haut, on en déduit que les coordonnées écran d'une brique sont obtenues par les formules :
  • x_écran = 8+(colonne*16)
  • y_écran = 8+(ligne*8)
On s'en servira dans la procédure DISPLAY_LEVEL lorsque l'on dessinera le tableau.

A l'inverse, les coordonnées-tableau d'une brique à partir de ses coordonnées écran sont calculées grâce aux formules :
  • colonne = (x_écran-8)/16
  • ligne = (y_écran-8)/8
Mais pourquoi donc se masturber les neurones à café à rechercher les coordonnées-tableau d'une brique à l'écran ? Tout simplement pour savoir si la balle a rencontré une brique ou non ! Car en effet, nos briques sont affichées sous forme d'icônes (memory bank 2 en AMOS) et qu'il n'existe aucun moyen de détecter les collisions icône/BOB (et inversement). Cela nous oblige donc à quelques galipettes, dont on se serait quand même bien passé : récupération des coordonnées-écran de la balle, conversion en coordonnées-tableau et vérification de la présence ou non d'une brique à cet endroit.

Si ce test est positif et si la brique n'est pas indestructible (autrement dit, si LEVEL(colonne,ligne) est supérieur à 0 et inférieur à 7), on commence par effacer la brique au moyen de l'instruction "BAR", puis on affiche au même endroit le BOB numéro 3 dont l'animation symbolise la disparition de la brique. Un petit coup de "Rnd" par-dessus tout ça pour décider si une pastille-bonus doit apparaître, et on inverse finalement la direction de la balle. Remarquez que cette inversion est brutale un bon casse-brique moderne se devrait d'effectuer quelques tests supplémentaires pour décider le plus précisément possible dans quelle direction la balle doit repartir, en fonction de son point de collision avec la brique.

C'est d'ailleurs à ce moment-là que se produit un petit effet visuel assez désagréable : comme on est en double tampon mémoire, l'instruction "BAR" agit en fait deux fois, d'abord dans l'écran physique puis dans l'écran logique. Les BOB étant automatiquement effacés avant puis réaffichés après, un petit ralentissement inévitable survient (ou alors, s'il n'est pas inévitable, c'est que j'ai mal cherché ; pourtant, j'ai passé des heures à m'emm... avec les instructions Autoback et consoeurs, sans arriver à faire mieux que ça. Si quelqu'un connaît une astuce...).

T'AMAL ou ?

Cinq chaînes d'animation AMAL ont donc été définies : BAL$ s'occupe de la balle, RAQ$ de la raquette, et BON$ des différents bonus qui tombent. La quatrième, CHRONO$, ne fait rien de visible à l'écran ; il s'agit là d'une astuce que j'ai repiquée à François Lionet dans son excellente initiation à AMOS : par défaut, chaque canal AMAL est attribué au sprite matériel de même numéro. Ici, CHRONO$ est défini sur le canal 0, celui du sprite de la souris. Mais comme on n'utilise pas ce sprite, ses effets ne sont pas visibles à l'écran.

Je trouve ça très rigolo comme manière de procéder. En l'occurrence, CHRONO$ se contente d'incrémenter un compteur de 0 à 500 avant d'augmenter la vitesse de déplacement de la balle. L'interruption AMAL se produisant tout les 1/50e de seconde. je n'ai pas besoin de ressortir tous mes cours de maths de 6e pour calculer que la vitesse de balle augmente toutes les 10 secondes. A noter que certains préfèrent l'augmenter proportionnellement au score, mais je trouve cette manière de procéder plus amusante. Chacun ses goûts. Et enfin, la cinquième chaîne est "statique" : elle définit seulement l'animation (c'est-à-dire la suite d'images) à utiliser pour le BOB numéro 3.

Quant aux registres globaux d'AMAL (RA à RZ), seuls quelques-uns sont utilisés pour communiquer des données d'un canal à un autre ; en l'occurrence, les coordonnées de la balle et de la raquette, la vitesse de la balle et le nombre de bonus en train de tomber.

Perspectives d'améliorations

Oh, bien sûr, il y en a quelques-unes... On n'allait tout de même pas vous mâcher tout le travail, non ? La première, elle est évidente, est de faire en sorte que les bonus en soient réellement, au lieu de se contenter de tomber bêtement jusqu'en bas de l'écran. Ils pourraient par exemple augmenter le score ou donner ces options à la raquette... Deuxièmement, il serait de bon ton de rajouter des petites bestioles qui feraient qu'à embêter le joueur. Et puis, pourquoi pas, autoriser le jeu à deux, la continuation de la partie, et que sais-je encore ? Ça n'est qu'une question d'imagination.

AMOS
AMOS
AMOS


[Retour en haut] / [Retour aux articles] [Article précédent]