FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Une autre façon de terminer une application.
par Francis-mr Aujourd'hui à 12:07

» Compilateur FBPano
par jean_debord Aujourd'hui à 10:09

» Copier / coller du texte à partir de la fenêtre de commandes
par jean_debord Aujourd'hui à 9:46

» COMPILATEUR V 0.9 beta 8 du 18 aout 2017
par papydall Aujourd'hui à 5:01

» Mettre en windows en veille
par papydall Aujourd'hui à 4:15

» Stretch_on ne stretch plus...
par papydall Hier à 15:22

» Pb 18 (en analyse): RESTORE_LABEL avec DATA à la fin
par Jack Hier à 13:21

» Problème de traitement des opérateurs avec le compilateur.
par Pedro Alvarez Sam 19 Aoû 2017 - 20:01

» Pb 17 (résolu): ITEM_SELECT ne fonctionne pas
par Jack Jeu 17 Aoû 2017 - 19:26

» un nouveau editeur panobasic
par Jean Claude Jeu 17 Aoû 2017 - 10:18

» Le compilateur.
par Pedro Alvarez Jeu 17 Aoû 2017 - 8:36

» Pb 16 (résolu): ON_CLOSE plante à l'exécution
par Jack Mer 16 Aoû 2017 - 20:00

» Pb 15 (résolu): TIMER_ON plante à l'exécution
par Jack Mer 16 Aoû 2017 - 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 COMPILATEUR V 0.9 beta 8 du 18 aout 2017

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4  Suivant
AuteurMessage
Jack
Admin
avatar

Nombre de messages : 1744
Date d'inscription : 28/05/2007

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 31 Juil 2017 - 0:06

Une nouvelle version est disponible ici :

http://panoramic-language.pagesperso-orange.fr/PANORAMIC_COMPILER_EDITOR.zip

C'est la version V 0.9 beta 5 du 30 juillet 2017.

Elle corrige tous les bugs signalés.

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Yannick

avatar

Nombre de messages : 7975
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 31 Juil 2017 - 0:45

C' est chargé, je testerai dès demain matin.
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5518
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 31 Juil 2017 - 1:51

Désolé jack, mais le problème de DIM_LOCAL persiste.







Si j’enlève la ligne 6 et je déclare ces 4 variables en globale avant l’appel de SUB Init_prog(),
la compilation se déroule bien, mais à l’exécution :

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Pedro Alvarez

avatar

Nombre de messages : 808
Date d'inscription : 19/01/2014

MessageSujet: Le compilateur.   Lun 31 Juil 2017 - 8:20

Bonjour.

@Jack
Je voulais te signaler un bug dans la 1ère ligne qui suit:

if without corresponding end_if

Franchement, je ne vois pas ce qui cloche ici !!


Code:
if left$(traduction_mot$,34)="Ne pas traduire ce mot en tant que"
   b$="$"
   traduction_mot$=mot_a_traduire$
end_if

Même message d'erreur ici, mais sur la ligne contenant 'end_if' !!

Code:
if instr(trim$(traduction_mot$)," ")>0
   position%=1
   while 0=0
            x%=instr_pos(traduction_mot$," ",position%)
            if x%=0 then exit_while
                        
            traduction_mot$=left$(traduction_mot$,x%)+car$+right_pos$(traduction_mot$,x%+1)
            position%=x%+2
   end_while
end_if

Alors, comment peux-tu affirmer que cette version corrige tous les bugs signalés !!
Là, je ne comprends plus !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc37



Nombre de messages : 443
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 31 Juil 2017 - 11:06

Bonjour à tous !


Merci Jack pour tout le temps que tu passes pour continuer à développer Panoramic.

J'ai remarqué que ce programme, certes très simple (1 ligne), ne fonctionne pas :

Code:
END




Bonne continuation !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5518
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 31 Juil 2017 - 11:17

Bien qu’elle soit incomplète, la version du compilateur la plus aboutie est la version 0.1 alpha 4 du 18 mai 2014.
Avec elle j’ai pu coder, compiler et exécuter des beaux programmes.
Depuis rien ne va plus ou presque. Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
jean_debord

avatar

Nombre de messages : 745
Age : 63
Localisation : Limoges
Date d'inscription : 21/09/2008

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 31 Juil 2017 - 11:19

