Forum Liberty Basic France

Le 15/05/2015 à 17h18

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 667
Reprise du message précédent

Manquerait plus que ce soit du (presque) tout cuit^^

Autrement je ne dirais qu'un mot : purée !

Je n'ai pas encore regardé vos productions que vous en êtes déjà à la version suivante ou à celle d'après, et fonctionnelle en plus : faut que je souffle un peu, là, j'arrive plus à suivre. En tout cas j'aurais de quoi étudier, c'est sûr. C'est peut-être même ce que je vais commencer par faire :)

Bon après-midi vous deux, et merci du coup de main... (je reste dans le secteur)

A+

Christophe, pas encore retraité :)
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 16/05/2015 à 10h33

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Bon, juste histoire de finir ce que j'ai commencé, et aussi pour mon plaisir ;) voici la version complète, avec décorticage du fichier texte et installation de la fable à l'écran.
Le prog devrait pouvoir lire tout fichier texte ( "Fable**.txt" ) pour peu qu'il soit formaté EXACTEMENT comme ci-dessous, avec 7 lignes maximum (ou bien il faut augmenter la hauteur de la fenêtre), et 10 mots maximum à trouver.

Code TEXT :
Le Corbeau et le Renard
Maître-Corbeau;Loup;Renard;Blaireau;Souriceau;Lion-sur un arbre-perché;en fleur;déraciné;penché;feuillu;magnifique-tenait en son bec un fromage.
Maître Renard, par l'odeur-alléchée;rouge vif;bleue;pourrie;puissante;sereine;assurée-lui tint à peu près ce langage.
Hé ! bonjour, Monsieur du-Corbeau;Courneau;Blaireau;Bigorneau;Taureau;Cours d'Eau-que vous êtes joli ! que vous me semblez beau !


Comme je ne sais plus s'il existe une commande qui donne la largeur d'un texte EN PIXELS , Il resterait à trouver les bonnes valeurs pour évaluer la bonne largeur des phrases en pixels...

Code VB :
' http://libertybasic.fr/forum/topic-384+definir-des-combobox-quand-on-n-en-connait-pas-le-nombre.php
' http://libertybasic.fr/forum/topic-393-0-4259+detecter-si-la-souris-est-au-dessus-d-une-zone.php#m4259
    nomainwin
 
    WindowWidth = 1000
    WindowHeight = 600
    UpperLeftX = (DisplayWidth-WindowWidth) / 3
    UpperLeftY = (DisplayHeight-WindowHeight) / 2
 
    mois$ = "Jan Fév Mar Avr Mai Jun Jui Aou Sep Oct Nov Déc"
    today$ = date$("mm/dd/yyyy")
    j = date$(today$)
    jsem$ = word$("Mar Mer Jeu x Ven Sam x Dim Lun",int((j/7-int(j/7))*10)+1)
    date$ = jsem$+" "+mid$(today$,4,2)+" "+word$(mois$, val(today$))+"   "+left$(time$(),5)'right$(today$,4)

    GLOBAL textFont$, textColor$, bckColor$, Gwidth, Gheight, lbx, lby, nz, nm, trou$
 
    DIM info$(10,10), lrmat$(10), mt$(10), mots$(6), lf$(10)
    lbx = 0
    lby = -200
 
    textFont$  = "Comic_Sans_MS" ' "Times_New_Roman"
    textColor$ = "yellow"
    bckColor$  = "26 72 43"    ' dark green ...
    ListboxColor$ = "cyan"
    trou$ = "-------------"
 
    statictext #w.debug "message de debug", 10, WindowHeight-55, 310, 40
    graphicbox #w.gr, 0, 0, WindowWidth, WindowHeight-135
    graphicbox #w.grtxt, 0, WindowHeight-136, WindowWidth, 65
    listbox #w.lb, mots$(), [valider], lbx, lby, 130, 6*21
 
    BUTTON #w.t1, "Nouveau fichier", Charge, UL, WindowWidth-480, WindowHeight-60 , 140, 25
    BUTTON #w.t2, "Recommencer", [rejoue], UL, WindowWidth-280, WindowHeight-60 , 100, 25
    BUTTON #w.exit, "QUITTER", Quit, UL, WindowWidth-120, WindowHeight-60 , 100, 25
    open "    Mots à trouver..."+space$(20)+date$ for window_nf as #w    ' graphics_nf_nsb
    #w "trapclose Quit"
    #w.gr "home; posxy CenterX CenterY"
    Gwidth = CenterX * 2
    Gheight = CenterY * 2
    #w "font ";textFont$;" 10 bold"
    #w.gr "font ";textFont$;" 14 bold"
    #w.gr "down"
    gosub [makeSprites]
    #w.grtxt "down; fill ";bckColor$ 
    #w.debug "!font Times_New_Roman 11 bold"
    #w.lb "singleclickselect"    'pour ne cliquer qu'une fois dans la listbox pour valider un mot...
    #w.gr "backcolor ";bckColor$;"; fill ";bckColor$
    call Charge "#w"
    #w.gr "when mouseMove XY"
 
