Obligement - L'Amiga au maximum

Dimanche 24 septembre 2017 - 12:39  

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 - 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]