Foire Aux Questions & Conseils
Retrouvez toutes les explications techniques, conseils et astuces officiels pour programmer efficacement avec PANORAMIC.
1 - Généralités
La structure conseillée d'un programme est la suivante :
1 - Déclaration : LABEL et DIM
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 étiquettes utilisées
LABEL
clk
rem
déclaration
des variables utilisées
DIM
A$
rem
--- PROGRAMME PRINCIPAL ---
A$ = "Cliquez sur moi"
rem
création
d'un OBJET
button
1
rem
lui donner
un petit texte (son "intitulé")
caption
1,a$
rem
définir
le traitement quand il est cliqué
on_click
1,clk
rem
---
FIN DU PROGRAMME PRINCIPAL ---
end
rem
---
TRAITEMENT DES éVéNEMENTS---
Clk :
caption 1,"Salut!"
return
2 - Monde 3D
1 - Tout d'abord, créez un objet pour visualiser votre monde 3D avec le mot-clé scene3d et lui donner un numéro :
scene3d
1
Une caméra 3D et une lumière 3D sont alors automatiquement créés avec votre scene3d et 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_dodecahedron) ou des objets 3D formatés : 3d_mesh (en "3DS" format de Studio 3D Max) ou 3d_actor (en "MD2", format de Quake).
Avec le mot-clé correspondant, vous lui donnez un numéro 3D :
3d_teapot
1
3 - Vous pouvez alors les déplacer, les dimensionner, les faire tourner, les colorer, leur donner une texture...
Créer un monde 3D :
scene3D
1
Lui donner
tout l'espace disponible dans FORM numéro 0
full_space
1
Remarque : pour donner tout l'espace de l'écran à FORM numéro 0 :
full_space
0
En combinant les 2 commandes, vous avez un monde 3D prenant tout l'écran :
full_space
0 : rem
FORM0 prend tout l'espace sur l'écran
scene3D
1
full_space
1 : rem
SCENE3D prend tout l'espace sur FORM0
Utilisez 3D_TARGET_IS pour désigner le récepteur d'objet 3D
scene3d
1 :
rem
créer
le premier monde 3D
scene3d
2 :
rem
créer
le deuxième monde 3D
left
2,210
: rem
le positionner
(autrement il recouvre le premier)
3d_teapot
1 :
rem
créer
le premier objet 3D dans le premier monde 3D
3d_target_is
2 :
rem
assigner
le deuxième monde 3D comme le récepteur de commandes
3D
3d_teapot
2 :
rem
créer
le deuxième objet 3D dans le deuxième monde 3D
Utilisez le numéro N du scene3D (le monde 3D a été créé par la commande scene3d N) dans la commande color :
color
N, Rouge,
Vert, Bleu
3D_X_rotate, 3D_Y_rotate, 3D_Z_rotate sont 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_rotate N,30 : rem positionne l'objet 3D N à 30° par rapport à sa position d'origine
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 :
rem la sphère n°1 avec rayon=2 est créée en (0,0,0)
3d_sphere 1,2rem la déplacer en (5,6,7)
3d_x_position 1,5
3d_y_position 1,6
3d_z_position 1,7
rem créez un scene3D (monde 3D)
scene3d 1 : rem 1 est le numéro d'objet
rem créez un objet "maillé"
3d_mesh 1 : rem 1 est le numéro d'objet 3Drem chargez votre fichier dans l'objet 3D numéro 1
3d_load_object 1,"MonObjet.3ds"
rem créez un scene3D (monde 3D)
scene3d 1 : rem 1 est le numéro d'objetrem créez un objet3D "acteur"
3d_actor 1 : rem 1 est le numéro d'objet 3Drem chargez votre fichier dans l'objet 3D numéro 1
3d_load_object 1,"MonObjet.md2"
3 - Objets
Utiliser le numéro N du FORM dans la commande color (0 pour le FORM de Base, ou N pour un FORM créé par la commande form N) :
color N, Rouge, Vert, Bleu
rem
mettre le
fond en couleur blanche
color
0,255,255,255
: display
Une image a été créée par la commande picture N . Utilisez le numéro N dans la commande color :
color N, Rouge, Vert, Bleu
Voir l'exemple suivant :
rem
créer
l'objet "menu principal"
main_menu
1
rem
créer
2 "sous menus" au même niveau (fils de l'objet numéro
1)
sub_menu
2 :
caption
2,"Fichier"
: parent
2,1
sub_menu
3 :
caption
3,"Edition"
: parent
3,1
rem
créer
3 "sous-menus" fils de l'objet numéro 2
sub_menu
4 :
caption
4,"Ouvrir"
: parent
4,2
sub_menu
5 :
caption
5,"Sauvegarder"
: parent
5,2
sub_menu
6 :
caption
6,"Quitter"
: parent
6,2
rem
créer
3 "sous-menus" fils de l'objet numéro 3
sub_menu
7 :
caption
7,"Copier"
: parent
7,3
sub_menu
8 :
caption
8,"Coller"
: parent
8,3
sub_menu
9 :
caption
9,
"Défaire" : parent
9, 3
left et top sont utilisés pour positionner un objet sur son père (son conteneur).
width et height sont utilisés pour dimensionner un objet.
Première possibilité :
form
3 :
rem
créer
un autre FORM (numéro 3)
button
1 :
rem
créer un BUTTON (numéro 1)
parent
1,3 :
rem
le BUTTON va sur son père (le container) : FORM numéro
3
Deuxième possibilité :
form
3 :
rem
créer
un autre FORM (numéro 3)
command_target_is
3 :
rem
toutes les commandes vont sur l'objet numéro 3
button
1 :
rem
créer un BUTTON : il va sur sur FORM numéro 3
form
3 :
rem
créer
une autre forme (numéro 3)
command_to
3 : rem
toutes les commandes vont sur l'objet numéro 3
main_menu
1 : rem
créer un menu sur FORM numéro 3
caption
1,"Menu" : rem lui donner un
caption le rend visible
Un open_dialog est créé par la commande open_dialog N et est utilisé par la commande file_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 à "_".
dim a$ : rem déclarer une variable string
open_dialog
1 :
rem
créer
un open_dialog
a$=file_name$(1)
: rem
choisir
un nom de fichier avec l'open_dialog numéro 1
if
a$ <> "_" then
- - - :
rem
si a$ contient
un nom de fichier, alors - - -
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.
memo 2 : rem créer un memo
rem pour sauvegarder le contenu du memo avec le save_dialog
file_save 2,file_name$(1)
dim a$ : rem déclarer une variable string
picture
1 : rem
créer une image
a$="c:\MyPicture.bmp"
: rem définir le nom du fichier
file_load
1,a$ : rem the file is loaded in the picture
dim a$ : rem déclarer une variable string
picture
1 : rem
créer une image
open_dialog
2 : rem
créer un open_dialog
a$=file_name$
(2) : rem
active l'open_dialog numéro 2
if
a$ <> "_" then
file_load
1,a$ : rem
si un fichier est choisi, le charger dans l'image
dim a$ : rem déclarer une variable string
memo
1 : rem
créer un memo
open_dialog
2 : rem
créer un open_dialog
a$ =
file_name$(2)
: rem activer
l'open_dialog
if
a$ <> "_" then file_load
1,a$ : rem
si un fichier est choisi, le charger dans le memo
caption N,"Salut" : rem N doit être un numéro de button, d''option, de check, d'alpha ou de form
Cette commande sur un autre type d'objet produit une erreur.
text N,"Salut" : rem N doit être le numéro d'un EDIT ou d'un COMBO
Cette commande sur un autre type d'objet produit une erreur.
Il y a 3 sortes de barres : track_bar, scroll_bar et progress_bar.
- Pour lire la position du curseur :
A=position(N) : rem N est le numéro de l'objet barre.
- Pour changer la position de curseur :
position N, P : rem P 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 :
min N,M : rem M est la valeur minimale, N est le numéro de l'objet barre.
- Pour changer la valeur maximale :
max N,M : rem M est la valeur maximale, N est le numéro de l'objet barre.
4 - Multimédia
sound
1 :
rem
créer
un son
file_load
1,"file.mid"
: rem
charger
un fichier
play
1 :
rem
le jouer
sound
1 :
rem
créer
un son
file_load
1,"file.wav"
: rem
charger
un fichier
play
1 :
rem
le jouer
sound
1 :
rem
créer
un son
file_load
1,"fichier.mp3"
: rem
charger
un fichier
play
1 :
rem
le jouer
dim a$ : rem déclarer une variable string
a$="c:\MonFilm.avi"
: rem définir le nom du fichier
movie
1 :
rem
créer
un film
file_load
1,a$ :
rem
charger
le fichier
play
1 :
rem
le jouer
5 - Divers
tangente(x) = SIN(x) / COS(x)
- > utiliser SIN(X) / COS(X)
ArcSin(x) = ArcTan(x/sqr(1-sqr(x)))
-> utiliser ATN(X/SQR(1-SQR(X)))
ArcCos(x) = ArcTan(sqr(1-sqr(x)) /x)
-> utiliser ATN(SQR(1-SQR(X))/X)
Voir l'exemple suivant :
dim a$
label looploop:
a$=inkey$
if a$="" then goto loop
rem ici, a$ contient la touche qui a été enfoncée
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 par RETURN.
Quand RETURN est exécuté, l'exécution de programme retourne à la commande immédiatement après la commande GOSUB.
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 !