WAIT
 
  sub mep  ' -------------------- en principe : décorticage du fichier texte -------------------
           '  traitement du fichier texte avec gestion des positions des mots, etc...
    call message 15,20,""
 
    for m=1 to 10
      mt$(m) = trou$
    next
 
    #w.gr "backcolor ";bckColor$;"; fill ";bckColor$
    #w.gr "color ";textColor$
 
    #w.gr "place 150 50;|";upper$(lf$(1))
    mah = 30
    itl = 50
    mag = 20
    li  = 2
    nm  = 0
    do
      lmt$ = word$(lf$(li),1,"-")
      if lmt$<>"" then
        ngm = 1
        ecm = 0
        do
          if instr(lmt$,";") then
            nm = nm + 1
            lrmat$(nm) = lmt$
            #w.gr "place ";mag + ecm;" ";mah + itl * li;";|";mt$(nm)
            #w.gr "spritexy zone";nm;" ";mag + ecm;" ";mah +itl * li -20
            ecm = ecm + len(mt$(nm))*13
          else
            #w.gr "place ";mag + ecm;" ";mah +itl * li;";|";lmt$
            ecm = ecm + len(lmt$)*10
          end if
          ngm = ngm + 1
          lmt$ = word$(lf$(li),ngm,"-")
        loop until lmt$=""
      else
        #w.gr "place ";mag;" ";mah+itl*li;";|";lf$(li)
      end if
      li = li + 1
    loop until lf$(li) = ""
 
    #w.gr "flush"
    #w.gr "color green"
  end sub
 
  sub XY handle$, mx, my    ' when mouseMove ...
       ' mx = MouseX
       ' my = MouseY

        #w.gr "spritexy Curs ";mx;" ";my
        #w.gr "spritecollides Curs list$"
        nz = val(right$(word$(list$,1),1))
        if nz>0 and nz<=nm and nz<>oldnz then
           #w.gr "spritexy? ";word$(list$,1);" x y"
           lbx = x
           lby = y
           for m=1 to 6
             mots$(m) =word$(lrmat$(nz),m,";")   'charge la nouvelle liste de mots
           next
           for mel=1 to 30           ' mélange
             hz0 = int(rnd(1)*nm)+1
             tmp$ = mots$(hz0)
             hz = int(rnd(1)*nm)+1
             mots$(hz0) = mots$(hz)
             mots$(hz) = tmp$
           next
           #w.lb "reload"
           #w "refresh"
           oldnz = nz
        else
           lbx = 0
           lby = -200
           #w "refresh"
        end if
  end sub
 
  [rejoue]
    call message 15,20,""
    #w.gr "color yellow"
    for m=1 to nm
      mt$(m) = trou$
      #w.gr "spritexy? zone";str$(m);" x y"
      #w.gr "place ";x;" ";y+20;";|";mt$(m)
    next
    #w.gr "flush ;discard"
    #w.gr "color green"
  wait
 
  [valider]
    #w.gr "when mouseMove"
    #w.lb "selection? mot$"
    mt$(nz) = mot$
    #w.gr "spritexy? zone";str$(nz);" x y"
    lbx = 0
    lby = -200
    #w "refresh"
    if len(mot$)<len(trou$) then     ' essai de centrage de l'affichage du mot...
      nsp = int((len(trou$)-len(mot$))/2)+3
      mot$ = space$(nsp)+mot$+space$(nsp)
    end if
    #w.gr "place ";x-5;" ";y+20;";|";mot$  ' au besoin ajuster la largeur à afficher pour correspondre à trou$
    #w.gr "flush ;discard"
    mc = 0
    for m = 1 to nm
      if mt$(m) = word$(lrmat$(m),1,";") then mc = mc + 1
    next
    if mc = nm then
      call message 15,20,"Bravo !  tout les mots sont justes !"
    else
      call message 15,20,""
    end if
    #w.gr "when mouseMove XY"
  wait
 
  [makeSprites]
     #w.gr "backcolor black; place 0 0 ;boxfilled 1 1"
     #w.gr "place 0 1 ; box 1 2"
     #w.gr "getbmp Curseur 0 0 1 2"
     #w.gr "addsprite Curs Curseur"   ' create sprite
     unloadbmp "Curseur"
     ' #w.gr "spritevisible Curs off"   ' hide curs

      'admettons qu'on prépare 10 sprites pour 10 mots a trouver maximum...
     #w.gr "place 0 10 ; boxfilled 130 30"
     #w.gr "place 0 30 ; box 130 50"
     #w.gr "getbmp zone 0 10 130 40"
     for nz = 1 to 10
       #w.gr "addsprite zone";nz;" zone"
     '  #w.gr "spritevisible zone";nz;" off"
     next
     unloadbmp "zone"
   return
 
    sub message posY,fonte,txt$
        #w.grtxt "font ";textFont$;" ";fonte
        #w.grtxt "fill ";bckColor$
        #w.grtxt "backcolor ";bckColor$;" ; color ";textColor$
        #w.grtxt "place 20 ";posY+26;" ;|";txt$
    end sub
 
    FUNCTION fileExists(path$, filename$)
        'DIM info$(10,10)   must be declared at the start of the prog.
        files DefaultDir$, filename$, info$()  ' path$ = 'DefaultDir$' generally.
        fileExists = val(info$(0, 0))  'not zero if true
    END FUNCTION
 
    SUB Charge handle$
        filedialog "Fichiers de données", "Fable*.txt", fileName$
        if fileName$ <> "" then
            #w.debug "Bientôt sans doute..."
            open fileName$ for input as #show
            while eof(#show) = 0
                ligne = ligne + 1
                line input #show, lf$(ligne)
            wend
            lf$(ligne+1) = ""
            close #show
            #w.debug fileName$ 
            call mep
        end if
    end sub
 
    sub Quit handle$
        close #w
        END
    end sub
 


Pas testé avec une autre fable... ;)

