Obligement - L'Amiga au maximum

Samedi 31 mai 2025 - 15:32  

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 - interception d'erreur et algorithme de simulation de système solaire
(Article écrit par Christian Sager et extrait d'Amiga News - novembre 1990)


J'aurais aimé continuer l'étude et la programmation d'algorithme mais cela dépasse largement le stade d'initiation et n'a pratiquement plus rien à voir avec l'AmigaBasic. Toutefois, je ne peux céder au plaisir de vous présenter un algorithme de simulation du système solaire. Ci-après les données des différentes planètes.

AmigaBasic

D'après ma représentation, vous devriez pouvoir écrire ce programme dans n'importe quel langage.

AmigaBasic

Avant de poursuivre cette initiation, j'ai encore été empoisonné par un "Overflow Line Buffer" alors que j'avais encore de la place ! (c'est un des bogues de l'AmigaBasic parmi d'autres). Pour y remédier, je place mon curseur sur un espace que j'efface avec la touche "Back Space". Par contre, la petite boîte "ok" annonce une erreur dans le programme et termine son exécution.

Je vais essayer de vous expliquer la possibilité d'intercepter l'erreur et par là mème de la rectifier et parfois de pouvoir poursuivre le déroulement normal du programme. Une interruption fonctionne de la même manière qu'un GOSUB. Ce n'est pas par un appel du programme que cela fonctionne mais lors d'une action déterminée comme l'utilisation de la souris ou du menu. Pour simplifier la programmation, les concepteurs de l'AmigaBasic vous permettent d'intercepter les messages d'erreur de l'interpréteur mais aussi d'en définir d'autres. Pour cela, on utilise la commande :

ON ERROR GOTO Etiquette

Bon, nous avons intercepté l'erreur, mais quelle erreur ? Pour cela, il existe une variable prédéfinie ERR qui contient le numéro de l'erreur car le BASIC attribue à chaque erreur un numéro (référez-vous à votre livre du BASIC habituel). Remarquez que sur les 255 erreurs possibles, il n'y a que quelques-unes qui ont une explication. Pour afficher ces dernières, on peut utiliser la commande : "ERROR numéro". L'exemple simple, c'est forcer une "SYNTAX ERROR" en plaçant dans votre programme "ERROR 2". Attention, cela ne fonctionne que si vous avez placé en début de programme la commande "ON ERROR GOTO Etiquette". Le programme avant de s'interrompre va sauter à la routine. Dans cette dernière vous pouvez tester la valeur de la variable ERR qui aura bien la valeur 2 pour SYNTAX ERROR. Vous pouvez détourner cette erreur et éviter l'interruption de votre programme. Je l'utilise en mettant une routine avec les principales erreurs accompagnées d'un texte qui explique ce qui arrive (voir exemple).

L'erreur est traitée tant que le programme ne rencontre pas la commande RESUME. Elle s'utilise de deux manières : RESUME seul et le programme retourne à l'endroit qui a provoqué l'erreur et recommence la même chose. Vous pouvez écrire RESUME Etiquette. ce qui obligera le BASIC à faire un saut à cette routine. Attention, cette dernière possibilité est à utiliser avec discernement. Il n'y a que deux cas où cette possibilité se justifie : le saut en fin de programme ou un NEXT à la place de l'Etiquette. Le premier choix est parlant de lui-même, tandis que le second a pour effet de revenir à la ligne immédiatement après celle qui a provoqué l'erreur et permet de poursuivre le programme.

Passons à un exemple pratique. Je vais ouvrir un fichier séquentiel, s'il n'existe pas je le crée, et ajouter du texte puis refermer le fichier. Dans le déroulement du programme cela se présente ainsi :

J'active l'interruption d'erreur et j'ouvre le fichier à lire. Si d'aventure l'erreur 53 s'annonce c'est que le fichier n'existe pas donc je l'ouvre, sinon j'affiche le fichier (voir tableau des messages d'erreurs dans tout livre parlant de l'AmigaBasic). En programmation basic cela vous donne le listing suivant :

AmigaBasic
AmigaBasic

Avant de terminer ce traitement de l'erreur, je vous parlerais encore de la variable système ERL. Vous avez une annonce d'erreur et c'est cette variable qui contient le numéro de la dernière ligne traitée. Dommage que cette variable n'utilise pas d'étiquette, car dans l'AmigaBasic on peut ne pas utiliser de numéro de ligne. Si si, c'est vrai ! Contrairement à l'affirmation d'un éminent confrère de "Joystick" (remarquez que j'ai encore d'autres lectures...), magazine de jeux sur micro et consoles qui dans sa rubrique de "Jeux... Crack AMIGA" annonce invariablement depuis son numéro 1 mensuel (janvier 1990) à celui de septembre (je recopie exactement le texte) :

"Il y a évidemment différents (!) BASIC, le GFA Basic et l'AmigaBasic qui est, lui, fournit avec votre Amiga. Le GFA Basic ne nécessite pas de numéro devant chaque ligne et chaque instruction est sur une ligne. L'AmigaBasic nécessite des numéros de lignes et il est possible de mettre plusieurs instructions sur la même ligne en les séparant avec le signe ":" ". J'ai bien envie d'être caustique... vaut mieux les laisser jouer !

L'interruption "event trapping" est, comme l'indique l'expression américaine, une trappe. Dès qu'un événement déterminé par le programme survient, l'Amiga arrête tout immédiatement afin de traiter l'erreur puis revient et poursuit le programme. Je vous ai donc déjà parlé de deux formes d'interruptions : le traitement d'erreur et précédemment ranimation graphique et ses collisions. Une autre possibilité c'est le test d'appui sur un bouton de souris et son déplacement dans un menu. Vous savez déjà que les deux boutons de la souris ont des fonctions différentes. Le bouton de droite sert au choix dans un "Pull Down menu" (menu déroulant) tandis qu'avec l'autre vous sélectionnez les icônes ou gadgets. Cette différence est notée dans l'AmigaBasic par :

ON MOUSE GOSUB Etiquette
ON MENU GOSUB Etiquette

Je vais vous expliquer la commande pour la souris. Si vous activez le bouton gauche de la souris, vous utilisez la fonction MOUSE(n). Selon la valeur de "n", vous connaîtrez le statut de votre souris. La valeur la plus importante est MOUSE(0). Le BASIC retient les coordonnées du point de départ et d'arrivée de la souris. Pour simplifier, les valeurs impairs sont pour les coordonnées de "x" et les pairs pour celles de "y". Rien ne vaut l'expérience. Je vous propose donc un petit exemple :

AmigaBasic

Tapez ce programme puis bougez votre souris sans actionner de bouton, et toutes les autres possibilités (lire Clés pour Amiga page 70-71 pour l'instruction MOUSE).

Dans l'exemple suivant, je rajoute le timer, autre interruption. A vous d'expérimenter les réactions de ce petit programme.

AmigaBasic
AmigaBasic

Ce programme s'arrête après 20 secondes si la souris n'a pas été utilisé. Ceci se fait en fin de programme avec le sous programme "Montre".

Le bouton de droite a l'exclusivité des menus. Vous devez indiquer à l'interpréteur le nombre de menus (maximum 10) et de sous-menus (maximum 19). Ces sous-menus (items) ne peuvent pas avoir de sous-items (dans l'état actuel de nos connaissances, mais je vous montrerais plus tard comment contourner cela grâce aux bibliothèques). Je vous propose un programme de menu que vous pourrez adapter comme vous le voulez, sans pour autant nécessiter une réécriture des titres des différents menus. C'est un cadeau d'A-News... Les explications suivront (c'est évidemment pour le prochain numéro si j'oublie pas !).

AmigaBasic
AmigaBasic

Voilà, avec tout ça vous pouvez voyager dans notre système solaire sans avoir à apprendre des langues étrangères comme le C.


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