Le programme "END" fonctionne en FreeBASIC (bien qu'il ne fasse rien !)

C'est peut-être une erreur de traduction PANORAMIC --> FreeBASIC
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.unilim.fr/pages_perso/jean.debord/index.htm
papydall

avatar

Nombre de messages : 5518
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 31 Juil 2017 - 12:28

Chez moi, l’unique ligne END proposée par Marc37, se compile et s’exécute sans problème.
Aucun problème de ce coté là.

Par ailleurs, je suis agréablement surpris par le fonctionnement correct de la récursivité. cheers
C’est sans doute un effet de bord !

Le code suivant qui comporte une procédure récursive (sans grande utilité) montre bien ce qu’on faire avec de la récursivité.

Code:

list 10 : top 10,50 : left 10,100 : height 10,300
Afficher_Recursif(1.1)
end
SUB Afficher_Recursif(a%,b%)
    if a% < 4
       if b% < 10
          item_add 10,str$(a%*10+b%)
          Afficher_Recursif(a%,b%+1)
       else
          Afficher_Recursif(a%+1,0)
       end_if
    end_if
END_SUB
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jack
Admin
avatar

Nombre de messages : 1744
Date d'inscription : 28/05/2007

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 31 Juil 2017 - 17:37

@Pedro Alvarez:

Ton premier source ne déclenche aucune erreur, se compile et s'exécute correctement:
Code:
dim traduction_mot$,b$,mot_a_traduire$

if left$(traduction_mot$,34)="Ne pas traduire ce mot en tant que"
  b$="$"
  traduction_mot$=mot_a_traduire$
end_if

Par contre ton second source ne compile pas à cause d'un problème sur EXIT_WHILE qui n'est pas traité correctement par le compilateur:
Code:
dim traduction_mot$,x%,position%

if instr(trim$(traduction_mot$)," ")>0
  position%=1
  while 0=0
            x%=instr_pos(traduction_mot$," ",position%)
            if x%=0 then exit_while
                       
            traduction_mot$=left$(traduction_mot$,x%)+car$+right_pos$(traduction_mot$,x%+1)
            position%=x%+2
  end_while
end_if

Je regarde ce problème de EXIT_WHILE

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Pedro Alvarez

avatar

Nombre de messages : 808
Date d'inscription : 19/01/2014

MessageSujet: Le compilateur.   Lun 31 Juil 2017 - 17:49

Bonjour.

Désolé Jack, mais mon 1er source provoque bien l'erreur signalée.
Je te fais remarquer que ce source fait partie intégrante de mon programme principal, qui comporte plus de 48.000 lignes.

Il est bien évident que s'il est testé indépendamment, comme tu le fais, aucune erreur ne se produit.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 391
Date d'inscription : 06/01/2012

MessageSujet: Re   Lun 31 Juil 2017 - 18:07

Désolé, je viens polluer le post juste une fois, pour remercier Papydall de son code que j'ai compris, et de son jeu de mots que j'ai aussi compris !! mais je ne voudrais pas déborder le sujet...
lol! lol! lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
Jack
Admin
avatar

Nombre de messages : 1744
Date d'inscription : 28/05/2007

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 31 Juil 2017 - 18:10

Pedro Alvarez a écrit:
le source fait partie intégrante de mon programme principal, qui comporte plus de 46.000 lignes.
Il est bien évident que si tu le testes indépendamment, comme tu le fais, aucune erreur ne se produit.

Je sais bien, mais je n'ai pas d'autre moyen d'investigation...

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Jack
Admin
avatar

Nombre de messages : 1744
Date d'inscription : 28/05/2007

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 31 Juil 2017 - 18:14

@Marc37:
Effectivement, le source réduit à la seule ligne END provoque un plantage...
...quand on ne sauvegarde pas le source avant la compilation.

Je vais faire quelque chose quand un source n'a pas été sauvegardé avant la compilation (message de refus ou forçage de la sauvegarde).

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Pedro Alvarez

avatar

Nombre de messages : 808
Date d'inscription : 19/01/2014

MessageSujet: Le compilateur.   Lun 31 Juil 2017 - 18:17

@Jack.

Que comptes-tu faire pour le problème des 'if' et 'end-if' qui provoquent des erreurs ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5849
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Mar 1 Aoû 2017 - 13:18

Bonjour,

Juste un petit commentaire pour dire que j'aime beaucoup ta façon de présenter les problèmes, et l'état d'avancement des corrections. C'est très clair et facile à suivre.
Bravo Jack pour ce changement de présentation / communication et bon courage pour la fin de tes investigations
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jack
Admin
avatar

Nombre de messages : 1744
Date d'inscription : 28/05/2007

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Jeu 3 Aoû 2017 - 13:25

Une nouvelle version est disponible ici :

http://panoramic-language.pagesperso-orange.fr/PANORAMIC_COMPILER_EDITOR.zip

C'est la version V 0.9 beta 6 du 3 aout 2017.

Elle corrige les bugs signalés:
N°6 : EXIT_WHILE
N°7 : boucle FOR avec DIM_LOCAL
N°8 : exécution d'un source sans sauvegarder
N° 10 : EXIT_FOR

Remarque sur le bug N°9 : la recherche des IF sans END_IF a été améliorée. Je considère pas toutefois ce bug comme complètement résolu.

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
papydall

avatar

Nombre de messages : 5518
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Jeu 3 Aoû 2017 - 19:53

J’ai téléchargé.
J’ai expérimenté
Je suis satisfait.



Suggestion : il sera très utile, voire nécessaire d’améliorer l’affichage des erreurs, en donnant des infos explicites, genre numéro de ligne où l’erreur s’est produite.

L'erreur suivante m'a donné du fil à retordre avant de pouvoir localiser de quoi il s'agissait!




Mon impression : cette version du compilateur m'a donné satisfaction.
Merci Jack pour tout ce que tu fais pour nous, les Panoramiciens.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5922
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Jeu 3 Aoû 2017 - 21:10

Je compile sans problème, cette fois-ci mais à la fermeture du compilateur (que je l'aie utilisé ou pas) j'ai systématiquement l'erreur suivante:

suivie de ('Fermer le programme')


Autre question, plus générale mais sans doute naïve, je m'imaginais qu'une version compilée avec le compilateur serait bien moins volumineuse qu'une version compilée avec l'éditeur (c'est à dire sans interpréteur embarqué pour le compilateur), or ce n'est pas le cas.
Mon dernier petit programme, source: 6,64 K, exécutable: 2,21 M
Dans ces conditions, quel est l'avantage de compiler avec le compilateur plutôt qu'avec l'éditeur, ce que je faisais jusqu'ici ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5518
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Jeu 3 Aoû 2017 - 23:47

JL35 a écrit:
Autre question, plus générale mais sans doute naïve, je m'imaginais qu'une version compilée avec le compilateur serait bien moins volumineuse qu'une version compilée avec l'éditeur (c'est à dire sans interpréteur embarqué pour le compilateur), or ce n'est pas le cas.
Mon dernier petit programme, source: 6,64 K, exécutable: 2,21 M
Dans ces conditions, quel est l'avantage de compiler avec le compilateur plutôt qu'avec l'éditeur, ce que je faisais jusqu'ici ?

Considérons le code suivant (qui calcule 1000 décimales de PI)
Code:

rem ============================================================================
rem         calcul des 1000 premières décimales de PI
rem ============================================================================
Init()
Pi1000()
end
rem ============================================================================
SUB Init()
    dim t(202), nmax, b, d, p, q, r, n, m, i, tex$,aff$
    width 0,1000
    caption 0,"LES 1000 PREMIERES DECIMALES DE PI"
    alpha 10 : top 10,10 : left 10,10 : font_bold 10 : font_name 10,"arial"
    font_size 10,18 : caption 10,string$(30," ") + "LES 1000 PREMIERES DECIMALES DE PI"
    font_color 10,0,0,255
    alpha 20 : top 20,50 : left 20,10 : font_bold 20 : font_name 20,"arial"
    font_size 20,14 : font_color 20,150,100,50
END_SUB
rem ============================================================================
SUB Pi1000()
    nmax = 3340
    b = 100000
    for i = 1 to 201 : t(i) = 0 : next i : ' On initialise les calculs  
    T(0) = 2 * nmax     : ' t(0) = 2n, les autres tranches sont nulles
     d = 2 * nmax + 1   : ' le diviseur est 2n+1
    Divise()
    for n = nmax to 2 STEP -1  : ' Boucle de l'algorithme
        T(0) = T(0) + 2 : d = 2 * n - 1 : Divise()
        m = n - 1 : Multiplie()
    NEXT n
    T(0) = T(0) + 2
    Affiche()
END_SUB
rem ============================================================================
SUB Divise()
    FOR i = 0 TO 201
       q = INT(T(i)/d) : r = T(i) - d * q
       T(i) = q : T(i+1) = T(i+1) + b * r
    NEXT i
END_SUB
rem ============================================================================
SUB Multiplie()
    q = 0
    FOR i = 201 TO 1 STEP -1
        p = T(i) * m + q : q = INT(p/b) : T(i) = p - q * b
    NEXT i
    T(0) = T(0) * m + q
END_SUB
rem ============================================================================
SUB Affiche()
    aff$ = str$(t(0)) + "." + chr$(13)
    for i = 1 to 200
        tex$ = str$(t(i))
        WHILE LEN(tex$) < 5   : ' si les tranches t(i) comporte des zéros au début
            tex$ = "0" + tex$ : ' les compléter à 5 chiffres en ajoutant les zéros nécessaires
        END_WHILE
        tex$ = " " + tex$     : ' espace de séparation des tranches de 5 chiffres
        aff$ = aff$ + tex$    : ' Toutes les tranches sont stockées dans la variable d'affichage
        IF MOD(i,16) = 0 THEN aff$ = aff$ + chr$(13) : ' Chaque ligne comporte 16 tranches
    NEXT i
    caption 20, aff$
END_SUB
rem ===========================================================================

Compilé avec le compilateur et lancé, le résultat est quasi instantané !
Avec l’interpréteur, ça frôlerait  le suicide !
Il faudrait plusieurs minutes (je dis bien  minutes et non secondes) pour voir le résultat.
Si tu lances le code sous l’interpréteur, tu as le temps de te rendre au super marché pour faire tes provisions !

Quant au poids de l’exécutable (2261 Ko dans ce cas), ce n’est plus un problème, même s’il se chiffre en Mo.
Les PC actuels ont suffisamment de RAM et c’est la vitesse du traitement qui doit être privilégiée.

C'est ainsi que je voie les choses.
Le compilateur est vraiment une (r)évolution notable de Panoramic.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5922
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Ven 4 Aoû 2017 - 0:29

Merci ami papydall pour tes précisions.
Effectivement il y a le facteur vitesse qui est souvent vital, et dans le cas du compilateur il n'y a pas photo par rapport à l'interpréteur.
Je m'incline devant l'argument.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5518
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Ven 4 Aoû 2017 - 2:31

Pour votre plaisir

Code:

rem ============================================================================
rem                      Tracé récursif d’arbres
rem        Exploitant les Turtle_Routines, Procédures de la Tortue
rem               Programme pour tester le Compilateur
rem                    Par Papydall 03 / 08 / 2017
rem ============================================================================
rem Le programme utilise des routines pour piloter une tortue, un peu comme
rem la fameuse Turtle du langage LOGO (Voir à partir de la ligne 134
rem ============================================================================

 Init_Turtle()

 Init_prog()
 La_Maison(0,300,1)  : La_Maison(300,300,1) : La_Maison(1000,200,1/2)
 La_Maison(1200,200,1/4)
 
 Bel_Arbre(0,-100,450)
 Arbre_Simple(-300,-200,150,45)
 Arbre_Penche(300,-400,150,50)
 
 Bel_Arbre(-500,-200,250)
 Arbre_Simple(200,-200,50,45)

end
rem ============================================================================
SUB Init_prog()
    dim_local x,y,p,towpi
    p = pi/180 : towpi = 2*pi
    2d_poly_from 0,height(0)/3
    for x = 0 to 2*pi step p
        2d_poly_to x*width(0)/towpi,height(0)/4+50*sin(x)
    next x
    2d_flood 10,10 , 50,100,150 : 2d_flood 10,height(0)/2,100,150,50
END_SUB
rem ============================================================================
' Arbre droit
SUB Arbre_Simple(x,y,l,a)
    Pen_Up(): Fixe_XY(x,y) : Back(160) : Pen_Down()
    Tree_Simple(l,a,l)
END_SUB
' ------------------------------------------------------------------------------
SUB Tree_Simple(length,angle,f)
   if length < 5
        ' ne rien faire
   else
      2d_pen_width length/9  : ' reduction
      2d_pen_color 200,255*(f-length)/(f),50 : ' couleur dépend de la longueur
      Forward(length) : Turn_Left(angle/2)
      Tree_Simple(length*0.75,angle,f) : Turn_Right(angle) : ' longueur branche 3/4
      Tree_Simple(length*0.75,angle,f) : Turn_Left(angle/2)
      Pen_Up() : Back(length) : Pen_Down()
   end_if
END_SUB
rem ============================================================================
' Procédure récursive de tracé d'un bel arbre
SUB Bel_Arbre(x,y,taille)
    Pen_Up(): Fixe_XY(x,y) : Back(160) : Pen_Down()
    Arbre(taille,taille)
END_SUB
' ------------------------------------------------------------------------------
SUB Arbre(taille,f)
    if taille < 5
       forward(taille) : Back(taille)
    else
       2d_pen_width 8
       caption 0,str$(255*(f-taille)/(f))
       2d_pen_color 20,255,50
       forward(taille/3) : turn_left(30)  : Arbre(taille*2/3) : turn_right(30)
       forward(taille/6) : turn_right(25) : Arbre(taille/2)   : turn_left(25)
       forward(taille/3) : turn_right(25) : Arbre(taille/2)   : turn_left(25)
       forward(taille/6) : forward(0-taille)
    end_if
END_SUB
rem ============================================================================
' Arbre penché vers la droite
SUB Arbre_Penche(x,y,l,a)
    Pen_Up(): Fixe_XY(x,y) : Turn_Right(5) : Pen_Down()
    Tree_Penche(l,a,l)
END_SUB
' ------------------------------------------------------------------------------
SUB Tree_Penche(length,angle,f)
    if length < 5
        ' ne rien faire
    else
      2d_pen_width length/9
      2d_pen_color 255,255*(f-length)/(f),0
      Forward(length) : Turn_Left(angle/2)
      Tree_Penche(length*0.65,angle,f) : Turn_Right(angle)
      Tree_Penche(length*0.85,angle,f) : Turn_Left(angle/2)
      Pen_Up() : Back(length) : Pen_Down()
    end_if
END_SUB
rem ============================================================================
' x,y : Coordonnées du début du toit
' e   : Facteur d'aggrandissement / rapetissement
SUB La_Maison(x,y,e)
    2d_pen_color 0,0,255      : 2d_poly_from x+80*e,y+20*e
    2d_poly_to x+220*e,y+20*e : 2d_poly_to x+280*e,y+80*e
    2d_poly_to x+140*e,y+80*e : 2d_poly_to x+80*e,y+20*e
    2d_flood x+220*e,y+20*e+5,0,0,255
    2d_pen_color 100,50,20  : 2d_fill_color 100,50,20
    2d_rectangle x+140*e,y+80*e,x+270*e,y+170*e

    2d_pen_color 50,100,50    : 2d_poly_from x+87*e,y+27*e
    2d_poly_to x+140*e,y+80*e : 2d_poly_to x+140*e,y+170*e
    2d_poly_to x+30*e,y+170*e : 2d_poly_to x+30*e,y+80*e
    2d_poly_to x+87*e,y+27*e  : 2d_flood x+30*e+10,y+80*e, 200,200,50

    2d_pen_color 0,0,0        : 2d_poly_from x+80*e,y+20*e
    2d_poly_to x+87*e,y+27*e  : 2d_poly_to x+30*e,y+80*e
    2d_poly_to x+20*e,y+80*e  : 2d_poly_to x+80*e,y+20*e
    2d_flood x+80*e,y+20*e+2,0,0,0
    2d_fill_color 0,0,0
    2d_rectangle x+20*e,y+170*e,x+280*e,y+180*e : 2d_rectangle x+170*e,y+90*e,x+240*e,y+155*e

    2d_fill_color 255,255,0
    2d_rectangle x+175*e,y+95*e,x+202*e,y+120*e  : 2d_rectangle x+208*e,y+95*e,x+235*e,y+120*e
    2d_rectangle x+175*e,y+125*e,x+202*e,y+150*e : 2d_rectangle x+208*e,y+125*e,x+235*e,y+150*e

    2d_fill_color 0,200,200 : 2d_rectangle x+60*e,y+80*e,x+110*e,y+170*e
    2d_fill_color 0,0,0     : 2d_rectangle x+195*e,y+15*e,x+205*e,y+30*e
    2d_poly_from x+200*e,y+10*e
    2d_poly_to x+210*e,y+15*e : 2d_poly_to x+190*e,y+15*e : 2d_poly_to x+200*e,y+10*e
    2d_flood x+200*e,y+10*e+2,0,0,0
    2d_fill_color 255,255,0 : 2d_circle x+100*e,y+120*e,5*e

    2d_fill_color 255,0,0
END_SUB
rem ============================================================================

rem ============================================================================
rem ############################################################################
rem ============================================================================
rem               LES PROCEDURES DE LA TORTUE  : Turtle_Routines
rem ============================================================================
rem ############################################################################
rem Les variables globales Turtle_XXX sont prédéfinies pour les routines TORTUE.
rem Votre programme ne doit ni les redéfinir ni les modifier.
rem Ce sont :
rem Turtle_Xorigine,Turtle_Yorigine : coordonnées de l’origine (le centre de l’écran)
rem Turtle_X,Turtle_Y : coordonnées relatives de la tortue (par rapport à l’origine)
rem Turtle_Cap : direction initiale du déplacement de la tortue : vers le haut
rem Turtle_PI  : la constante Pi
rem Turtle_rad : multiplicateur pour transformer les degrés en radians
rem ============================================================================
rem REMARQUE IMPORTANTE :
rem L’origine des axes est le centre de la fenêtre
rem Le sens positif sur l’axe des X est dirigé vers la droite (négatif vers la gauche)
rem Le sens positif sur l’axe des Y est dirigé vers le haut (négatif vers le bas)
rem ============================================================================
' Initialisation de la tortue graphique
' La tortue se trouve au centre de la fenêtre et est dirigée vers le Nord
SUB Init_Turtle()
    dim Turtle_Xorigine,Turtle_Yorigine :' coordonnées de l'origine (le centre de l'écran)
    dim Turtle_X,Turtle_Y : ' coordonnées relatives de la tortue (par rapport à l'origine)
    dim Turtle_Cap        : ' direction initiale du déplacement de la tortue vers le haut
    dim New_Turtle_Cap    : ' Nouveau cap de la tortue
    dim Turtle_PI         : ' la constante Pi
    dim Turtle_rad        : ' multiplicateur pour transformer les degrés en radians
    dim Turtle_R, Turtle_G, Turtle_B    : ' RGB du tracé
    dim Turtle_FR, Turtle_FG, Turtle_FB : ' RGB du fond
    dim Turtle_Pen_Up_Down              : ' Etat du crayon (0 = baissé) ; (1 = levé)
    full_space 0
    Turtle_Pen_Up_Down = 0              : ' crayon baissé au départ
    Turtle_Xorigine = width(0)/2        : ' L'origine de ...
    Turtle_Yorigine = height(0)/2-20    : ' ... l'écran graphique

    Turtle_PI  = pi            : ' pi
    Turtle_Cap = Turtle_PI/2   : ' La tortue est dirigée vers le haut
    Turtle_rad = Turtle_PI/180 : ' Facteur multiplicateur pour les angles (degrés --> radians)

    Origine()
END_SUB
rem ============================================================================
' Pour débuter un nouveau dessin
' Effacer l'écran et remettre la tortue à sa place
' (au centre de la fenêtre et dirigée vers le nord)
SUB Nouveau()
    cls : Origine()
END_SUB
rem ============================================================================
' Ramener la tortue à l'origine (c-à-d au centre de la fenêtre)
SUB Origine()
    Turtle_X = Turtle_Xorigine : Turtle_Y = Turtle_Yorigine
    New_Turtle_Cap = Turtle_Cap  : 2d_poly_from Turtle_X,Turtle_Y
END_SUB
rem ============================================================================
' Avancer de pas pixels
' Si le crayon est baissé, la tortue trace un trait avec la couleur en cours
' Si le crayon est levé, la tortue se déplace sans laisser de trace
SUB Forward(pas)
    dim_local x1,y1,x2,y2,a
    x1 = Turtle_X : y1 = Turtle_Y : a  = New_Turtle_Cap
    x2 = Turtle_X + pas * cos(a)  : y2 = Turtle_Y - pas * sin(a)

    if Turtle_Pen_Up_Down = 0 : ' crayon baissé ?
       2d_poly_to x2,y2       : ' on trace le trait avec la couleur en cours
    else : ' crayon levé
       2d_poly_from x2,y2     : ' on se déplace sans trace
    end_if
    Turtle_X = x2 : Turtle_Y = y2
END_SUB
rem ============================================================================
' Réculer de pas pixels
' Si le crayon est baissé, la tortue trace un trait avec la couleur en cours
' Si le crayon est levé, la tortue se déplace sans laisser de trace
SUB Back(pas)
    Forward(0-pas)
END_SUB
rem ============================================================================
' Tourner à gauche (sens trigonométrique) de a degrés
SUB Turn_Left(a)
    New_Turtle_Cap = New_Turtle_Cap + a * Turtle_rad
END_SUB
rem ============================================================================
' Tourner à droite (sens horaire) de a degrés
SUB Turn_Right(a)
    New_Turtle_Cap = New_Turtle_Cap - a * Turtle_rad
END_SUB
rem ============================================================================
' Fixer le Cap de la tortue
' Le Cap est la direction du déplacement de la tortue :
' 000 c'est vers la droite (EST)
' 090 c'est vers le haut (NORD)
' 180 c'est vers la gauche (OUEST)
' 270 c'est vers le bas (SUD)
' 360 c'est identique à 000
SUB Fixe_Cap(a)
    New_Turtle_Cap = a * Turtle_rad
END_SUB
rem ============================================================================
' Fixer la position X de la tortue par rapport à l'origine
' Déplacement horizontal
SUB FixeX(n)
    Turtle_X = Turtle_Xorigine + n : 2d_poly_from Turtle_X,Turtle_Y
END_SUB
rem ============================================================================
' Fixer la position Y de la tortue par rapport à l'origine
' Déplacement vertical
rem ############################################################################
rem   REMARQUE IMPORTANTE : le sens posif pour les Y est le sens vers le haut
rem ############################################################################
SUB FixeY(n)
    Turtle_Y = Turtle_Yorigine - n : 2d_poly_from Turtle_X,Turtle_Y
END_SUB
rem ============================================================================
' Fixer la position de la tortue
' Déplacer la tortue au point (X,Y) par rapport au centre de la
' fenêtre qui est l'origine.
' X et/ou Y peuvent être positives, négatives ou nulles
SUB Fixe_XY(x,y)
    Turtle_X = Turtle_Xorigine + x : Turtle_Y = Turtle_Yorigine - y
    2d_poly_from Turtle_X,Turtle_Y
END_SUB
rem ============================================================================
' Tracer l'axe des X
SUB AxeX()
    2d_line 0,Turtle_Yorigine,2*Turtle_Xorigine,Turtle_Yorigine
END_SUB
rem ============================================================================
' Tracer l'axe des Y
SUB AxeY()
    2d_line Turtle_Xorigine,0,Turtle_Xorigine,2*Turtle_Yorigine
END_SUB
rem ============================================================================
' Tracer les 2 axes X et Y
SUB Axe_XY()
    AxeX() : AxeY()
END_SUB
rem ============================================================================
' On modifie l'état du crayon
' Lever le stylo : le déplacement de la tortue ne laisse pas de trace
SUB Pen_Up()
    Turtle_Pen_Up_Down = 1
END_SUB
rem ============================================================================
' On modifie l'état du crayon
' Baisser le stylo : le déplacement de la tortue laisse une trace
SUB Pen_Down()
    Turtle_Pen_Up_Down = 0
END_SUB
rem ============================================================================
' Définition des 17 couleurs par leur nom
SUB Define_Color(couleur$)
    dim_local r,g,b,c$   : c$ = upper$(couleur$)
    if c$ = "NOIR"       : r = 000 : g = 000 : b = 000 : end_if
    if c$ = "ROUGE"      : r = 255 : g = 000 : b = 000 : end_if
    if c$ = "VERT"       : r = 000 : g = 255 : b = 000 : end_if
    if c$ = "JAUNE"      : r = 255 : g = 255 : b = 000 : end_if
    if c$ = "BLEU"       : r = 000 : g = 000 : b = 255 : end_if
    if c$ = "MAGENTA"    : r = 255 : g = 000 : b = 255 : end_if
    if c$ = "CYAN"       : r = 000 : g = 255 : b = 255 : end_if
    if c$ = "BLANC"      : r = 255 : g = 255 : b = 255 : end_if
    if c$ = "GRIS"       : r = 128 : g = 128 : b = 128 : end_if
    if c$ = "GRISCLAIR"  : r = 192 : g = 192 : b = 192 : end_if
    if c$ = "ROUGEFONCE" : r = 128 : g = 000 : b = 000 : end_if
    if c$ = "VERTFONCE"  : r = 000 : g = 128 : b = 000 : end_if
    if c$ = "BLEUFONCE"  : r = 000 : g = 000 : b = 128 : end_if
    if c$ = "ORANGE"     : r = 255 : g = 200 : b = 000 : end_if
    if c$ = "ROSE"       : r = 255 : g = 175 : b = 175 : end_if
    if c$ = "VIOLET"     : r = 128 : g = 000 : b = 255 : end_if
    if c$ = "MARRON"     : r = 153 : g = 102 : b = 000 : end_if

    Turtle_R = r :  Turtle_G = g :Turtle_B = b
END_SUB
rem ============================================================================
' Fixer la couleur du tracé
SUB Fixe_Pen_Color(couleur$)
    Define_Color(couleur$) : 2d_pen_color Turtle_R, Turtle_G, Turtle_B
END_SUB
rem ============================================================================
' Fixer la couleur du fond
SUB Fixe_Fond_Color(couleur$)
    Define_Color(couleur$)
    Turtle_FR =  Turtle_R :  Turtle_FG = Turtle_G :  Turtle_FB = Turtle_B
    color 0, Turtle_FR, Turtle_FG, Turtle_FB
END_SUB
rem ============================================================================
' La tortue efface tous les traits qu’elle rencontre
SUB Pen_Erase()
    2d_pen_color Turtle_FR, Turtle_FG, Turtle_FB
END_SUB
rem ============================================================================
' Inverser la couleur du crayon
SUB Pen_Invert()
    2d_pen_color 255 - Turtle_R, 255 - Turtle_G, 255 - Turtle_B
END_SUB
rem ============================================================================
SUB Pen_Paint(couleur$)
    Define_Color(couleur$)
    Turtle_FR =  Turtle_R :  Turtle_FG = Turtle_G :  Turtle_FB = Turtle_B
    2d_flood Turtle_X, Turtle_Y, Turtle_FR, Turtle_FG, Turtle_FB
END_SUB
rem ============================================================================
rem ############################################################################
rem ============================================================================


Enregistrez et compilez
Quant au résultat, je vous laisse le découvrir.

N'essayez surtout pas avec l'interpréteur : ça ne fonctionne pas !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jack
Admin
avatar

Nombre de messages : 1744
Date d'inscription : 28/05/2007

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Dim 6 Aoû 2017 - 12:30

J'ai retiré la dernière version (beta 6) du téléchargement car il y a un problème sur les chaînes de caractères.

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
papydall

avatar

Nombre de messages : 5518
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Dim 6 Aoû 2017 - 12:55

N’utilisant pas souvent les chaines de caractères, je me régalais avec cette version du compilateur.
Mais bon, j’attendrais la toute nouvelle.

Quelqu'un m'a dit : "il faut prendre son mal en patience." Crying or Very sad
Réflexion faite, je réponds : et si l'on prenait notre bien en urgence ?"  

Bon, je sors ! Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 7975
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 6 Aoû 2017 - 13:34

@ Papydall,

Pourquoi pas ?
lol!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jack
Admin
avatar

Nombre de messages : 1744
Date d'inscription : 28/05/2007

MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   Lun 7 Aoû 2017 - 23:50

Le problème général sur les chaines de caractères est résolu. Demain, je génère une nouvelle version.
Après 2 jours de recherche intensive et peu de sommeil, maintenant : Sleep Sleep Sleep

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Contenu sponsorisé




MessageSujet: Re: COMPILATEUR V 0.9 beta 8 du 18 aout 2017   

Revenir en haut Aller en bas
 
COMPILATEUR V 0.9 beta 8 du 18 aout 2017
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 2 sur 4Aller à la page : Précédent  1, 2, 3, 4  Suivant
 Sujets similaires
-
» compilateur
» PoiLoader 2.4.0 beta qui gère les wav (mais en anglais)
» probleme balise beta pour bing
» nouveaux pilote GEFORCE Beta 306.02
» Future mise à jour forumactif: BETA test terminée. La mise à jour est imminente!

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC Le compilateur :: Le Compilateur-
Sauter vers: