Obligement - L'Amiga au maximum

Mercredi 24 avril 2024 - 13:14  

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 : AmigaBasic - animation et son (déplacement d'objets à l'écran)
(Article écrit par Christian Sager et extrait d'A-News (Amiga News) - avril 1990)


Il faut avouer que programmer des jeux de simulation en BASIC n'est pas l'idéal. Toutefois, il ne faut pas désespérer. Avec un peu de fantaisie vous pourrez réussir à mettre en pratique vos idées. Pour ce faire, je vais introduire les commandes de son et d'animation.

Dans la partie précédente, je vous avais parlé de commandes graphiques. Cette fois-ci, je parle d'animation, c'est-à-dire, le déplacement d'objets graphiques sur votre écran. Comme le mouvement s'accompagne généralement de bruit, je vous parlerai aussi des commandes du son.

Pour commencer correctement et mettre en application immédiatement vos nouvelles connaissances, je vous conseille d'apprendre à connaître l'éditeur d'objet ObjEdit. Les explications, vous les trouverez dans le chapitre 7 de votre livre de l'AmigaBasic où son utilisation est bien expliquée. Je vous livre néanmoins une courte explication pour mémoire.

Après l'appel de l'éditeur, vous devez choisir entre l'édition de sprites ou de BOB et vous choisissez la taille de l'objet. Si vous ne connaissez pas encore la différence entre BOB et sprites, relisez la section correspondante dans votre livre de l'AmigaBasic (qu'un livre serve enfin à autre chose qu'à la garniture !).

Arrivons enfin à quelque chose de pratique. Sur votre disque il y a un tiroir nommé "BasicDemos". Vous y trouverez un fichier du nom de "Ball". Le programme suivant :

OPEN "ExtrasD:BasicDemos/Ball" FOR INPUT AS 1
OBJECT.SHAPE 1,INPUT$(LOF(1),1)

...va vous permettre de l'ouvrir sous le numéro 1. Bien évidemment vous pouvez donner une chaîne...

OBJECT.SHAPE Numéro, Chaîne

...pour définir votre objet. Avant de l'afficher à l'écran, il faut encore définir sa position avec les commandes :

OBJECT.x Numéro,Position-X
OBJECT.y Numéro,Position-Y

Vous placez ainsi l'objet à partir du coin haut gauche vers la droite puis vers le bas. Et avec :

OBJECT.ON Numéro

...votre objet va apparaître à l'écran. Mais l'intérêt va augmenter grâce à l'animation en utilisant :

OBJECT,VX Numéro,Vitesse-X
OBJECT,VY Numéro,Vitesse-Y

...vous déterminez ainsi la vitesse de déplacement par seconde. Une valeur positive pour "Vitesse-X" déplace l'objet de gauche à droite, la valeur négative à l'inverse. Une valeur négative pour "Vitesse-Y" déplace de haut en bas et inversement. Pour donner le mouvement vous devez ajouter :

OBJECT.START Numéro

...qui peut être arrête par :

OBJECT.STOP Numéro

Pour connaître la position, vous utilisez :

OBJECT.X (Numéro)
OBJECT.Y (Numéro)

Ainsi que pour la vitesse :

OBJECT.VX (Numéro)
OBJECT.VY (Numéro)

Votre objet a sa vie propre et s'il cogne contre un bord de l'écran, il reste comme collé. Vous ne lui avez pas dit ce qu'il doit faire. En BASIC, vous utilisez :

ON COLLISION GOSUB Fait

...où "Fait" représente un saut à un sous-programme qui dit ce qui se passe en cas de collision. Au préalable, vous devez activer cette possibilité par :

COLLISION ON

Dans mon cas, l'objet ne peut que réagir contre les bords de l'écran mais avec "COLLISION(0)" vous repérez l'objet qui a touché ou était touché en dernier. Vous reprenez cette fonction en plaçant le numéro donné précédemment et vous obtiendrez le numéro de celui qui a effectué la collision. Si cette valeur était négative, il s'agit du bord haut (-1), gauche (-2), bas (-3), droite (-4) de votre fenêtre.

Le listing 1 vous donne une version améliorée du programme que vous avez dans votre livre sous OBJECT.SHAPE qui, de plus, est bogué. L'erreur du programme ? Vous pouvez la trouver facilement. Recopiez-le et laissez le tourner pendant un certain temps... la balle quittera votre fenêtre à un certain moment ! La différence réside dans le fait que je teste toutes les possibilités de collision et que je remets la balle sur le bon chemin avec la fonction ABS.

AmigaBasic
Avec ce programme, vous chargez le fichier "Ball" de votre disque dur

La raison de cette erreur se situe peut-être dans l'interpréteur lui-même. Qui peut me le dire ? En fait, si nous activons le programme initial du livre et si la balle tape dans le coin à gauche, cela oblige à un double test pour le programme et une perte de temps car la balle touche le bord pour sa troisième collision. Il y a réaction et hop, la balle continue et sort de l'écran ! Je viens de répondre à ma question. C'est la lenteur de l'interpréteur qui en est la cause. Et cette erreur pour un seul objet ! Pendant que vous gérez un objet les autres entrent en collision.

Résultat, les 16 collisions permises sont vite dépassées et l'Amiga ne pouvant les gérer, ils disparaissent de l'écran. La petite astuce est donnée dans le listing 2. En même temps que le test de collision sur l'objet, je teste les autres collisions. En incluant la boucle "FOR... NEXT" et en mettant un "beep", vous pouvez contrôler l'effet.

AmigaBasic
Meilleure manière de tester les collisions

Attention : il y a une erreur dans ce listing. C'est le coup de la ligne sautée et intervertie. Donc à partir de "CLOSE 1", écrivez :

OBJECT,SHAPE 1,style$
FOR a=1 TO nombre
OBJECT.SHAPE a,1

Après un court moment, le beep se transforme en son continu et vous indique que l'AmigaBasic a perdu les pédales ! Il ne peut plus gérer les collisions ! La prochaine fois je vous ajouterai le son. Alors à pluche...


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