TO bliTZ or NoT TO bliTZ... ThAT's tHe QUestiON...
Pour introduire cette rubrique, je pense que la question à se poser est la suivante :
Pourquoi le BlitzBasic ?
A première vue et ce d'après son nom, il n'a pas grand chose d'exceptionnel. Un Basic de plus parmis tant d'autres.
Qu'a-t-il de plus que les autres ? Bonne question et à une bonne question vous avez droit à une bonne réponse.
BlitzBasic vs Amos & Co
Vous connaissez tous l'Amos et ce même si vous ne l'avez jamais pratiqué. A première vue, il s'agit là de deux
Basic destiné à l'Amiga... Mais qu'est-ce qui fait que le Blitz est supérieur ? Pour commencer il faut retourner
au source de l'Amos pour comprendre que ce langage n'est pas né sur Amiga mais sur... Atari ! A l'origine, ce
langage ne s'appelait pas Amos mais STos et après le décolage fulgurant de l'Amiga, l'Amos arriva bien vite
sur nos plate-formes. Le gros problème était que l'Amos ne gérait pas du tout Intuition et qu'il relevait
donc du quasi impossible de créer quoi que se soit qui puisse tourner en multitâche et ce, sans ouvrir son propre
écran. L'autre gros problème avec l'Amos comme avec les autres Basic d'ailleurs, c'est que l'on est obligé
d'utiliser des routines préfabriquées. En bref, avant il fallait choisir entre la performance d'un langage
évolué mais très compliqué à programmer, ou la simplicité du Basic très peu optimisé... avant oui... Mais
entre temps naquit le BlitzBasic...
Basic certe, mais performant
L'idée de base du Blitz était des plus simples ; utiliser le langage Basic le plus simple du monde tout en lui
ouvrant des portes jusqu'alors réservées à l'assembleur ; le tout en parfaite harmonie avec Intuition. En ce sens,
il vous est possible d'utiliser de l'assembleur dans vos programmes et ainsi de vous passer des routines
préfabriquées trop lente à votre goût pour tout optimiser au maximum. Toute la force du Blitz est là.
Simplicitée dans un premier temps, puis optimisation maximum dans un second temps.
Pourquoi pas le BlitzBasic ?
Nous avons maintenant largement vanté les mérites du Blitz alors la question est, qu'y a-t-il à lui reprocher ?
Dans le fond et à première vue pas grand chose, mais dans la pratique... Pour commencer, il faut bien
comprendre que ce langage n'est plus dévelopé et ce depuis un certain temps, bien avant les PPC et la
démocratisation des cartes graphiques. Dans la pratique, ce n'est pas vraiment une catastrophe car tout
repose sur un système de librairies et que bon nombre de développeurs continuent à produire de nouvelles libs
qui vous permettent de quasiment tout faire. A part ça ? Et bien beaucoup de petites choses mais dans la
pratique tous ces inconvénients réunis pèsent bien peu dans la balance face aux milles et unes merveilles
que nous permet de réaliser le Blitz et ce, en seulement quelques lignes. (: J'aurais du faire commercial
chez Acid Software moi... :)
Les bases...
Les routines de base sont très simples. Pour conclure ce prémice au BlitzBasic nous allons ici ouvrir un
simple écran puis une simple fenêtre, faire glisser nos premières lignes de textes. Bref, voici notre premier
slidetext en moins de trente lignes !
-[DEBUT DU CODE SOURCE]-------------------------------------
WBSTARTUP
SCREEN 0,0,0,320,256,1,0,"",0,0
WINDOW 0,0,0,320,256,$0800,"",1,2
RGB 0,0,0,0
RGB 1,15,15,15
a=256
MENUS OFF
REPEAT
WLOCATE 0,a
NPRINT "OBLIGEMENT SCROLL TEXT"
WLOCATE 0,a+8
NPRINT "(c) jAy / grIm PRoJeCT"
WLOCATE 0,a+16
NPRINT " "
WLOCATE 0,a+24
NPRINT "! SIMPLE MAIS EFFICACE !"
WLOCATE 0,a+32
NPRINT " "
WLOCATE 0,a+48
NPRINT "Faites vos propres essais"
WLOCATE 0,a+56
NPRINT "Rajoutez des lignes à volonté !"
WLOCATE 0,a+64
NPRINT " "
a=a-1
VWAIT 2
UNTIL a=-104
MOUSEWAIT
CLOSEWINDOW 0
CLOSESCREEN 0
END
-[FIN DU CODE SOURCE]---------------------------------------
Explications
Je vais maintenant vous expliquer ligne par ligne ce que l'on vient de faire.
WBSTARTUP = Très simple. Cette instruction rend notre programme exécutable depuis le Workbench.
SCREEN a,b,c,d,e,f,g,"h",i,j
a = C'est le numéro de l'écran. Très utile lorsque vous en utilisez plusieurs.
b = La position horizontale du coin en haut à gauche de notre écran.
c = La position verticale du coin en haut à gauche de notre écran.
d = La largeur de l'écran en pixels.
e = La hauteur de l'écran en pixels.
f = La profondeur en bits de l'écran (8 bits = 256 couleurs).
g = Le mode d'affichage... nous verrons cela ultérieurement.
h = Le titre qui apparait dans le barre de menus en haut de l'écran.
i & j = Couleur d'arrière et d'avant plan.
WINDOW a,b,c,d,e,f,"g",h,i
a = C'est le numéro de la fenêtre. Très utile lorsque vous en utilisez plusieurs.
b = La position horizontale du coin en haut à gauche de notre fenêtre.
c = La position verticale du coin en haut à gauche de notre fenêtre.
d = La largeur de la fenêtre en pixels.
e = La hauteur de la fenêtre en pixels.
f = Les drapeaux... nous verrons cela dans un prochain cours.
g = Le nom de notre fenêtre.
h & i = Couleur d'arrière et d'avant plan.
RGB a,b,c,d = sert à définir les couleurs RGB
a = Numéros de la couleur dans la palette.
b = Taux de rouge de 0 à 15.
c = Taux de vert de 0 à 15.
b = Taux de bleu de 0 à 15.
a=256........ bah on met la valeur 256 dans a c'est tout !
MENUS ON ou MENUS OFF = permet d'activer ou de désactiver les menus.
REPEAT = répète ce qui suit jusqu'à ce qu'une instruction lui dise quoi faire (voir UNTIL plus bas).
WLOCATE a,b = On se positionne dans notre fenêtre. "a" définissant l'horizontale et "b" la verticale.
NPRINT "a" = On écrit "a" dans la fenêtre à l'endroit définit par WLOCATE ou à la ligne suivante si pas de WLOCATE.
a=a-1 = On enlève 1 de "a" à chaque passage sur cette instruction.
VWAIT x = On fait une pause de "x" rafraichissement d'écran.
UNTIL a=x = Va avec la fonction REPEAT. On répète une suite d'instruction jusqu'à ce que "a" sois égale à "x".
MOUSEWAIT = Tout est figé tant que l'utilisateur n'a pas cliqué sur la souris.
CLOSEWINDOW a = On ferme la fenêtre "a".
CLOSESCREEN a = On ferme l'écran "a" (Attention ! Toujours fermer toutes les fenêtres avant de fermer l'écran !).
END = Fin de programme. On rend la main au Workbench.
Dernières petites explications
Si dans nos WLOCATE on se décale de 8 en 8, c'est parce que faute d'avoir précisé quoi que ce soit, le système utilise
la police de caractère de base en taille 8... logique non ? ;) Tous ce programme n'est basé que sur un décalage de
l'instruction NPRINT dans une fenêtre... Il existe bien évidemment des solutions autrement bien plus propre et
efficace que celle-ci pour faire slider un texte... Cette méthode à été retenue car elle nous permettait de voir
plusieurs instructions de base qui nous seront essentielles pour la suite de nos cours.
Le mot de la fin
J'attends vos réactions sur le sujet. N'hésitez pas à me contacter, soit
directement en contactant Daff notre redac chef préferé ;)
Dans notre prochain cours, nous essayerons de faire plus ample connaissance avec Intuition, ses fenêtres, ses boutons,...
Mais en attendant... Codez bien !
|