@+

Gilles.



Edité par cassiope01 Le 17/05/2015 à 08h04
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 16/05/2015 à 14h07

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Citation:
7 lignes maximum (ou bien il faut augmenter la hauteur de la fenêtre)

Il me semble avoir vu des fenêtres en couleur avec ascenseur (vais essayer de remettre la main dessus)
Vu comment il s'est débrouillé comme un chef avec les longueurs de textes dans son premier code
ça devrait bien le faire.

Edit: J'ai fait un essai avec un autre texte (en respectant la procédure of course)
Il y a un problème avec les retours lignes que je ne comprends pas.
J'ai fait des lignes plus courtes que l'original et le texte ne reviens pas à la ligne dans le prog.
Bizarre...

Re edit: C'est une facétie du bloc note; j'ai sautée une ligne, le texte est alors retourné à la ligne dans le prog
Mais en rouvrant le texte dans le bloc note la ligne sautée avait disparu.
Gloups ?!
____________________
Roro

   
Le 16/05/2015 à 14h46

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Il y a aussi le titre que tu a mis en "dur" dans le code et qui pourrait être le nom du fichier
Ou qui pourrait être extrait du texte avant son traitement par un "ligne input" dédié
____________________
Roro

   
Le 16/05/2015 à 15h14

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Ah oui ! c'est un oubli : réparé.

Le nom du fichier apparait maintenant en bas à gauche.



