Search this site
Embedded Files
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
  • More
    • Accueil
    • BBC BASIC
    • BBC OS
    • BBC MODULES
    • RUBRIQUES
    • LIENS

⇨ MENU ⇨ BBC BASIC

MODE

DESCRIPTION.


L'instruction MODE définit les caractéristiques de la fenêtre de sortie ou renvoie le mode actuellement actif pour MODE.




SYNTAXE.


MODE mode

kmode = MODE




REMARQUES.


mode doit être un nombre entier compris entre 0 et 35.


BBC BASIC pour SDL 2.0 démarre dans un mode d'affichage par défaut, avec du texte noir sur fond blanc. Lors de l'exécution d'une instruction MODE, les dimensions de la fenêtre sont adaptées à ce mode, avec la couleur blanc pour l'avant-plan et noir pour l'arrière-plan par défaut, pour les dessins et les textes.


Lors de l'appel d'une instruction MODE, la fenêtre de sortie est vidée et tous les paramètres graphiques et textuels (couleurs, origine, etc.) sont réinitialisés aux valeurs par défaut, puis, si besoin, elle est redimensionnée.


Pour connaitre le mode actuellement actif, on utilisera la forme kmode = MODE. Si aucun mode n'a été activé, MODE retournera -1. Si le mode sélectionné est le mode personnalisé avec la commande VDU 23 , 22 , ... MODE retournera 255. 


Avec BBC BASIC SDL 2.0 une unité graphique corresponds en réalité à deux unités d'image, ou pixels. Par exemple, en MODE 8, la fenêtre de sortie a une surface graphique de 640 x 512 points soit une surface d'image de 1280 x 1024 pixels.

En plus des modes proposées par le BBC BASIC pour SDL 2.0, il est possible de personnaliser les caractéristiques de fenêtre de sortie avec le commande VDU 23 , 22 , largeur ; hauteur ; caract_largeur , caract_hauteur , palette , encodage. De plus MODE mode est équivalent à VDU 22 , mode. Voir la commande VDU pour plus de détails.

IMPORTANT : dans BBC BASIC pour SDL 2.0, la modification ou (ré)initialisation de la fenêtre de sortie par l'appel de l'instruction MODE supprime la définition des caractères personnalisés modifiés avec la commande VDU 23 et rétablit leur graphisme d'origine. Il faudra donc veiller à bien les redéfinir, si l'utilisation de caractères personnalisés sont toujours requis pour la suite du programme.



Pour connaitre les dimensions, en unités graphiques BBC BASIC, et uniquement pour BBC BASIC SDL 2.0, on consultera la variable système : 

- @size.x% pour la largeur de fenêtre de sortie ;

- @size.y% pour la hauteur de la fenêtre de sortie.


Comme les valeurs retournées par ces deux variables système sont exprimées en unités graphiques BBC BASIC, il faudra les multiplier par 2 pour obtenir le nombre de pixels réellement disponibles pour chacune de ces axes.


Rappel : quand on fait appel à une variable système, il est conseillé de fait marque une légère pause au programme avec la fonction WAIT() , en général WAIT( 10 ), afin de s'assurer que les traitements en cours sont bien terminés et que les valeurs de ces variables ont bien été mise à jour.

MODE 8

WAIT( 10 )

PRINT "Unites graphiques : " ; @size.x% ; " x " ; @size.y% ; " points."

PRINT "Dimentions reelles : " ; ( @size.x% * 2 ) ; " x " ; ( @size.y% * 2 ) ; " pixels."




La fenêtre obtenue avec l'instruction MODE 8, est une bonne configuration polyvalente, en s'adaptant aisément à la plupart des ordinateurs, ce qui permettra de déplacer son script sur d'autres machines sans avoir à adapter le code du programme en fonction de la configuration de l’hôte. L'option MODE 8 permet d'afficher :

- du texte en 80 colonnes sur 32 lignes ;

- des dessins en 1280 pixels de large sur 1024 pixels de haut 

- soit 640 x 512 unités graphiques ; 

- en 16 couleurs.



IMPORTANT : bien qu'elles cohabitent, en se chevauchant, dans la fenêtre de sortie, la fenêtre graphique et la fenêtre textuelle sont bien 2 surfaces différentes. A l'initialisation d'une nouvelle fenêtre de sortie, les fenêtres textuelle et graphique s'étendent sur la totalité de la fenêtre de sortie du BBC BASIC, mais leur taille et leur position peuvent être modifiées, indépendamment l'une de l'autre, et elle pourront être restaurées à leur valeur initiale avec la commande VDU 26.


L'instruction CLS efface la fenêtre textuelle, alors L'instruction CLG supprimera le contenu de la fenêtre graphique. Si toute ou partie des fenêtres textuelle et graphique sont superposées, la couleur d'arrière-plan de la zone commune sera définie par la dernière commande d'effacement exécutée. Les textes sont affichés en fonction de la position du curseur texte et les dessins sont tracés en tenant compte du curseur graphique.

MODE 8

VDU 28 , 30 , 17 , 52 , 8

VDU 24 300 ; 250 ; 750 ; 900 ;

GCOL 129 : CLG

COLOUR 132 : CLS

FOR ktest = 0 TO 127

COLOUR ktest

PRINT "BBC BASIC for SDL 2.0"

GCOL RND ( 16 )

LINE RND( 1280 ) , RND( 1024 ) , RND( 1280 ) , RND( 1024 )

WAIT( 25 )

NEXT ktest

END


Voir l'affichage des textes pour plus de détails sur la fenêtre textuelle.

Voir les dessins et les graphiques pour plus de détails sur la fenêtre graphique.



La qualité des tracés et des couleurs dépendent beaucoup du MODE utilisé, mais aussi du matériel et de l'environnement : Linux, Windows, navigateur, ... sur le quel le programme est exécuté. Dans certains cas, des tracés, des figures, voire des coloriages peuvent ne pas être affichés, sans qu'une erreur de script en soit responsable. 



Voir le gestionnaire ON MOVE pour gérer les modifications de caractéristiques de la fenêtre de sortie.

Voir le gestionnaire ON CLOSE pour interdire la fermeture de la fenêtre de sortie par l'utilisateur.




RUBRIQUES.


L'affichage des textes pour plus de détails sur les fonctions d'affichage de texte.

Les dessins et les graphismes pour plus de détails sur la création de dessins et de graphismes.

La gestion des couleurs pour plus de détails sur la gestion des couleurs logiques et physiques.




EXEMPLE.


FOR kmode = 0 TO 33

MODE kmode

PRINT  "Appuyez sur une touche pour continuer ... "

PRINT TAB( 5 , 3 ) ;  "MODE " ; kmode 

LINE 20 , 450 , 1220 , 450

FOR kcouleur = 0 TO 15

GCOL kcouleur

RECTANGLE 20 + ( 75 * kcouleur ) , 700 , 74 , 150

RECTANGLE FILL 20 + ( 75 * kcouleur ) , 500 , 74 , 150

NEXT kcouleur

kpause = GET

NEXT kmode

PRINT TAB( 0 , 20 ) ;   "Fin du test. Au revoir."

END

Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de

vos remarques, vos commentaires et de vos suggestions.

Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour

TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER

avec un exemple de résolution à télécharger pour vous inspirer.

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse