|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Non Non, vous n'avez pas sous les yeux un énième tutoriel sur le Blitz Basic, il est plutôt question ici d'un vieil ami oublié, mais néanmoins apprécié : "Le Listing du Mois" (et pourquoi pas de l'Année). Vous l'avez sans doute remarqué, la presse informatique est devenue bien ennuyeuse pour qui n'est pas benchmarkophile ou soucieux de savoir que la version 2004 de la suite bureautique Y est révolutionnaire par rapport à la mouture précédente, car intégrant une méga nouvelle fonction de zigouigoui machintruc qui permet au premier collègue venu de pourrir notre boîte à lettre électronique et de lagger tout l'Internet à grands coups de scripts PPS de 5 Mo. Où donc sont passés les magazines remplis de listings ? Sommes-nous condamnés à lire de la publicité pour des PC bidons, des articles sur la meilleure façon de configurer sa barre des tâches ou des tests d'imprimante/scanner/fax ? Est-ce que ce n'est plus que ça la micro ?! Moi je dis... Moi, je dis "stop". Stop à la misère intellectuelle et culturelle qui ronge les médias et qui nous tire tous vers le bas. Nous sommes autre chose que des parts de marché/cibles produit/temps de cerveau humain/brique dans un mur (oui, il y a un clin d'oeil là). C'est en songeant à tout cela que j'ai eu envie d'utiliser Obligement et l'Amiga pour nuancer (un petit peu) cette triste situation. Voici donc un court programme pas trop mal écrit qui vous permettra, je l'espère, de passer un bon moment... de réflexion. :-) Un simulateur Le code présenté ici est celui d'un simulateur de vie de cellules, classique. Vous pouvez consulter l'index des commandes pour avoir les explications qu'il vous faut. Globalement, le principe de fonctionnement est simple, je vous laisse le plaisir d'étudier le source soigneusement documenté pour voir comment ça marche (bah oui, si je dis tout, c'est moins marrant). Bien entendu, il y a des optimisations possibles, là encore, c'est à vous de jouer ! Les courageux qui seront allés jusqu'au bout auront le plaisir de voir évoluer les petites bêbêtes. Pour l'avoir laissé tourner pendant un moment, je peux vous dire qu'on obtient parfois des trucs surprenants ! Un 68040 à 25 MHz et une résolution de 640x512 sont nécessaires si on veut profiter décemment du spectacle (oui, vraiment, il y a des optimisations à faire :-). A noter que le Blitz ne marche pas sur Pegasos (Cf. notre ami Henes qui me l'a confirmé lors de l'excellente HunoParty 2). Bon code ! Le code source (aussi disponible dans ce fichier)
Index des instructions WBStartup Syntaxe : WBStartup Cette instruction permet à votre programme d'être lancé à partir du Workbench. Si elle est manquante et que vous démarrez votre logiciel à partir du Workbench, le plantage est assuré. WbToScreen Syntaxe : WbToScreen numéro écran Cette instruction attribue un numéro d'écran à celui du Workbench. Cela vous permet d'utiliser l'écran du Workbench comme n'importe quel autre écran pour y ouvrir des fenêtres par exemple. Use Screen Syntaxe : Use Screen numéro écran Indique au programme qu'il doit utiliser l'écran indiqué pour les opérations d'affichage et de saisie. LoadFont Syntaxe : LoadFont numéro attribué à la police,"nom de la police.font",taille,style Cette instruction permet de charger une police de caractères ("fonte" dans le langage amigaïste) à partir du dossier FONTS:. Voici quelques détails concernant le paramètre style :
Use IntuiFont Syntaxe : Use IntuiFont numéro d'une police de caractères chargée au préalable La police de caractères passée en paramètre sera utilisée pour inscrire du texte à l'écran. GTButton Syntaxe : GTButton numéro de la GadgetList du bouton,numéro du bouton,position en X,position en Y,largeur,hauteur,"texte",drapeau Cette instruction crée un bouton attaché à ce que l'on appelle une GadgetList, en quelque sorte un ensemble de composants (boutons, texte...) que l'on attribue à une fenêtre. Le paramètre drapeau optionnel spécifie, entre autres, la position du texte dans ou par rapport au bouton :
Window Syntaxe : Window numéro que l'on veut donner à la fenêtre,position en X,position en Y,largeur,hauteur,drapeaux,"titre",numéro de la couleur du texte utilisée pour le titre de la fenêtre,numéro de la couleur utilisée pour la bordure de la fenêtre,numéro de la GadgetList rattachée (facultatif) Cette instruction crée une fenêtre Workbench. Voici plus de détails sur les drapeaux :
DefaultOutput Syntaxe : DefaultOutput Fait de la fenêtre actuellement active la sortie par défaut (des futures instructions Print par exemple). A noter que DefaultInput existe. AttachGTList Syntaxe : AttachGTList numéro de la GadgetList,numéro de la fenêtre Cette instruction attache un ensemble de gadgets GadTools à une fenêtre ouverte (voir GTButton). Use Window Syntaxe : Use Window numéro de la fenêtre Cette instruction active la fenêtre désignée. Un WindowInput et un WindowOutput sont automatiquement faits sur la fenêtre en question afin d'en faire l'entrée/sortie par défaut. Dim Syntaxe : Dim nom_du_tableau(colonnes,lignes) Cette instruction crée un tableau dont les cellules sont numérotées de 1 à n. Elle est riche en possibilités, je vous renvoie au manuel du Blitz pour en savoir plus. Gosub Syntaxe : Gosub Label Cette instruction indique à l'ordinateur qu'il doit exécuter ce qui se trouve à l'emplacement Label du programme, puis reprendre son cours normal là où il a été interrompu. A ne pas confondre avec Goto. While...Wend Syntaxe : While condition(s) instruction(s) à exécuter Wend Cette instruction appartient à la famille des boucles. Tant que la condition est satisfaite, le cycle se répète. WLocate Syntaxe : WLocate X,Y Cette instruction est utilisée pour spécifier la position du texte dans la fenêtre active. X et Y sont exprimés en pixels et indiquent le décalage à appliquer par rapport au coin supérieur gauche. Syntaxe : Print Texte ou formule Permet d'afficher du texte ou des valeurs numériques sur la sortie standard. Event Syntaxe : Event Cette instruction est similaire à WaitEvent : Elle retourne la valeur IDCMP des événements qui surviennent dans les fenêtres WB, mais se différencie par le fait qu'elle ne bloque pas l'exécution du programme pendant qu'elle attend un événement. Si rien ne se passe, Event renvoie 0. If...EndIf Syntaxe : If condition(s) Then instruction à exécuter OU If condition(s) instruction(s) Else instruction(s) EndIf La bonne vieille condition des familles, dois-je vraiment l'expliquer ? For...Next Syntaxe : For variable=une valeur de départ To une valeur maximale Step valeur à ajouter à variable lors de chaque boucle (optionnel) instruction(s) Next La boucle FOR, un grand classique. Les instructions sont exécutées jusqu'à ce que valeur de départ soit supérieure à valeur maximale. Pour décrémenter au lieu d'incrémenter, on peut spécifier un STEP négatif. DetachGTList Syntaxe : DetachGTList numéro de la GadgetList à libérer Utile pour libérer proprement la mémoire quand on quitte l'application. Free Window Syntaxe : Free Window numéro de la fenêtre à détruire Permet de supprimer de la mémoire une fenêtre dont on n'a plus besoin. End Syntaxe : End Indique la fin du programme. Wline Syntaxe : Wline X1,Y1,X2,Y2,couleur Cette instruction sert à dessiner une ligne (voire plusieurs si on spécifie X3,Y3...Xn,Yn) dans une fenêtre. Je vous laisse jouer avec les couleurs. WBox Syntaxe : WBox X1,Y1,X2,Y2,couleur Cette instruction dessine un rectangle plein dans une fenêtre. X1,Y1 sont les coordonnées du coin supérieur gauche et X2,Y2 celles du coin inférieur droit. Je vous laisse de nouveau jouer avec les couleurs. Return Syntaxe : Return Indique au programme qu'il doit reprendre le cours du programme là où il l'avait interrompu suite à un Gosub.
|