3 : Structures de programme

Maintenant que vous savez comment utiliser l'éditeur, vous aurez envie de commencer à programmer, mais retenez un peu votre besoin de gratification. Avant de commencer à programmer, vous devez d'abord réfléchir à ce que vous attendez de votre programme. D'accord, ce que vous voulez vraiment, c'est expérimenter AMOS et voir ce qu'il peut faire. Très bien, allez-y. Parcourez le chapitre sur les commandes AMOS et leur fonction, et voyez ce qui se passe. Vous pouvez tester n'importe quelle commande pour voir ce qu'elle fait réellement, mais certaines commandes ne fonctionnent pas sans un peu de préparation. Par exemple, vous ne pouvez pas charger une image à moins d'en avoir une prête sur disquette ! Vous pouvez vouloir charger et jouer de la musique, mais vous devrez avoir préparé de la musique à charger, et ainsi de suite.

Une fois que vous vous serez amusé avec AMOS et que vous aurez évacué votre curiosité, vous reviendrez à ce livre et voudrez savoir comment faire tout cela correctement.

Dem Bones, Dem Bones

La façon dont votre programme est organisé à l'écran, ce qui va où, est appelée la structure de votre programme. Les programmes AMOS ont une structure similaire à d'autres types de BASIC, et le pire lorsqu'on essaie d'expliquer la meilleure façon de structurer un programme, c'est qu'il n'y a pas vraiment de meilleure façon.

Vous pouvez écrire le programme en un seul bloc, avec des lignes de code appelant d'autres lignes de code dans tous les sens, et c'est ce que j'appellerais une approche linéaire. L'autre grande méthode consiste à utiliser des sous-programmes et des procédures (Procs), où vous avez un programme principal qui pilote toutes les autres parties du programme, lesquelles peuvent être ajoutées ou retirées sans trop nuire à la structure. C'est cette approche modulaire que je préfère. En fait, en parcourant ce livre, vous trouverez des routines que vous pourrez inclure dans vos programmes, et si vous suivez l'approche modulaire, il sera bien plus facile de les intégrer.

Proc et roule

Les procédures sont au c?ur de ce qui rend AMOS si puissant en tant que langage de développement. En fait, toutes les versions bien structurées du langage BASIC disposent d'un système de procédures, et AMOS ne fait pas exception. Mais si vous venez d'un BASIC plus simple, vous ne vous rendrez peut-être pas compte de ce que vous manquez si vous ne les utilisez pas.

Utiliser les Procs est facile. Imaginez un Proc comme une commande que vous avez ajoutée à AMOS qui fait quelque chose que vous aimeriez que le langage sache faire. Si chaque fonction de votre programme est un Proc, vous pouvez écrire chaque segment séparément et les tester un à un, puis tout combiner dans un grand programme. Au lieu de déboguer tout le programme, vous corrigez les erreurs au fur et à mesure, évitant ainsi les problèmes plus tard.

Pour utiliser un Proc, vous devez d'abord le définir, ce qui se fait avec la commande :

Procedure <nom>

Cela peut être placé au début ou à la fin du code, peu importe, AMOS trouvera la définition tant qu'elle existe. Une fois le Proc défini, il peut être appelé soit par :

Proc NOM

soit simplement en utilisant le nom du Proc.

Exemple simple de Proc

Pour démontrer ce principe, prenez ce petit programme de démonstration :

OYEZ
Procedure OYEZ
Print "Phil South ! Et pourquoi pas ?"
End Proc
    

La procédure est ici une simple routine qui affiche la chaîne "Phil South ! Et pourquoi pas ?" via la commande Print. Chaque fois que vous utilisez le nom de la procédure, ici OYEZ, vous obtenez le même résultat que si vous aviez tapé la ligne Print dans le programme.

Bien entendu, la routine à l'intérieur d'une procédure peut contenir plus qu'une simple commande, voire un petit sous-programme complet, et c'est là toute l'idée. Dans un programme, vous avez une procédure pour chaque partie que vous appelez ensuite depuis une boucle principale. Exemple :

