Obligement - L'Amiga au maximum

Samedi 22 juillet 2017 - 12:41  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


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 bobs et vous choisissez la taille de l'objet. Si vous ne connaissez pas encore la différence entre bobs 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]