Edité par cassiope01 Le 16/05/2015 à 15h24
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 16/05/2015 à 17h21

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Christophe va pouvoir peaufiner le truc à son goût.
Enfin...Comme tu a congelé et pané ton poisson vivant, il va falloir qu'il mange du pain avec
Pour ...Faire passer les arêtes. :lol
____________________
Roro

   
Le 17/05/2015 à 14h26

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Christophe, si tu veux les dimensions de la police employée par Cassiope:
"Comic_Sans_MS 14 bold"; j'ai mesurées 8 longueurs en pixels:
m = 17
w = 15
b d g h n o p q u = 12
a c e k s v x y = 11
z = 10
r = 8
f t = 6
i j l espace= 5
Si tu veux mesurer d'autres polices, demande, j'ai fait un petit prog d'affichage (10 caractères par ordre de longueurs)
En gros, ce qu'il reste à faire:
- Dimensionner la listbox 2 solutions:
La simple: placer les dimensions dans une chaine en tête de fichier.
La complexe: Ajouter la dimensions au token "-"
sous-entends procédure de saut pour l'affichage
- Placer les textes en fonction dimensions listbox's et des longueurs de textes
- Définir longueurs de textes (8 longueurs de caractères)
- Et autres options au choix...
____________________
Roro

   
Le 17/05/2015 à 15h15

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Pourquoi faire aussi compliqué ? Qu'est-ce que c'est que le "token" ?

Plus simplement il est aussi possible de définir les largeur et hauteur de la police utilisé dans la commande de sa déclaration FONT.
Le reste c'est au pifomètre jusqu'à satisfaction esthétique, et puis voilà...;)



Edité par cassiope01 Le 17/05/2015 à 15h19
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 17/05/2015 à 16h14

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Citation:
il est aussi possible de définir les largeur et hauteur de la police

Oui, mais en fonction des caractères présents le texte n'a pas la même longueur
Entre le: "W" à 17 pxls et le: "j" à 5 pxls, ça peut faire de sacrées différences selon la phrase
Et pour que ça sorte bien propre, ça ne coûterait pas si cher de calculer les placements en fonction du texte
Régler la largeur de la listbox serait intéressant aussi (pour le fun)

Le token, c'est le "-" (délimiteur en français ?)
____________________
Roro

   
Le 17/05/2015 à 17h19

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Tu as essayé ? parce que je crois bien qu'en donnant les valeurs de largeur et hauteur dans FONT, on "force" les caractères à ces dimensions...
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 17/05/2015 à 18h15

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Ah non, je n'ai jamais vu ça
ça doit mettre tous les caractère à la même largeur
Je vais aller voir ce qu'il y a dans la doc
____________________
Roro

   
Le 17/05/2015 à 18h30

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Je viens de tester, et en effet, on peut étirer les caractères dans tous les sens.
Mais le rapport "w"/"J" reste inchangé.
J'avais vu quelque part un texte avec des caractères égaux en largeur
C'est très bizarre; ça fait comme s'il y avait des espaces au milieu des mots.
____________________
Roro

   
Le 17/05/2015 à 23h26

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
On bricole, on bricole
J'ai mis:longtxt=0 avec: ecm = 0
Dans la "DO" de la SUB "mep", j'ai mis ça:
call longtext lmt$
ecm = ecm + longtxt

A la place de ça:
ecm = ecm + len(lmt$)*10

longtxt en global

Et la SUB:
Code VB :
 
  sub longtext chain$
     for j=1 to len(chain$)
        car$= mid$(chain$,j,1)
        select case car$
          case "m"
          longtxt=longtxt+17
          case "w"
          longtxt=longtxt+15
          case "z"
          longtxt=longtxt+10
          case "r"
          longtxt=longtxt+8
        end select
          if car$="b" or car$="d" or car$="g" or car$="h" or car$="n" or car$="o" or car$="p" or car$="q" or car$="u" then
             longtxt=longtxt+12
          end if
          if car$="a" or car$="c" or car$="e" or car$="k" or car$="s" or car$="v" or car$="x" or car$="y" then
             longtxt=longtxt+11
          end if
          if car$= "f" or car$="t" then
             longtxt=longtxt+6
          end if
          if car$="i" or car$="j" or car$="l" or car$=" " then
             longtxt=longtxt+5
          end if
     next j
  end sub
 

ça a l'air de marcher, mais maintenant, il faut trouver la ligne qui place les zones
____________________
Roro

   
Le 18/05/2015 à 13h40

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 667
Bon, bah je vais laisser filer le peloton de tête, hein, et je vais aller cueillir des fraises, parce que là, eh bien, je suis largué^^.