MAIN:
CHECK_COLLISION
MOVIT
SHOT
Goto MAIN

Procedure CHECK_COLLISION
...
End Proc

Procedure MOVIT
...
End Proc

Procedure SHOT
...
End Proc
    

Pliage de Procs

Une fonctionnalité pratique des procédures dans AMOS est qu'elles peuvent être "pliées" pour rendre les listings plus lisibles. Le pliage est activé par la commande Fold/Unfold du menu AMOS. Cela permet de réduire la procédure à une seule ligne. Une fois pliée, vous ne voyez plus que :

Procedure OYEZ
    

Cela fonctionne exactement de la même manière, mais sans afficher tous les détails. Vous pouvez aussi protéger vos procédures en les verrouillant avec le programme Lock.AMOS disponible sur votre disquette AMOS.

Organisation modulaire

Vous pouvez sauvegarder une procédure seule sous forme de fichier, par exemple :

SCREENSAVEPROC.AMOS
    

Il n'est pas nécessaire que le fichier porte le même nom que la procédure, mais cela aide à les identifier. Ensuite, vous pouvez les combiner via la commande Merge dans vos programmes.

Variables partagées et globales

Une variable déclarée dans une procédure est locale par défaut, ce qui signifie qu'elle est invisible en dehors de celle-ci. Si vous voulez qu'elle soit accessible ailleurs, vous devez la déclarer comme partagée :

SNOUT=10 : SNOOT=15 : SNOUT$="Phil"
Procedure SNOUTY
Shared SNOUT, SNOOT, SNOUT$
Print SNOUT, SNOOT, SNOUT$
End Proc
    

Vous pouvez aussi utiliser le mot-clé Global pour rendre une variable accessible partout :

X=20 : Y=50
Global X,Y
TRYIT
Print X,Y

Procedure TRYIT
Print X,Y
End Proc
    

Pour accéder à une variable globale depuis une procédure, utilisez le mot-clé Shared :

Procedure TRYIT
Shared X,Y
Print X,Y
End Proc
    

Paramètres dans les Procs

Vous pouvez passer des valeurs à une procédure comme ceci :

Procedure NIT[A$,X,Y]
...
End Proc

N$="Phil" : A=45 : B=3
NIT[N$,A,B]

...ou directement :

NIT["Phil",45,3]
    

Sortie de Procédure avec Pop Proc

Vous pouvez sortir d'une procédure sans atteindre End Proc avec la commande Pop Proc :

PITIT
Print "Proc terminée"

Procedure PITIT
Input A$
If A$="oui" Then Pop Proc
Print "Proc NON terminée"
End Proc
    

Structures de boucle

AMOS propose plusieurs types de boucles : While...Wend, Repeat...Until, et Do...Loop. Exemple :

X=0
While X<10
 Inc X
 Print X
Wend
Print "terminé"
    
X=0
Repeat
 Inc X
 Print X
Until X>10
    
X=0
Do
 Inc X
 Print X
 If Mouse Key=1 Then Exit
Loop
    
X=0
Do
 Inc X
 Print X
 Exit If X>10
Loop
    

AMAL

AMAL est le langage d'animation d'AMOS. Vous pouvez l'insérer ligne par ligne :

A$="ligne de code AMAL"
A$=A$+"autre ligne AMAL"
    

Ou utiliser l'éditeur AMAL pour créer des animations enregistrées en .abk et accédées depuis la mémoire.

Musique et Graphismes

La musique peut être jouée depuis une banque mémoire :

Music 1
Music Off
    

Pour les modules de trackers :

Track Load "mod.nomdufichier",3
Track Play
Track Loop On
Track Stop
    

Types de variables

Il existe des variables alphanumériques (avec $) :

A$="Truc"

...et numériques :

Z=3

Pour les nombres réels (avec décimales), utilisez # :

P#=3.142
    

Pour les notations binaires et hexadécimales :

%Binaire
$Hexa
    

C'est à peu près tout ce que vous devez savoir pour démarrer. Maintenant commence le voyage pénible à travers AMOS, en espérant visiter tous ses petits coins importants.

← Retour au sommaire