L'Amiga est un système WIMP, comme vous le savez sûrement. Le concept original d'une interface informatique contenant des Fenêtres, Icônes, Souris et Pointeurs a été développé par Xerox au Palo Alto Research Centre. J'ai un jour interviewé Dan Silva, l'auteur de Deluxe Paint, qui y travaillait, et il disait que la plupart des choses qu'ils y inventent seront rarement utilisées, car elles sont tellement en avance sur ce que nous avons actuellement que cela relève pratiquement de la science-fiction. Pas étonnant que les interfaces WIMP, ou Interfaces Utilisateur Graphiques comme les costards préfèrent les appeler, aient mis autant de temps à s'imposer dans le monde réel.
Lorsque l'Amiga fut conçu en 1985, les interfaces graphiques étaient à la mode, si bien que les concepteurs très visionnaires y ont intégré une souris et une interface graphique (gooey) appelée Workbench. La manière d'Accéder aux fenêtres et aux menus avec AmigaBASIC était adéquate mais limitée. Ce n'est qu'avec AMOS que nous pouvons vraiment déchaîner toute la puissance des fenêtres et des menus.
Si ce que vous avez en tête pour votre programme AMOS n'est pas un jeu mais plutôt ce que l'on appellerait un programme utilitaire ou de productivité, alors vous devrez maîtriser les aspects fenêtrés d'AMOS. Une simple fenêtre avec des menus déroulants peut sembler un peu fade, bien qu'il existe des moyens de les rendre plus attrayantes, mais elle est totalement fonctionnelle. Une fenêtre est fondamentalement une petite zone indépendante de texte et de graphismes sur l'écran.
Nous verrons plus tard comment rendre les choses un peu plus intéressantes, mais pour l'instant, nous allons voir comment créer des programmes simples basés sur des fenêtres.
Pour ouvrir une fenêtre à l'écran, vous devez utiliser la commande WIND OPEN, comme ceci :
Wind Open 1,10,10,50,10
Cela ouvrirait par exemple une fenêtre à l'écran appelée fenêtre 1, dont le coin supérieur gauche serait à la position 10,10 sur l'écran, avec une largeur de 50 caractères et une hauteur de 10. L'avantage pratique de tout cela est que vous pouvez avoir deux ou plusieurs fenêtres à l'écran, chacune ayant son propre texte affiché, comme dans cet exemple :
Rem * Two Windows.AMOS * Rem Screen Open 0,640,200,16,Hires Cls 0 Flash Off Paper 7 : Wind Open 1,0,0,40,20 : Print "Here is a win- dow..." Paper 4 : Wind Open 2,320,0,40,20 : Print "So this is a window, eh?" Wait Key Window 1 : Paper 7 : Print "And I can print..." Wait Key Window 2 : Paper 4 : Print "...to any one I choose..." Wait Key Window 1 : Paper 7 : Print "...just by saying Window x..." Wait Key Window 2 : Paper 4 : Print "...and typing whatever I want..." Wait Key Window 1 : Paper 7 : Print "...and up it pops in each..." Wait Key Window 2 : Paper 4 : Print "...window I specify!!!" Wait Key
Chaque fois que vous appuyez sur une touche dans ce programme, le texte suivant apparaît dans la fenêtre spécifiée. Bien entendu, vous pouvez pousser cela à l'extrême, mais seulement si cela ne vous dérange pas que les gens ne puissent plus lire le texte à cause du trop grand nombre de fenêtres !
Bien que les fenêtres que vous obtenez dans AMOS ne soient pas exactement les mêmes que celles auxquelles vous êtes habitué dans AmigaDOS, elles offrent tout de même une variété de styles et de formes, et peuvent se comporter comme de vraies fenêtres avec un minimum de modifications. Par exemple, vous pouvez les redimensionner, voire ajouter des gadgets comme les poignées Intuition, mais tout cela doit être fait manuellement car Intuition n'est pas chargé lorsque AMOS est en cours d'exécution, hélas.
Le redimensionnement est un bon exemple, voyons cela :
Rem * Resizing Window.AMOS * Rem Screen Open 0,640,256,16,Hires Paper 0 : Cls 0 Wind Save Reserve Zone 1 Wind Open 1,10,50,20,20,1 Border ,0,4 Title Top " Resize me, babe " Set Zone 1,10,50 To 10+160,50+160 Do If Mouse Key=1 and Mouse Zone=1 GX1=10 : GY1=50 : RESIZE Reset Zone 1 : Set Zone 1,GX1,GY1 To GX2,GY2 SX=(GX2-GX1)/8 : SY=(GY2-GY1)/8 Wind Size SX,SY End If Print "AMOS: the only way to fly. "; Loop
Procedure RESIZE Shared GX1,GX2,GY1,GY2 Gr Writing 2 Repeat If Mouse Key=1 GX2=X Screen(X Mouse) : GY2=Y Screen(Y Mouse) OGX=GX2 : OGY=GY2 While Mouse Key=1 Box GX1,GY1 To GX2,GY2 GX2=X Screen(X Mouse) : GY2=Y Screen(Y Mouse) Box GX1,GY1 To GX2,GY2 Wend Box GX1,GY1 To OGX,OGY Box GX1,GY1 To GX2,GY2 : GOTCHA=True If GX1>GX2 : T=GX1 : GX1=GX2 : GX2=T : End If If GY1>GY2 : T=GY1 : GY1=GY2 : GY2=T : End If End If Until GOTCHA Gr Writing 1 End Proc
Ce petit programme est une astuce sympathique. Une fenêtre apparaît à l'écran et vous pouvez tirer le coin inférieur droit tout en cliquant avec le bouton gauche de la souris. La fenêtre peut alors être redimensionnée à n'importe quelle taille sur l'écran, et lorsqu'on relâche le bouton, la fenêtre s'ajuste à cette nouvelle forme.
Ce petit programme est une astuce sympa. Une fenêtre apparaît à l'écran et vous pouvez tirer sur le coin inférieur droit tout en cliquant avec le bouton gauche de la souris. La fenêtre peut alors être redimensionnée à n'importe quelle taille sur l'écran, et lorsque vous relâchez le bouton, la fenêtre prend cette nouvelle forme. Et mieux encore, comme il s'agit d'une fenêtre AMOS, la ligne de texte remonte automatiquement en s'ajustant à la nouvelle taille de la fenêtre chaque fois que vous la redimensionnez avec la souris.
Pour sélectionner quelque chose à l'écran (contrairement au code Intuition très pratique qui fait tout pour vous), vous devez dessiner une fenêtre, puis définir une Zone autour d'elle pour détecter la présence d'un clic de souris. Une fois la présence détectée, vous devez voir où le curseur se déplace, puis redimensionner la fenêtre avec WIND SIZE
.
Dans ce programme, nous commençons par ouvrir un écran en haute résolution et régler les couleurs (bla bla) comme d'habitude. Ensuite, nous activons WIND SAVE
, ce qui signifie que nos fenêtres sont intelligentes et ne corrompent pas ce qui se trouve en dessous. C'est vraiment génial car cela signifie que vous pouvez ouvrir une fenêtre au-dessus d'un écran de jeu par exemple, comme un fichier IFF, et rien sur l'écran ne sera effacé lorsque vous fermerez la fenêtre.
Ensuite, nous faisons RESERVE ZONE
, ce que vous devez faire à chaque fois que vous allez utiliser SET ZONE
. Cela signifie que si vous écrivez :
Reserve Zone 1
vous dites en gros : « je vais définir une zone plus tard dans le programme, donc réserve-moi de la mémoire pour ça et je reviendrai plus tard ».
Maintenant nous définissons toutes les caractéristiques de la fenêtre que nous allons créer, dans ce cas la Fenêtre 1 est une fenêtre de 20x20 caractères, dont le coin supérieur gauche est situé à la position 10,50 sur l'écran. Après cela, nous utilisons les fonctions BORDER
et TITLE TOP
pour décrire un peu plus la fenêtre, comme le texte du titre, en l'occurrence le moins que l'on puisse dire « Resize me, babe », et les couleurs de la bordure.
La partie suivante est la plus intéressante. Ensuite, nous ouvrons la Zone que nous avions promis plus tôt. Elle couvre la zone occupée par la fenêtre, et on le fait en spécifiant le numéro de Zone, ici 1, ainsi que les coordonnées du coin supérieur gauche et du coin inférieur droit de la Zone. (Le coin inférieur droit est ici calculé paresseusement en multipliant les valeurs supérieures gauches par 160, c?est-à-dire 8*20, 8 étant le nombre de pixels par caractère, et 20 la largeur de la fenêtre.)
Nous entrons maintenant dans la boucle principale du programme. Celle-ci vérifie les fonctions MOUSE KEY
et MOUSE ZONE
pour voir si la souris se trouve dans la Zone et si le bouton gauche de la souris est enfoncé. Si c'est le cas, la procédure RESIZE
est activée.
La procédure RESIZE
effectue alors tout le travail : elle crée un effet d?élastique (rubber band) pour montrer où se trouvent les côtés de la fenêtre, modifie les variables contenant les coordonnées de la fenêtre, et vérifie si le bouton de la souris a été relâché grâce à une boucle WHILE...WEND
. Une fois le bouton relâché, la fenêtre est redessinée à la nouvelle taille.
Une fois les nouvelles coordonnées enregistrées, l?ancienne Zone est annulée puis redéfinie à la nouvelle taille, et tout est prêt pour recommencer.
Au fait, ne réduisez pas la fenêtre trop petite sinon vous risquez de faire planter le programme avec une erreur Window Too Small. La raison est que les fenêtres ont besoin d?espace pour leur bordure, et si cet espace n?est pas suffisant, AMOS ne peut pas dessiner la fenêtre, ce qui provoque une erreur.
Vous pourriez bien sûr prévoir une routine de capture d?erreurs (error trapping) qui dirait : si la fenêtre est trop petite, la redessiner avec la taille minimale. Je vais laisser ce petit projet fermenter dans votre esprit pendant un moment et passer à ce qui rend les fenêtres AMOS encore plus amusantes : les sliders.
En plus des fenêtres, vous pouvez aussi ajouter des sliders (barres de défilement) à vos écrans, comme ceux que vous voyez sur les écrans classiques de l'Amiga. Par exemple :
Rem * Slider bars.AMOS * Rem Screen Open 0,640,256,16,Hires Flash Off : Curs Off : Double Buffer : Cls 0 Paper 0 : Pen 4 Set Slider 2,4,11,12,4,5,6,9 Reserve Zone 2 Set Zone 1,0,175 To 319,195 HSLIDE[10] : Screen Swap : Wait Vbl : HSLIDE[10] Set Zone 2,0,0 To 25,170 VSLIDE[10] : Screen Swap : Wait Vbl : VSLIDE[10] Autoback 0 Do If Mouse Zone=1 and Mouse Key X=X Screen(X Mouse) If X<>XM and Mouse Key=1 : XM=X : End If End If If Mouse Zone=2 and Mouse Key Y=Y Screen(Y Mouse) If Y<>YM and Mouse Key=1 : YM=Y : End If End If Locate 5,0 : Print "X slider=";X;" " Locate 22,0 : Print "Y SLIDER=";Y;" " VSLIDE[Y] : HSLIDE[X] Screen Swap : Wait Vbl Loop Procedure HSLIDE[X] Hslider 0,180 To 319,190,319,X,5 End Proc Procedure VSLIDE[Y] Vslider 0,0 To 10,170,170,Y,5 End Proc
Bon, d'accord, je n?ai jamais vu de sliders tout à fait comme ça auparavant, mais vous non plus ! Toute la configuration des sliders se fait avec la commande SET SLIDER
au début. Comme pour notre fenêtre redimensionnable, les sliders doivent avoir une Zone autour d?eux pour fonctionner. Donc, si vous voulez que les fenêtres et les sliders se redimensionnent dans la même zone, vous allez devoir faire des calculs très astucieux ou vous assurer que vos Zones ne se croisent jamais.
Dans ce cas, les Zones entourent les sliders, et elles détectent la souris de la même façon que précédemment. Mais cette fois, au lieu de redimensionner la barre, elle repositionne simplement le curseur dans le slider à la position de la souris. Vous pouvez ensuite utiliser cette position pour faire défiler un écran ou du texte dans une mémoire tampon, ou toute autre action du genre. Toutes les raisons habituelles de vouloir saisir un slider et le faire glisser, en fait.
Le texte dans vos programmes est quelque chose que l'on prend facilement pour acquis. Je l?ai fait par le passé, et je sais qu?il est difficile de penser au-delà de ce qui était possible dans le vieux AmigaBASIC un peu poussif, ce qui constitue l?expérience de programmation de la plupart des gens avant de découvrir AMOS. Mais AMOS ouvre des perspectives entièrement nouvelles en matière de programmation, et ce très simplement. Alors voyons comment vous pouvez donner un peu de piquant à vos textes, que ce soit pour un titre de jeu, un tableau des meilleurs scores, ou simplement un écran d?accueil pour un utilitaire.
Le texte dans un programme informatique remplit deux rôles. Les mots écrits à l?écran vous disent quoi faire, et le style avec lequel ils le font vous en dit long sur le souci du détail du programmeur. Les astuces de texte les plus courantes incluent une mise en forme astucieuse et des changements de couleur. Mais les plus impressionnantes sont les variations de police et de taille. C?est comme la différence entre taper à la machine et composer votre texte dans un logiciel de PAO.
Pour utiliser du texte dans une fenêtre, il vous suffit d?utiliser l?instruction PRINT
après avoir sélectionné la fenêtre. Mais vous pouvez aussi changer la police en utilisant GET FONTS
puis WINDOW FONT
pour choisir la police que vous souhaitez utiliser.
Utiliser des polices sur n?importe quel écran, même dans une fenêtre, est facile avec AMOS. Alors examinons un peu plus en détail les types de textes que vous pouvez utiliser.
Il existe deux types de texte dans AMOS : le texte normal et ce qu'ils appellent le texte graphique. Le texte normal est affiché à l'écran avec l'instruction PRINT
, mais le texte graphique doit être placé à l'écran avec TEXT
, comme ceci :
Rem * Simple Font Change.AMOS * Rem Get Fonts Paper 8 Set Font 8 Ink 2 : Text 5,50,"Mastering AMOS"
La commande GET FONTS
scanne la ROM et le répertoire FONTS: sur disque pour trouver les polices, et SET FONT
sélectionne la police appropriée dans l'ordre de priorité. La couleur des polices graphiques est définie avec INK
plutôt que PEN
(car elles sont dessinées, non imprimées, étant des graphismes !)
Une fois que vous maîtrisez le texte graphique, vous pouvez réaliser toutes sortes d'effets techniques, comme ajouter des ombres au texte :
Rem * Fontshade.AMOS * Rem Paper 8 : Curs Off : Hide : Cls Get Fonts For F=1 To 30 If Font$(F)<>"" Clw Print Font$(F) Set Font F For Y=20 To 150 Step 20 SHAD[10,Y,"Mastering AMOS",1] Next Wait Key End If Next Procedure SHAD[X,Y,A$,D] Gr Writing 0 Ink 0 For DX=-D To D Text X+DX,Y-D,A$ = Text X+DX,Y+D,A$ Next For DY=-D+1 To D-1 Text X-D,Y+DY,A$ : Text X+D,Y+DY,A$ Next Ink 2 : Text X,Y,A$ End Proc
Cela utilise le mode JAM1 via la commande GR WRITING
pour garantir un bon rendu. Si vous êtes vraiment malin, vous pouvez même ajouter une ombre portée en modifiant simplement les deux dernières lignes :
Ink 2 : Text X-2,Y-2,A$ End Proc
Cela décale l'impression finale des caractères en blanc vers le haut et la gauche de l'ombre noire, créant ainsi une ombre portée. Expérimentez avec le code et voyez combien d'effets vous pouvez obtenir. Par exemple, pourquoi ne pas imprimer la dernière fois avec la même couleur que le PAPER
pour obtenir un texte en contour ? Ou pour quelque chose de plus sophistiqué :
Voilà ! Vous avez une méthode pour transformer n'importe quelle police en bas-relief. Malin, non ?
Des effets plus exotiques peuvent être obtenus avec le programme CText d'Aaron Fothergill, qui pousse le texte graphique à l'extrême. Si vous obtenez ce programme (auprès du club AMOS d'Aaron ou de Deja Vu Software), vous pouvez créer une police dans Deluxe Paint et l'inclure dans votre programme comme les pros.
La police est stockée dans un fichier image IFF (comme l'exemple affiché sur cette page), puis scannée dans CText une lettre à la fois. Vous pouvez ensuite l'afficher à l'écran comme du texte ordinaire, voire créer un message défilant sur un autre écran. Mais je reviendrai sur tout cela plus en détail au Chapitre 7.
Vous pouvez aussi modifier l?apparence du curseur, pas seulement l?activer ou le désactiver avec CURS OFF
. Si le curseur vous gêne, le modifier peut être plus adapté.
SET CURS
permet d?entrer un petit graphique en guise de curseur, comme ceci :
Rem * Arrow Cursor.AMOS * Rem C1=%1000OO00 C2=%1000OOO C3=%1000O0 C4=%1000O C5=%1000OO C6=%1000OO0 C7=%1000OOO0 C8=%O Set Curs C1,C2,C3,C4,C5,C6,C7,C8 Wait Key
Cela ne fera peut-être pas ce que vous pensez. Les chiffres binaires sont tronqués pour supprimer les zéros initiaux. Quand je les ai saisis, ça ressemblait à ça :
C1=%1000O0OO C2=%010000O0 C3=%O0100000 C4=%0OO10000 C5=%0010000O C6=%O100000O C7=%10000OO0 C8=%00OOO0OO
Là où il y a des 1 dans l?image binaire du curseur, un pixel de couleur 3 apparaît. Ainsi, la petite flèche pointe vers la droite, un peu comme un symbole de supériorité (>) ou le curseur d'AmigaDOS.
Donc vous avez des fenêtres plein l?écran, du texte stylé, des curseurs de formes variées... que manque-t-il à votre application pour être complète ? Exact : les menus.
Si vous programmez autre chose qu'un jeu, vous devrez vous habituer à générer des menus. C'est bien plus facile dans AMOS que dans, disons, AmigaBASIC, où vous devez tout spécifier si précisément que vous pourriez aussi bien les dessiner à la main.
Créer un écran est assez simple avec la commande Screen Open
, mais que faut-il faire pour que les menus agissent comme dans un programme Amiga classique ? Procédons étape par étape :
Screen Open 0,640,256,16,Hires
Simple et efficace. Un écran en moyenne résolution pour donner un look utilitaire. Maintenant nous définissons nos menus :
Menu$(1)=" Projet " Menu$(1,1)="Charger " Menu$(1,2)="Charger sous... " Menu$(1,3)="Sauver " Menu$(1,4)="Sauver sous... "
Voilà le menu 1 configuré, et comme vous pouvez le voir, c'est très simple à nommer. 1 est le titre du menu, et 1,1 est un sous-menu. On fait de même pour le menu suivant, avec une petite subtilité :
Menu$(2)=" À propos de ce jeu " Menu$(2,1)="Démarrer une nouvelle partie" Menu$(2,1,1)="Êtes-vous sûr ?" Menu$(2,1,1,1)="Oui - GO !" Menu$(2,1,1,2)="Non - Annuler" Menu$(2,2)="Nouveau joueur..." Menu$(2,3)="Nouvel adversaire..." Menu$(2,4)="Modifier le terrain"
Vous pouvez continuer à ajouter des sous-menus comme 2,1,1,1,1,1 à l'infini, mais gardez en tête que plus de deux niveaux de sous-menus deviennent vite agaçants pour l'utilisateur. Enfin, nous activons les menus :
Menu On
À ce moment, les menus sont actifs. Vous pouvez bien sûr les désactiver plus tard si vous ne voulez pas que l'utilisateur y accède à un moment donné du programme. Pour finir, quelques détails cosmiques et de diagnostic :
Curs Off : Cls 0 Do Print "Menu= ";Choice(1);" Sélection= ";Choice(2) Loop
Vous pouvez maintenant exécuter le programme. Remarquez comment les numéros de menu et de sélection changent selon l'élément choisi. C'est comme ça que vous savez ce que l'utilisateur a sélectionné : il suffit de lire les variables Choice(1)
et Choice(2)
.
Pour vraiment maîtriser les menus, surtout si vous en avez plusieurs, vous devez utiliser le système de menu automatique d'AMOS avec ON MENU ON
. Cela demande un peu de pratique, mais c'est assez simple. Le programme révisé commence plus ou moins de la même manière :
Screen Open 0,640,256,16,Hires Cls 0 : Curs Off Menu$(1)=" Projet " Menu$(1,1)="Charger " Menu$(1,2)="Charger sous... " Menu$(1,3)="Sauver " Menu$(1,4)="Sauver sous... " Menu$(2)=" À propos du jeu " Menu$(2,1)="Démarrer une nouvelle partie" Menu$(2,1,1)="Êtes-vous sûr ?" Menu$(2,1,1,1)="Oui - GO !" Menu$(2,1,1,2)="Non - Annuler" Menu$(2,2)="Nouveau joueur" Menu$(2,3)="Nouvel adversaire" Menu$(2,4)="Modifier le terrain"
Mais à partir de là, on entre dans un nouveau territoire :
On Menu Proc PROJET,APROPOS On Menu On Menu On Wait Key
Cela active le système de menu automatique d'AMOS et attend soit une sélection depuis les menus, soit l'appui sur une touche. Les PROC
que vous avez mentionnés dans l'instruction ON MENU
sont ensuite définis ailleurs dans le programme, comme ci-dessous :
Procedure PROJET Cls Y=Choice(2) Locate 0,22 : Print "Menu : Projet" Locate 0,23 If Y=1 Then Print "Charger quoi ?" If Y=2 Then Print "Charger sous quel nom ?" If Y=3 Then Print "Sauver quoi ?" If Y=4 Then Print "Sauver sous quel nom ?" OM End Proc Procedure APROPOS Cls Y=Choice(2) Locate 0,22 : Print "Menu : À propos du jeu" Locate 0,23 If Y=1 Then Print "Oui ou non ? Lequel ?" If Y=2 Then Print "Non, je refuse !" If Y=3 Then Print "Il se débrouillera tout seul" If Y=4 Then Print "Fonction non implémentée" OM End Proc Procedure OM On Menu On End Proc
Et voilà. Les réponses sont gérées dans des PROCs
, ce qui simplifie beaucoup les choses. Vous n'avez qu'à vérifier la variable Choice(2)
, car le premier choix (le menu lui-même) est automatiquement déterminé, et vous êtes dirigé vers le PROC
correspondant.
Une fois que vous avez des sous-programmes qui acceptent des entrées depuis les menus, vous disposez de la base d'un programme utilitaire piloté par menu.
C'est un domaine qui contient quelques couches de subtilité rarement abordées. Les raccourcis clavier sont une chose, les menus graphiques en sont une autre (et ça, vous ne pouvez pas le faire facilement avec Intuition, hein ?), sans parler des menus déplaçables.
Il y a tant de choses dans le système de menus d'AMOS que vous seriez surpris. Le système est bien plus flexible qu'AmigaDOS, ce qui pousse à se demander pourquoi certains programment encore en C ou en assembleur.
Voici un programme qui illustre l'utilisation des menus de façon très inhabituelle, et difficilement réalisable avec les menus classiques d'AmigaDOS :
Rem * Bobs on a menu.AMOS * Rem Load "df0:sprite_600/aliens/alien1.abk" Load "df0:sprite_600/space/ship1.abk",1 Flash Off : Cls 0 Get Sprite Palette Menu$(1)="(Bob 1)Insectes" : Menu$(1,1)="(Bob 2)Cet insecte" : Menu$(1,2)="(Bob 3)Cet autre" Menu$(2)="(Bob 21)Vaisseaux" : Menu$(2,1)="(Bob 22)Ce vaisseau" : Menu$(2,2)="(Bob 23)Celui-là" Menu On Do Loop
Ce programme utilise les Bobs du set Sprite_600, prévoyez donc ces fichiers sur df0:. Les Bobs apparaissent dans les menus et fonctionnent comme des menus normaux, avec en plus de superbes images. Ces images peuvent être explicatives, ou même être du texte graphique ! Imaginez vos textes de menu en graffiti ou en nuages, selon le style de votre programme. Vous pouvez faire de même avec des Sprites et des Icônes.
Concevoir un curseur ? Pas la priorité absolue, mais si vous programmez des choses orientées texte, vous serez content de vous débarrasser du curseur AMOS par défaut. Pour tous ceux qui veulent créer leurs propres curseurs, essayez le programme Swiz du disque AMOS PD Library 394. C'est un éditeur de curseurs avec des exemples :
Rem * Alien * Set Curs %00111100,%01111110,%10011001,%10011001,%11111111,%00111100,%00100100,%01100110 Wait Key Rem * Flèche 2 * Set Curs %00000000,%00000100,%00000110,%11111111,%01111111,%00000011,%00000100,%00000000 Wait Key Rem * Grande flèche * Set Curs %11000000,%11110000,%11111100,%11111111,%11111111,%11111100,%11110000,%11000000 Wait Key Rem * Smiley * Set Curs %00111100,%01000010,%10100101,%10000001,%10000001,%10011001,%01000010,%00111100 Wait Key Rem * Petite flèche * Set Curs %10000000,%11000000,%11100000,%11110000,%11110000,%11000000,%11000000,%10000000 Wait Key Rem * Cœur * Set Curs %00000000,%01101100,%11111110,%11111110,%01111100,%00111000,%00010000,%00000000 Wait Key
L'avantage du programme Swiz est qu'il vous permet de vous concentrer sur le design du curseur, tout en sauvegardant les données en ASCII, prêtes à être intégrées à vos programmes.
Vous pouvez aussi jouer avec les curseurs via les commandes Cline
, Cup
, Cdown
, Cleft
et Cright
:
Rem * Cline, Cup & Friends.AMOS * Rem Screen Open 0,640,256,16,Hires Hide : Paper 0 : Pen 4 : Cls 0 Wait 100 : Bell : Print "Salut les copains !" Cdown : Wait 100 : Cdown Bell : Pen 6 : Centre "Le curseur vient de sauter ici" Cdown : Wait 100 Bell : Pen 2 : Print "puis ici..." Cdown : Cdown For LEFT=1 To 50 Cleft Wait 1 Next LEFT Wait 100 : Pen 12 : Bell Print "et maintenant là" Wait 100 : Cdown : Cdown Wait 100 : Cright : Cright : Cright Bell : Pen 14 : Print "Encore plus à droite" For UP=0 To 6 Cup Wait 1 Next UP Wait 100 : Bell : Pen 10 Print "Et finalement ici" Wait 100 Cmove 5,20 Pen 3 : Wait 50 : Print "Ou bien on saute directement avec CMOVE" Wait 100 Pen 4 : Locate ,24 : Centre "ET MAINTENANT, ON EFFACE TOUT UNE LIGNE À LA FOIS" Wait 100 Home : Paper 6 For X=0 To 30 Cline Locate ,X Wait 10 Next Wait 200 Locate ,10 : Pen 2 : Centre "Et voilà, les commandes de curseur !" Wait 500 : Edit
Que faire de ce système de fenêtres, de menus et de textes ? Eh bien, le choix logique est un système d'hypertexte, comme ceux qu'on trouve dans le CanDo d'INOVAtronics ou d'autres. Il suffit de créer des boutons à l'écran avec des Zones, de charger des images depuis un CD ou des fichiers texte dans des fenêtres défilantes, avec des barres de défilement pour le contrôle, et des zones sur certains mots pour aller ailleurs.
Les possibilités sont infinies.