Pas tant que ça, en fait, mais faut reconnaître qu'il est sportif de suivre à la fois vos travaux, de me demander comment je vais les intégrer dans le programme d'origine, et concevoir/débuguer ma combo perso (dans le but de pouvoir en créer "à la volée", contrairement à celle qui est fournie).

Au fait, pour la police de caractère, on devrait pouvoir récupérer les largeurs de caractères directement dans son fichier ? Il "suffit" de savoir à quel endroit ça se trouve. C'est sûrement codifié quelque part, j'espère qu'il n'y a pas une histoire de copyright qui empêche d'accéder au biniou. Je me renseigne.

A+

Et comme d'hab : chapeau !
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 18/05/2015 à 14h57

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 667
Premiers résultats de la recherche : bon, Roland, c'est quoi, ton petit programme ?

Indépendamment de toute considération de format truetype, opentype, et autres...

J'ai pas trouvé comment lire la largeur de caractère, et j'ai appris qu'il existait une table d'approches, l'approche étant l'intervalle entre deux lettres. L'approche peut être variable pour éviter un affichage "disgracieux" de certains couples de lettres, comme AV, si on ne corrigeait pas leur espacement.

Donc la maîtrise de l'affichage de texte sous-entend de prendre en compte la largeur du caractère, et l'approche. Je suppose que l'approche concerne l'association de caractères, et pas chaque caractère individuellement. En bref ça me semble bien compliqué à gérer.

Un bout de code en début de programme qui mesurerait l'affichage de chaque lettre sur une fenêtre invisible à l'utilisateur rendrait les mêmes service...
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 18/05/2015 à 15h58

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Le petit prog que voici affiche 10 caractères, avec le clic droit on a la coordonnée du dernier;
On soustrait la marge (-10); on divise par 10 et on a la largeur de un caractère (on est pas à 1 pixel près)
Si tu veux tester une autre police, il suffit de la changer dans la ligne ad hoc:
#w.m , "font Comic_Sans_MS 14 bold"
Code VB :
 
 
     NOMAINWIN
    WindowWidth = 280
    WindowHeight = 575
    UpperLeftX = (DisplayWidth-WindowWidth)-200
    UpperLeftY = 5 ' (DisplayHeight-WindowHeight)
    GRAPHICBOX #w.m 0, 0, 280, 575
    OPEN "Long caract" FOR window_nf AS #w
    #w, "TRAPCLOSE [closeHelp]"
    #w.m , "When rightButtonUp ButtonLeftUp"'
    #w.m , "down"
   #w.m , "font Comic_Sans_MS 14 bold"
    'wait
  [p1]
    #w.m , "fill blue; color yellow; backcolor blue"
    #w.m , "PLACE 10, 20": #w.m, "\mmmmmmmmmm"  ' m = 17
    #w.m , "PLACE 10, 40": #w.m, "\wwwwwwwwww"  ' w = 15
    #w.m , "PLACE 10, 60": #w.m, "\bbbbbbbbbb"  ' b d g h n o p q u = 12
    #w.m , "PLACE 10, 80": #w.m, "\dddddddddd"
    #w.m , "PLACE 10, 100": #w.m, "\gggggggggg"
    #w.m , "PLACE 10, 120": #w.m, "\hhhhhhhhhh"
    #w.m , "PLACE 10, 140": #w.m, "\nnnnnnnnnn"
    #w.m , "PLACE 10, 160": #w.m, "\oooooooooo"
    #w.m , "PLACE 10, 180": #w.m, "\pppppppppp"
    #w.m , "PLACE 10, 200": #w.m, "\qqqqqqqqqq"
    #w.m , "PLACE 10, 220": #w.m, "\uuuuuuuuuu"
    #w.m , "PLACE 10, 240": #w.m, "\aaaaaaaaaa"  ' a c e k s v x y = 11
    #w.m , "PLACE 10, 260": #w.m, "\cccccccccc"
    #w.m , "PLACE 10, 280": #w.m, "\eeeeeeeeee"
    #w.m , "PLACE 10, 300": #w.m, "\kkkkkkkkkk"
    #w.m , "PLACE 10, 320": #w.m, "\ssssssssss"
    #w.m , "PLACE 10, 340": #w.m, "\vvvvvvvvvv"
    #w.m , "PLACE 10, 360": #w.m, "\xxxxxxxxxx"
    #w.m , "PLACE 10, 380": #w.m, "\yyyyyyyyyy"
    #w.m , "PLACE 10, 400": #w.m, "\zzzzzzzzzz"  ' z = 10
    #w.m , "PLACE 10, 420": #w.m, "\rrrrrrrrrr"  ' r = 8
    #w.m , "PLACE 10, 440": #w.m, "\ffffffffff"  ' f t = 6
    #w.m , "PLACE 10, 460": #w.m, "\tttttttttt"
    #w.m , "PLACE 10, 480": #w.m, "\iiiiiiiiii"  ' i j l espace= 5
    #w.m , "PLACE 10, 500": #w.m, "\jjjjjjjjjj"
    #w.m , "PLACE 10, 520": #w.m, "\llllllllll"
 
    '-------------
  wait
          Sub ButtonLeftUp handle$, xClick, yClick  'prise de cotes
        #w.m , "Place ";xClick;" ";yClick      'a suprimer
        #w.m , "\x=";xClick
        #w.m , "\y=";yClick
         End Sub
  [closeHelp]
    CLOSE  #w
    END
 

