Manuel - Partie 9 : Conseils et Astuces
Meilleures pratiques de programmation, optimisation du code source BASIC et astuces.
Conseils
1 – Généralités
2 – Monde 3D
2.1 – Comment créer un monde 3D ?
2.2 – Comment avoir un monde 3D prenant tout l’espace disponible ?
2.3 – Comment avoir deux mondes 3D avec des objets 3D ?
2.4 – Comment colorer le fond d’un monde 3D ?
2.5 – Comment utiliser des rotations 3D ?
2.6 – Comment déplacer un objet 3D ?
2.7 – Comment utiliser un objet 3D créé dans le format 3DS (Studio 3D Max) ?
2.8 – Comment utiliser un objet 3D créé dans le format de MD2 (Quake) ?3 – Objets
3.1 – Comment colorer le fond d’un FORM ?
3.2 – Il est conseillé de faire une pause après la coloration d’un FORM
3.3 – Comment colorer le fond d’une image ?
3.4 – Comment créer un MENU ?
3.5 – Comment utiliser LEFT, TOP, WIDTH, HEIGHT ?
3.6 – Comment mettre un BUTTON (ou un autre objet) sur un autre FORM que FORM numéro 0 ?
3.7 – Comment placer un MENU sur un autre FORM que FORM numéro 0 ?
3.8 – Comment utiliser un OPEN_DIALOG pour choisir un fichier ?
3.9 – Comment utiliser un SAVE_DIALOG pour sauvegarder un MEMO dans un fichier ?
3.10 – Comment charger une image avec un fichier, dont le nom absolu est dans a$ ?
3.11 – Comment charger une image avec un un fichier choisi avec un OPEN_DIALOG ?
3.12 – Comment charger un MEMO avec un fichier choisi avec un OPEN_DIALOG ?
3.13 – CAPTION est possible seulement avec BUTTON, OPTION, CHECK, ALPHA ou FORM
3.14 – TEXT est possible seulement avec EDIT ou COMBO
3.15 – Comment utiliser les barres ?4 – Multimédia : sons, musiques, films
4.1 – Comment charger et jouer un fichier de musique de MIDI ?
4.2 – Comment charger et jouer un fichier son WAV ?
4.3 – Comment charger et jouer un fichier de musique MP3 ?
4.4 – Comment charger et jouer un film avec un fichier, dont le nom absolu est dans a$5 – Divers
5.1 – Comment utiliser INKEY$ ?
5.2 – Comment utiliser les sous-programmes ?
5.3 – Comment utiliser les événements ?
1 – Généralités
1.1 – Quelle est la structure d’un programme ?
La structure conseillée d’un programme est la suivante :
1) Déclaration : DIM et LABEL
2) Programme principal : définition des composants (objets), calculs, comportement, END
3) Traitement d’événements
Exemple : création d’un bouton qui affiche « Cliquez sur moi », puis « Salut ! » quand on a cliqué sur lui :
rem— déclaration des variables utilisées —
DIMA$
rem— déclaration des étiquettes utilisées —
LABELclk
rem******** PROGRAMME PRINCIPAL ********
A$ = « Cliquez sur moi«
rem— création d’un OBJET —
BUTTON1
remlui donner un petit texte (son « intitulé »)
CAPTION1,a$
remdéfinir le traitement quand il est cliqué
ON_CLICK1,clk
rem******** FIN DU PROGRAMME PRINCIPAL ********
END
rem— TRAITEMENT DES ÉVÉNEMENTS—
Clk:
CAPTION1, »Salut !«
RETURN
2 – Monde 3D
2.1 – Comment créer un monde 3D ?
1) Tout d’abord, crééez un objet pour visualiser votre monde 3D avec le mot-clé
SCENE3Det lui donner un numéro :
SCENE3D1
Une caméra 3D et une lumière 3D sont alors automatiquement créés avec votre
SCENE3Det maintenant vous pouvez les utiliser (pour les positionner et viser un point avec la caméra).
2) Placer des objets dans votre monde 3D.
Vous pouvez créer des objets 3D prédéterminés :
3D_BOX
3D_CUBE
3D_CONE
3D_TORUS
3D_SPHERE
3D_CYLINDER
3D_TEXT
3D_TEAPOT
3D_DODECAHEDRONOu des objets 3D formatés :
3D_MESH(en "3DS", format de Studio 3D Max)
3D_ACTOR(en "MD2", format de Quake)Avec le mot-clé correspondant, vous lui donnez un numéro 3D :
3D_TEAPOT1
3) Vous pouvez alors les déplacer, les dimensionner, les faire tourner, les colorer, leur donner une texture…
2.2 – Comment avoir un monde 3D emplissant tout l’espace disponible ?
Créer un monde 3D :
SCENE_3D1
Lui donner tout l’espace disponible dans FORM numéro 0 :
FULL_SPACE1
Remarque : pour donner tout l’espace de l’écran à FORM numéro 0 :
FULL_SPACE0
En combinant les 2 commandes, vous avez un monde 3D prenant tout l’écran :
FULL_SPACE0 :remFORM 0 prend tout l’espace sur l’écran
SCENE3D1
FULL_SPACE1 :remSCENE3D prend tout l’espace sur FORM 0
2.3 – Comment avoir deux mondes 3D avec des objets 3D ?
Utilisez 3D_TARGET_IS pour désigner le récepteur d’objet 3D
SCENE3D1 :remcréer le premier monde 3D
SCENE3D2 :remcréer le deuxième monde 3D
LEFT2,210 :remle positionner (autrement il recouvre le premier)
3D_TEAPOT1 :remcréer le premier objet 3D dans le premier monde 3D
3D_TARGET_IS2 :remassigner le deuxième monde 3D comme le récepteur de commandes 3D
3D_TEAPOT2 :remcréer le deuxième objet 3D dans le deuxième monde 3D
2.4 – Comment colorer le fond d’un monde 3D ?
Utilisez le numéro N du SCENE3D (le monde 3D a été créé par la commande
SCENE3DN) dans la commandeCOLOR:
COLORN, Rouge, Vert, Bleu
2.5 – Comment utiliser des rotations 3D ?
3D_X_ROTATE,3D_Y_ROTATE,3D_Z_ROTATEsont relatifs aux axes propres de l’objet.Les axes propres de l’objet 3D sont les axes qui étaient parallèles aux axes du monde quand l’objet 3D a été créé.
Les angles de rotation sont exprimés par rapport à la position d’origine :
3D_X_ROTATEN,30 :rempositionne l’objet 3D N à 30° par rapport à sa position d’origine
2.6 – Comment déplacer un objet 3D ?
Tous les objets 3D sont créés à la position (0,0,0).
Pour déplacer un objet 3D, utilisez les commandes : 3D_X_POSITION, 3D_Y_POSITION, 3D_Z_POSITION.
Exemple :
3D_SPHERE1 :remla sphère n°1 avec rayon=2 est créée en (0,0,0)
remla déplacer en (5,6,7)
3D_X_POSITION1,5
3D_Y_POSITION1,6
3D_Z_POSITION1,7
2.7 – Comment utiliser un objet 3D créé dans le format 3DS (3D Studio Max) ?
remcréez un scene3D (monde 3D)
SCENE3D1 :rem1 est le numéro d’objet
remcréez un objet « maillé »
3D_MESH1 :rem1 est le numéro d’objet 3D
remchargez votre fichier dans l’objet 3D numéro 1
3D_LOAD_OBJECT1, »MonObjet.3ds«
2.8 – Comment utiliser un objet 3D créé dans le format MD2 (Quake) ?
remcréez un scene3D (monde 3D)
SCENE3D1 :rem1 est le numéro d’objet
remcréez un objet « acteur »
3D_ACTOR1 :rem1 est le numéro d’objet 3D
remchargez votre fichier dans l’objet 3D numéro 1
3D_LOAD_OBJECT1, »MonObjet.md2«
3 – Objets
3.1 – Comment colorer le fond d’un FORM ?
Utilisez le numéro N du
FORMdans la commandeCOLOR(0 pour leFORMde base, ou N pour unFORMcréé par la commandeFORMN) :
COLORN, Rouge, Vert, Bleu
3.2 – il est conseillé de faire une pause après la coloration d’un FORM :
remmettre le fond en couleur blanche
COLOR0,255,255,255 :DISPLAY
3.3 – Comment colorer le fond d’une image ?
Une image a été créée par la commande picture N . Utilisez le numéro N dans la commande COLOR :
COLORN, Rouge, Vert, Bleu
3.4 – Comment créer un MENU ?
Voir l’exemple suivant :
remcréer l’objet « menu principal »
MAIN_MENU1
remcréer 2 « sous menus » au même niveau (fils de l’objet numéro 1)
SUB_MENU2 :CAPTION2, »Fichier » :PARENT2,1
SUB_MENU3 :CAPTION3, »Edition » :PARENT3,1
remcréer 3 « sous-menus » fils de l’objet numéro 2
SUB_MENU4 :CAPTION4, »Ouvrir » :PARENT4,2
SUB_MENU5 :CAPTION5, »Sauvegarder » :PARENT5,2
SUB_MENU6 :CAPTION6, »Quitter» :PARENT6,2
remcréer 3 « sous-menus » fils de l’objet numéro 3
SUB_MENU7 :CAPTION7, »Copier » : parent 7,3
SUB_MENU8 :CAPTION8, »Coller » : parent 8,3
SUB_MENU9 :CAPTION9, »Défaire » : parent 9, 3
3.5 – Comment utiliser
LEFT,TOP,WIDTH,HEIGHT?
LEFTetTOPsont utilisés pour positionner un objet sur son père (son conteneur).
WIDTHetHEIGHTsont utilisés pour dimensionner un objet.
3.6 – Comment placer un
BUTTON(ou un autre objet) sur un autreFORMqueFORMnuméro 0 ?Première possibilité :
FORM3 :remcréer un autre FORM (numéro 3)
BUTTON1 :remcréer un BUTTON (numéro 1)
PARENT1,3 :remle BUTTON va sur son père (le container) : FORM numéro 3
Deuxième possibilité :
FORM3 :remcréer un autre FORM (numéro 3)
COMMAND_TARGET_IS3 :remtoutes les commandes vont sur l’objet numéro 3
BUTTON1 :remcréer un BUTTON : il va sur sur FORM numéro 3
3.7 – Comment placer un MENU sur un autre FORM que FORM numéro 0 ?
FORM3 :remcréer un autre FORM (numéro 3)
COMMAND_TARGET_IS3 :remtoutes les commandes vont sur l’objet numéro 3
MAIN_MENU1 :remcréer un menu sur FORM numéro 3
CAPTION1, »Menu » :remlui donner un caption le rend visible
3.8 – Comment utiliser un
OPEN_DIALOGpour choisir un fichier ?Un
OPEN_DIALOGest créé par la commandeOPEN_DIALOGN et est utilisé par la commandeFILE_NAME$(N), N étant le numéro de l’OPEN_DIALOG.Comme
FILE_NAME$retourne soit le nom du fichier choisi par l’utilisateur, soit le caractère souligné « _ » si aucun fichier n’est choisi, la valeur rendue doit être stockée dans une variable string puis comparée à « _ ».
DIMa$ :remdéclarer une variable string
OPEN_DIALOG1 :remcréer un OPEN_DIALOG
a$ =FILE_NAME$(1) :remchoisir un nom de fichier avec l’OPEN_DIALOG numéro 1
IFa$ <> « _ »THEN– – – :remsi a$ contient un nom de fichier, alors – – –
3.9 – Comment sauvegarder un MEMO dans un fichier avec
SAVE_DIALOG?Un save_dialog est créé par la commande save_dialog N et est utilisé par la commande file_name$(N), N étant le numéro du save_dialog.
SAVE_DIALOG1 :remcréer un save_dialog
MEMO2 :remcréer un MEMO
rempour sauvegarder le contenu du memo avec le SAVE_DIALOG
FILE_SAVE2,FILE_NAME$(1)
3.10 – Comment charger une image avec un fichier dont le nom absolu est dans a$ ?
DIMa$ :remdéclarer une variable string
PICTURE1 :remcréer une image
a$ = « c:\MyPicture.bmp » :remdéfinir le nom du fichier
FILE_LOAD1,a$ :remLe fichier est chargé dans le PICTURE
3.11 – Comment charger une image avec un fichier choisi par un OPEN_DIALOG ?
DIMa$ :remdéclarer une variable string
PICTURE1 :remcréer une image
OPEN_DIALOG2 :remcréer un OPEN_DIALOG
a$ =FILE_NAME$ »(2) :remactiver l’open_dialog numéro 2
IFa$ <> « _ »THENFILE_LOAD1,a$ :remsi un fichier est choisi, le charger dans l’image
Rappel : la fonction
FILE_NAME$retourne le caractère souligné « _ » si aucun fichier n’a été choisi par l’utilisateur.C’est pourquoi il faut comparer la valeur de a$ avec « _ » :
IFa$ <> « _ »THEN…
3.12 – Comment charger un MEMO avec un fichier choisi par un OPEN_DIALOG ?
DIMa$ :remdéclarer une variable string
MEMO1 :remcréer un MEMO
OPEN_DIALOG2 :remcréer un OPEN_DIALOG
a$ =FILE_NAME$ »(2) :remactiver l’open_dialog numéro 2
IFa$ <> « _ »THENFILE_LOAD1,a$ :remsi un fichier est choisi, le charger dans le MEMO
Rappel : la fonction
FILE_NAME$retourne le caractère souligné « _ » si aucun fichier n’a été choisi par l’utilisateur.C’est pourquoi il faut comparer la valeur de a$ avec « _ » :
IFa$ <> « _ »THEN…
3.13 –
CAPTIONest possible seulement avecBUTTON,OPTION,CHECK,ALPHAouFORM
CAPTIONN, »Salut ! » :remN doit être un numéro de BUTTON, OPTION, CHECK, ALPHA ou FORMCette commande sur un autre type d’objet produit une erreur.
3.14 –
TEXTest possible seulement avecEDITouCOMBO
TEXTN, »Salut ! » :remN doit être un numéro d’unEDITou d’unCOMBOCette commande sur un autre type d’objet produit une erreur.
3.15 – Comment utiliser les barres ?
Il y a 3 sortes de barres :
TRACK_BAR,SCROLL_BARetPROGRESS_BAR.Pour lire la position du curseur :
A = POSITION(N) :remN est le numéro de l’objet barre.
Pour changer la position de curseur :
POSITIONN, P :remP est la position à prendre par le curseur de la barre numéro N.
Quand vous créez des barres, elles ont des valeurs standards pour le minimum et le maximum.
Pour changer la valeur minimale :
MINN, M :remM est la valeur minimale, N est le numéro de l’objet barre.
Pour changer la valeur maximale :
MAXN, M :remM est la valeur maximale, N est le numéro de l’objet barre.
4 – Multimédia : sons, musiques, films
4.1 – Comment charger et jouer un fichier de musique MIDI ?
SOUND1 :remcréer un son
FILE_LOAD1, »file.mid » :remcharger un fichier
PLAY1 :remle jouer
4.2 – Comment charger et jouer un fichier son WAV ?
SOUND1 :remcréer un son
FILE_LOAD1, »file.wav » :remcharger un fichier
PLAY1 :remle jouer
4.3 – Comment charger et jouer un fichier de musique MP3 ?
SOUND1 :remcréer un son
FILE_LOAD1, »file.mp3″ :remcharger un fichier
PLAY1 :remle jouer
4.4 – Comment charger et jouer un film avec un fichier dont le nom absolu est dans a$ ?
DIMa$ :remdéclarer une variable string
a$ = « c:\MonFilm.avi » :remdéfinir le nom du fichier
MOVIE1 :remcréer un film
FILE_LOAD1, a$ :remcharger le fichier
PLAY1 :remle jouer
5 – Divers
5.1 – Comment utiliser INKEY$ ?
Voir l’exempe suivant :
DIMa$
LABELloop
loop:
a$ =INKEY$
IFa$ = « »THEN GOTOloop
remici, a$ contient la touche qui a été enfoncée
5.2 – Comment utiliser les sous-programmes ?
Un sous-programme est un groupe de commandes qui peut être traités un certain nombre de fois.
Un sous-programme commence par un
LABEL(que l’on doit déclarer par le mot cléLABEL) et finit parRETURN.Quand
RETURNest exécuté, l’exécution de programme retourne à la commande immédiatement après la commandeGOSUB.
5.3 – Comment utiliser les événements ?
Quand un événement (clic, changement) arrive sur un objet, vous définissez dans un sous-programme les commandes à traiter pour répondre à l’événement.
Un sous-programme commence par un LABEL et se termine par RETURN.
Attention : Certains événements ne sont pas possibles avec certains objets !
Contenu créé par Jack. Mise à jour le 03 mars 2025