Je ne pense pas qu'il faille tenir compte de l'approche, c'est la largeur des caractères qui gère l'espacement.

Je pense aussi que plutôt que de vouloir intégrer le code de cassiope au tiens, il faut que tu l'analyse finement, jusqu'à le "posséder" (ça ne va pas être facile car il y a beaucoup de sujets abordés, avec en plus quelques subtilités de "out of nowhere", et le maître n'a pas été très généreux en commentaires).
Mais on peut en discuter
Quand je pense qu'il a dû pondre ça en une heure ou deux, j'suis vert :(

La SUB du message au dessus analyse la partie de texte et incrémente: "longtxt" de chaque largeur rencontrée.
Le blème est de l'appeler aux bons endroits et de poser "longtxt" aux bons endroits aussi; et ça, c'est pas gagné.
____________________
Roro

   
Le 18/05/2015 à 18h31

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Roland à raison Christophe, je suis confu mais mon code est plutôt conçu pour respecter entièrement le cahier des charges de ton code d'origine ( ou en tout cas ce que j'en ai compris :p ) et non pour y être intégré...

J'avais quand même réfléchi aux solutions à mettre en oeuvre lors de mes post précédents... mais effectivement je l'ai fait en quelques heures (il a bien fallu que je relise beaucoup la doc, depuis le temps, j'avais beaucoup oublié...) et je n'ai donc pas trop pris la peine de commenter... désolé pour ça.
J'essayerai de répondre à toute question...

Pourquoi s'embéter avec toutes ces questions de largeur de texte etc ?? centrer simplement le mot trouvé dans l'espace réservé me semblait plus simple...!!!

Pourquoi veux-tu créer une ComboBox (ou LisBox) "fait main" puisqu'elle existe toute faite ? de plus on peut décider de sa taille, sa position à l'écran, sa couleur, la police des mots qu'elle contient, etc... à moins que ce ne soit que pour le fun :lol

Mon but est bien de te montrer qu'on peut faire plein de choses en relativement peu de code avec JustBasic, en évitant l'usine à gaz souvent décourageante tant on n'arrive parfois jamais à en voir le bout... sans pourtant obtenir vraiment ce que l'on souhaitais au départ...

Il faut vraiment essayer de voir les choses plus simplement (pas comme Roland ;) ) car après tout, ce ne sont que quelques commandes qu'on écrit les unes à la suite des autres en faisant en sorte que la chronologie d'écriture donne le résultat recherché...!
C'est tout comme les LEGO :top


@+

Gilles



Edité par cassiope01 Le 18/05/2015 à 18h36
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 18/05/2015 à 20h00

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 667
cassiope01:

Roland à raison Christophe, je suis confu mais mon code est plutôt conçu pour respecter entièrement le cahier des charges de ton code d'origine ( ou en tout cas ce que j'en ai compris :p ) et non pour y être intégré...


C'était façon de parler, je ne l'aurais pas repris littéralement, mais je m'en serais inspiré pour modifier le mien. Autrement oui, le cahier des charges est respecté - en beaucoup moins de temps qu'il m'aura fallu^^. Pour la confusion, pas de panique, je peux toujours ajouter des lignes blanches et des commentaires au fur et à mesure de la lecture.


cassiope01:

Pourquoi s'embéter avec toutes ces questions de largeur de texte etc ?? centrer simplement le mot trouvé dans l'espace réservé me semblait plus simple...!!!


J'ai compris que Roland parlait de la disposition du texte au sens large, pas forcément celui du combobox. Dans mon prog j'avais sur une meme ligne des morceaux de phrases entrecoupées par des combobox, et pour que ces éléments soient alignés sans chevauchement ni vides, il fallait connaitre la longueur du précédent pour placer le suivant, d'où l'utilisation de police à chasse fixe, prévisible. Roland et moi cherchons le moyen d'utiliser une police à chasse variable, et prévoir l'encombrement d'une phrase est impossible tant qu'on ne connait pas la largeur occupée par chacun des caractères.


cassiope01:

Pourquoi veux-tu créer une ComboBox (ou LisBox) "fait main" puisqu'elle existe toute faite ? ...à moins que ce ne soit que pour le fun :lol


En partie pour le fun... Car c'est un bon exercice, maintenant que je sais détecter la présence d'une souris au dessus d'une zone donnée : une combobox, c'est plusieurs zones à gérer, et pas toutes en même temps.

La cerise sur le gâteau serait de pouvoir les créer "à la demande". Or la vraie combo ne le permet pas, donc créer une combo perso est une voie comme une autre de contourner le problème. Ce n'est pas un but, je me familiarise, si je n'y arrive pas c'est pas la cata. Grâce à vous il y a déjà deux solutions alternatives disponibles. :top

Autrement il est clair que je pars facilement à l'aventure, et que les choses se compliquent au fil du temps pour devenir finalement inextricables, et il y eut un bon nombre de programmes inachevés "dans ma jeunesse" (Basic MSX, pour situer l'époque), à cause de cette absence de recul. Il n'y a pas que l'apprentissage du langage pour savoir programmer. Papier, crayon, on écrit les grandes étapes, on peaufine, et seulement après on assemble les briques du Lego.

Si ça peut aider les débutants, ou moins débutants, à arriver quelque chose^^


Roland:

Quand je pense qu'il a dû pondre ça en une heure ou deux, j'suis vert :(

Moi aussi. Dans mon esprit, c'était le travail d'une après-midi, deux grand maximum. Mais je n'aurais jamais eu l'idée de m'inscrire au forum :)

A+

Christophe.
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 18/05/2015 à 20h40

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Citation:
Il faut vraiment essayer de voir les choses plus simplement (pas comme Roland ;)

Que le cul me pèle si ce code est facile. :s
____________________
Roro

   
Le 18/05/2015 à 20h47

Libertynaute Expert

Groupe: Membre

Inscrit le: 19/02/2011
Messages: 767
Désolé pour ton cul Roland : ça doit faire mal :lol



Edité par cassiope01 Le 18/05/2015 à 20h48
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."

Web    
Le 18/05/2015 à 21h16

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2327
Citation:
mais je m'en serais inspiré pour modifier le mien

Tu ne peux pas t'inspirer de la méthode cassiope qui est d'un "autre monde" que la tienne (le monde des sprites).
C'est vrai qu'il n'est pas facile de décortiquer le code d'un autre, mais celui-ci est riche d'enseignements, tant sur les sujets que sur la méthode.
Tu peux bien sûr continuer de te faire les griffes à ta façon, mais quand ton code va devenir volumineux, on ne pourra plus t'aider que sur des points de détail, plus sur le fond et la méthode.

C'est ce qui est arrivé à d'autres, qui a continué seul, et dont les codes sont bourrés de maladresses et de redondances. Il est plus profitable de suivre les maîtres, au prix de se faire fumer les neurones. (et de se traiter d'imbécile quand on s"entend dire que l'entourloupe sur laquelle on bute depuis une semaine est pourtant très simple).
____________________
Roro

   

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie