IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Pascal Discussion :

Projet d'un programme de jeu d'échecs


Sujet :

Contribuez Pascal

  1. #201
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Citation Envoyé par Jipété Voir le message
    On se rend bien compte (et ça fait pareil sur mes démos de ce week-end) que les pièces blanches ne sont pas blanches mais transparentes ! Résultat elles se lisent mal quand elle sont sur fond sombre
    Cela peut etre corrigé en dessinant les pieces blanches en deux temps :
    - d'abord utiliser les caracteres des pieces noires avec une couleur de police blanche pour remplir la piece
    - puis utiliser les caracteres des pieces blanches avec la couleur de police noire pour dessiner le contour
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  2. #202
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 699
    Points : 15 042
    Points
    15 042
    Par défaut
    Yep !

    Citation Envoyé par circular17 Voir le message
    Cela peut etre corrigé en dessinant les pieces blanches en deux temps :
    - d'abord utiliser les caracteres des pieces noires avec une couleur de police blanche pour remplir la piece
    - puis utiliser les caracteres des pieces blanches avec la couleur de police noire pour dessiner le contour
    Excellent la première ligne ! Du coup ça m'a inspiré ça, en faisant tout avec des pièces "pleines" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    procedure DrawLeFond(bmp: TBGRABitmap);
    var
      i: integer;
      pix: TBGRAPixel;
    begin
      pix.blue:=127; pix.green:=127; pix.red:=180; pix.alpha:=255;
      bmp.Fill(pix);
    end;
     
    procedure DrawLesPartsWhite(bmp: TBGRABitmap);
    const
      CHARS: array[0..9]of string = (
        '',
        '',
        '',
        '',
        '',
        '',
        '',
        ' ♟♟♟♟♟♟♟♟ ',
        ' ♜♞♝♛♚♝♞♜ ',
        ''
      );
    var
      i: integer;
    begin
      bmp.FontName := 'Serif'; // police installée
      bmp.FontHeight := 40;
      for i := 0 to 9 do
        bmp.TextOut(0, 40 * i, CHARS[i], BGRAWhite);
    end;
     
    procedure DrawLesPartsBlack(bmp: TBGRABitmap);
    const
      CHARS: array[0..9]of string = (
        '',
        ' ♜♞♝♛♚♝♞♜ ',
        ' ♟♟♟♟♟♟♟♟ ',
        '',
        '',
        '',
        '',
        '',
        '',
        ''
      );
    var
      i: integer;
    begin
      bmp.FontName := 'Serif'; // police installée
      bmp.FontHeight := 40;
      for i := 0 to 9 do
        bmp.TextOut(0, 40 * i, CHARS[i], BGRABlack);
    end;
     
    procedure TForm1.FormPaint(Sender: TObject);
    begin
      FBmp.SetSize(Width, Height);
      DrawLeFond(FBmp);
      DrawLesPartsWhite(FBmp);
      DrawLesPartsBlack(FBmp);
      FBmp.Draw(Canvas, 0, 0);
    end;
    qui nous amène à :

    Nom : newparts.png
Affichages : 260
Taille : 14,8 Ko

    Reste plus qu'à adapter ça à une StringGrid ; en mode DefaultDraw à False ça devrait le faire. Je creuserai !

    Merci pour l'idée,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #203
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Ben oui mais non, les pieces toutes blanches, cela va sur les cases noires, mais pas sur les cases blanches !

    Note que si la police est installee, tu peux utiliser un rendu de la police avec effets, et mettre un contour. Voila un exemple comment faire cela:
    http://wiki.freepascal.org/BGRABitma...Font_rendering
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  4. #204
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par circular17 Voir le message
    Note que si la police est installee, tu peux utiliser un rendu de la police avec effets, et mettre un contour. Voila un exemple comment faire cela:
    http://wiki.freepascal.org/BGRABitma...Font_rendering
    Très jolis exemples. J'aime beaucoup aussi le style du tutoriel.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #205
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 699
    Points : 15 042
    Points
    15 042
    Par défaut
    Citation Envoyé par circular17 Voir le message
    Ben oui mais non, les pieces toutes blanches, cela va sur les cases noires, mais pas sur les cases blanches !
    Ah, tu t'en es rendu compte toi aussi, c'est donc pas la peine que je fasse un topo là-dessus avec copie d'écran et tout et tout, impec !


    Citation Envoyé par circular17 Voir le message
    Note que si la police est installee, tu peux utiliser un rendu de la police avec effets, et mettre un contour. Voila un exemple comment faire cela:
    http://wiki.freepascal.org/BGRABitma...Font_rendering
    Oui, j'avais étudié tous ces tutos la semaine dernière (c'est d'ailleurs avec le tuto Using fonts with LazFreeType integrated in Lazarus que j'ai eu ce souci de non fonctionnement de la collection... ).

    Ben ça me pose de gros soucis : d'abord je n'arrive pas à écrire ailleurs que sur le fond de forme, et pire, en adaptant l'exemple de /usr/share/lazarus/1.4.0/examples/lazfreetype, je n'ai aucun rendu...
    Autant dire que pour jouer avec une StringGrid c'est pas gagné.

    Et si on rajoute le fait que ça met une joyeuse pagaille dans les couleurs quand ça s'affiche, j'ai peur de ne pas voir le bout du tunnel :
    comme on le voit à droite, j'ai utilisé les codes Unicode récupérés par copier/coller du fichier texte qu'on voit à gauche pour faire afficher sur une Form avec color à clCream qui n'a pas résisté au bmp.Draw(Canvas,0,0);tout ça pour dire qu'il faudrait gérer différemment les pièces blanches et les pièces noires, ce qui fait perdre tout le bénéfice d'utiliser des polices spécialisées et la facilité de mise en œuvre.

    Nom : réponse_bgra.jpg
Affichages : 234
Taille : 68,2 Ko

    Un peu découragé, ce soir...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #206
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Très jolis exemples. J'aime beaucoup aussi le style du tutoriel.
    Merci. Je suis content que cela soit joli

    @jipete: Je suis triste que de tous mes tutoriels, tu ne retiennes que ce qui ne fonctionne pas. Cela dit, je suis toujours interesse d'ameliorer et corriger les moindres details alors je suis un peu frustre de ne pas comprendre ce que tu ecris.

    Sinon tu sembles faire de nouveau le rapprochement entre LazFreeType et StringGrid. Il me semble qu'une StringGrid utilise le rendu du systeme et pas LazFreeType. C'est-a-dire que c'est comme dans BGRABitmap (version normale, pas fpGUI ou noGUI) et quand tu utilises le rendu du texte par defaut. Les versions fpGUI et noGUI de BGRABitmap n'ayant pas acces au polices systeme, elles utilisent par defaut LazFreeType.

    La suite au sujet des couleurs me semble confuse. Ou veux-tu en venir ?

    Est-ce que tu es desespere parce que tu te dis que tu n'y arriveras jamais ?
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  7. #207
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 699
    Points : 15 042
    Points
    15 042
    Par défaut
    Salut,
    Citation Envoyé par circular17 Voir le message
    @jipete: Je suis triste que de tous mes tutoriels, tu ne retiennes que ce qui ne fonctionne pas. Cela dit, je suis toujours interesse d'ameliorer et corriger les moindres details alors je suis un peu frustre de ne pas comprendre ce que tu ecris.
    Hé bien, tu sais, c'est comme en voiture, tant que la route est belle tu ne dis rien, et si tu te prends un cahot ou un nid de poule tu hurles "aïe !"

    Donc quand j'ai découvert le tuto que tu cites, je me suis dit "super ! ça va le faire", j'ai créé un nouveau projet avec mon ide et à chaque fois que je lisais "Form.Create" je faisais un copier/coller vers un nouveau bouton pour voir ce que cette nouvelle procédure allait offrir ; bon, j'ai eu de petits soucis avec les uses mais j'ai pu les résoudre et tout s'est bien passé 6 fois, jusqu'à la 7e procédure, la fameuse "Using fonts with LazFreeType integrated in Lazarus".
    Et celle-là, pas moyen de la faire fonctionner ! :

    Nom : mess_erreur.png
Affichages : 414
Taille : 19,1 Ko

    Citation Envoyé par circular17 Voir le message
    Sinon tu sembles faire de nouveau le rapprochement entre LazFreeType et StringGrid. Il me semble qu'une StringGrid utilise le rendu du systeme et pas LazFreeType. C'est-a-dire que c'est comme dans BGRABitmap (version normale, pas fpGUI ou noGUI) et quand tu utilises le rendu du texte par defaut. Les versions fpGUI et noGUI de BGRABitmap n'ayant pas acces au polices systeme, elles utilisent par defaut LazFreeType.
    Ah ben si on me cache des choses, alors
    V'là un truc que je découvre : il y a des polices qui ne sont pas accessibles aux applications, c'est ça ?! Je l'ignorais, et ça rajoute une couche de complexité...
    Et tout de suite une première question : comment savoir lesquelles ?

    Citation Envoyé par circular17 Voir le message
    La suite au sujet des couleurs me semble confuse. Ou veux-tu en venir ?
    Ben juste que j'aimerais avoir quelque chose de joli (pièces blanches bien visibles) et en même temps bénéficier du confort de la StringGrid pour la gestion de la "mécanique" (détection ultra simple de la case cliquée par exemple).

    Citation Envoyé par circular17 Voir le message
    Est-ce que tu es desespere parce que tu te dis que tu n'y arriveras jamais ?
    Xactement !
    D'autant plus frustrant que sur le web, il y a plein de sites qui fonctionnent ainsi (les pièces blanches bien visibles), à coups de css et javascript (que je ne maîtrise absolument pas).
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #208
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Pour ma part, je n'ai pas eu de problème à faire fonctionner l'exemple "Using fonts with LazFreeType", sauf quand j'ai voulu remplacer la police Arial par la police Chess Alfonso-X : alors j'ai eu la même exception que Jipété ("Font family not found"). Pourtant il me semble que j'avais fait tout comme il faut. Je n'ai pas insisté parce que je ne pense pas utiliser une police pour mon jeu : c'était par pure curiosité que j'avais fait l'essai. En outre, l'exemple fpGUI fonctionne (voir plus haut).

    P.-S. Je précise que j'utilise l'unité EasyLazFreeType modifiée.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  9. #209
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 699
    Points : 15 042
    Points
    15 042
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Pour ma part, je n'ai pas eu de problème à faire fonctionner l'exemple "Using fonts with LazFreeType", sauf quand j'ai voulu remplacer la police Arial par la police Chess Alfonso-X : alors j'ai eu la même exception que Jipété ("Font family not found"). Pourtant il me semble que j'avais fait tout comme il faut.
    En ce qui me concerne, que j'utilise une police installée ou pas, le résultat est le même : dans le mur !

    D'ailleurs, j'aimerais bien savoir à quoi peut bien servir cette procédure (et l'idée qui se cache dessous) FontCollection.AddFile...
    Pour faire des classements thématiques ?

    Citation Envoyé par Roland Chastain Voir le message
    P.-S. Je précise que j'utilise l'unité EasyLazFreeType modifiée.
    Tout pareil.

    Ah, une précision : j'ai écrit 6 exemples parce que ce tuto est précédé d'un autre où il y avait déjà des exemples que j'ai rapatrié sous 3 boutons, ceci explique cela.

    Autre précision : dans ce cas particulier, j'utilise Form.Create comme dans le tuto, et ensuite un bouton qui reprend le code de Form.Paint du tuto, en ayant juste changé le nom de la police parce qu'Arial sous Linux, euh...

    [EDIT] Pour y voir clair, j'ai recréé un unique projet concernant ce problème ; les commentaires sont clairs, je crois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    uses
      LazFreeTypeFontCollection,
      BGRABitmap, BGRABitmapTypes, BGRAFreeType;
     
    var FFontCollection: TFreeTypeFontCollection;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FFontCollection := TFreeTypeFontCollection.Create;
    //  FFontCollection.AddFile('Arial.ttf'); // origine
    //  FFontCollection.AddFile('gtw.ttf'); // police dans ma machine
      FFontCollection.AddFile('/usr/share/fonts/truetype/gnutypewriter/gtw.ttf');
      SetDefaultFreeTypeFontCollection(FFontCollection);
    end;
     
    procedure TForm1.FormPaint(Sender: TObject);
    var
      bmp: TBGRABitmap;
      renderer: TBGRAFreeTypeFontRenderer;
    begin
      bmp := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToRGB(clBtnFace));
      renderer := TBGRAFreeTypeFontRenderer.Create;
      bmp.FontRenderer := renderer;
    //  bmp.FontName := 'Arial'; // origine -> Exception "cannot activate" dans ttfile.pas ligne 249
      bmp.FontName := 'GNUTypewriter';
    // si pas de chemin dans FormCreate : Exception "cannot activate" dans ttfile.pas ligne 249
    // si chemin complet dans FormCreate : "Font family not found" dans easylazfreetype.pas ligne 803
      bmp.FontFullHeight:= 50;
      bmp.FontQuality := fqFineClearTypeRGB;
      bmp.TextOut(10,10,'Hello world',BGRABlack);
      bmp.Draw(Canvas,0,0);
      bmp.Free;
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      SetDefaultFreeTypeFontCollection(nil);
      FreeAndNil(FFontCollection);
    end;
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  10. #210
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Citation Envoyé par Jipété Voir le message
    j'ai eu de petits soucis avec les uses mais j'ai pu les résoudre
    S'il y a des choses qui manquent de le tutoriel, tu peux les rajouter. Je ne suis pas en exces de contributeurs.

    Hé bien, tu sais, c'est comme en voiture, tant que la route est belle tu ne dis rien, et si tu te prends un cahot ou un nid de poule tu hurles "aïe !"
    Ah ben c'est nouveau cette histoire de LazFreeType et comme il y a presque personne qui s'en occupe, ce n'est pas tres testé. C'est la solution la plus évidente pour BGRABitmap avec fpGUI, qui est tout nouveau aussi.

    et tout s'est bien passé 6 fois, jusqu'à la 7e procédure, la fameuse "Using fonts with LazFreeType integrated in Lazarus".
    Et celle-là, pas moyen de la faire fonctionner ! :

    Nom : mess_erreur.png
Affichages : 414
Taille : 19,1 Ko
    Citation Envoyé par Roland Chastain Voir le message
    Pour ma part, je n'ai pas eu de problème à faire fonctionner l'exemple "Using fonts with LazFreeType", sauf quand j'ai voulu remplacer la police Arial par la police Chess Alfonso-X : alors j'ai eu la même exception que Jipété ("Font family not found").
    Oui, c'est un bug dont on a déjà parlé, qu'Arial est nécessaire dans tous les cas. Comme dit, j'ai envoyé des corrections pour cela mais cela peut prendre longtemps avant que ce ne soit mis dans le SVN de Lazarus. Parfois, je suis un peu découragé et puis après je me dis, ben autant envoyer les correctifs et on verra bien si on jour ce sera pris en compte.

    Sinon, plus généralement, l'erreur a lieu quand les fichiers de polices ne sont pas chargés. Cela peut être pour diverses raisons :
    - pas de fichier
    - chemin de recherche pas adéquat
    - fichier trouvé mais police pas chargé (comme on a eu avec les polices de symboles, aussi un correctif qui est maintenant en attente)

    Je précise encore au cas ou ce ne serait pas clair que LazFreeType ne va pas regarder dans les répertoires du système. Pour m'assurer que les gens comprennent cela, j'ai rajouté quelques remarques dans le tutoriel.

    P.-S. Je précise que j'utilise l'unité EasyLazFreeType modifiée.
    Oui, les corrections en question permettent le chargement des polices de symbole, mais ne règlent pas la question de la police Arial. Elle doit toujours etre présente dans la collection.
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  11. #211
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Ah ben si on me cache des choses, alors
    Tu penses que des gens te cachent volontairement des choses dans le but de te faire échouer ?

    V'là un truc que je découvre : il y a des polices qui ne sont pas accessibles aux applications, c'est ça ?! Je l'ignorais, et ça rajoute une couche de complexité...
    Et tout de suite une première question : comment savoir lesquelles ?
    Comme expliqué dans le tutoriel, avec LazFreeType, par defaut aucune police du systeme n'est accessible, il faut toutes les fournir.

    Citation Envoyé par Jipété Voir le message
    Ben juste que j'aimerais avoir quelque chose de joli (pièces blanches bien visibles) et en même temps bénéficier du confort de la StringGrid pour la gestion de la "mécanique" (détection ultra simple de la case cliquée par exemple).
    Ah oui non cela ne me semble pas simple. La détermination du clic est facile a faire, il s'agit d'une division entière de la coordonnée reçue dans MouseDown.

    D'autant plus frustrant que sur le web, il y a plein de sites qui fonctionnent ainsi (les pièces blanches bien visibles), à coups de css et javascript (que je ne maîtrise absolument pas).
    Est-ce que tu compares ce que tu fais avec des choses existantes et abouties ?

    j'aimerais bien savoir à quoi peut bien servir cette procédure (et l'idée qui se cache dessous) FontCollection.AddFile...
    Pour faire des classements thématiques ?
    Cela sert à ajouter un fichier à la collection, pour qu'elle soit disponible ensuite en faisant FontName := 'Arial' par exemple.

    Dans ton code, il manque l'ajout de la police Arial.
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  12. #212
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par circular17 Voir le message
    Oui, les corrections en question permettent le chargement des polices de symbole, mais ne règlent pas la question de la police Arial. Elle doit toujours etre présente dans la collection.
    Citation Envoyé par circular17 Voir le message
    Dans ton code, il manque l'ajout de la police Arial.
    Bien vu ! Il s'agissait bien de cela. Merci pour ta réponse : ça fonctionne maintenant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FFontCollection := TFreeTypeFontCollection.Create;
      FFontCollection.AddFile('Arial.ttf');
      FFontCollection.AddFile('alfoches.ttf');
      SetDefaultFreeTypeFontCollection(FFontCollection);
    end;
    J'avais compris que le fichier arial.ttf devait être présent dans le répertoire mais je n'ai pas pensé qu'il fallait aussi l'ajouter à la collection, ce qui paraît logique une fois qu'on y pense.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  13. #213
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Voici un essai avec la police Chess Condal. Assez joli, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    unit u_lazfreetype;
     
    {$MODE objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs;
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormPaint(Sender: TObject);
      private
        { private declarations }
      public
        { public declarations }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.lfm}
     
    uses
      BGRABitmap, BGRABitmapTypes, BGRAFreeType, BGRATextFX,
     
      BGRAGradients,
     
      LazFreeTypeFontCollection;
     
    const
      CHARS: array[0..9] of string = (
        '!""""""""#',
        '$tMvWlVmT%',
        '$OoOoOoOo%',
        '$ + + + +%',
        '$+ +wL + %',
        '$ + Qk+ +%',
        '$+ + + + %',
        '$pPpPpPpP%',
        '$RnBqKbNr%',
        '/(((((((()'
        );
     
    var
      Bitmap: TBGRABitmap;
      Renderer: TBGRATextEffectFontRenderer;
     
      FFontCollection: TFreeTypeFontCollection;
     
    { TForm1 }
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FFontCollection := TFreeTypeFontCollection.Create;
      FFontCollection.AddFile('arial.ttf');
      FFontCollection.AddFile('alfoches.ttf');
      FFontCollection.AddFile('condfont.ttf');
      SetDefaultFreeTypeFontCollection(FFontCollection);
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      SetDefaultFreeTypeFontCollection(nil);
      FreeAndNil(FFontCollection);
    end;
     
    procedure TForm1.FormPaint(Sender: TObject);
    var
      bmp: TBGRABitmap;
      renderer: TBGRAFreeTypeFontRenderer;
      row: integer;
    begin
      bmp := TBGRABitmap.Create(ClientWidth, ClientHeight, ColorToRGB(clBtnFace));
      renderer := TBGRAFreeTypeFontRenderer.Create;
     
      renderer.ShadowVisible := True;
     
      bmp.FontRenderer := renderer;
      //bmp.FontName := 'Chess Alfonso-X';
      bmp.FontName := 'Chess Condal';
      bmp.FontFullHeight := 40;
      bmp.FontQuality := fqFineClearTypeRGB;
      for row := 0 to 9 do
        bmp.TextOut(0, 40 * row, CHARS[row], BGRABlack);
      bmp.Draw(Canvas, 0, 0);
      bmp.Free;
    end;
     
    end.
    Images attachées Images attachées  
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  14. #214
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 699
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 699
    Points : 15 042
    Points
    15 042
    Par défaut
    Citation Envoyé par circular17 Voir le message
    S'il y a des choses qui manquent de le tutoriel, tu peux les rajouter. Je ne suis pas en exces de contributeurs.
    Honnêtement, je ne me souviens plus : comme déjà expliqué, j'ai attaqué le premier tuto en copiant/collant le code vers un bouton, compile and run si pas d'erreurs ; et si erreur j'ai rajouté, au fur et à mesure,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
      BGRABitmap,
      BGRABitmapTypes,
      bgragradientscanner, // 4_button2 & 3
      // attention à l'ordre des déclarations
      bgratextfx,          // 4_button2 & font_rendering
      bgragradients,
      LazFreeTypeFontCollection, // 4_button7
      BGRAFreeType, // 4_button7
      LCLType, // pour StringToCharset
      StdCtrls, ExtCtrls;
    Citation Envoyé par circular17 Voir le message
    Tu penses que des gens te cachent volontairement des choses dans le but de te faire échouer ?
    Mais non ! C'était de l'humour, d'ailleurs il y avait un smiley pour l'indiquer...

    Citation Envoyé par circular17 Voir le message
    Est-ce que tu compares ce que tu fais avec des choses existantes et abouties ?
    Mettons que je regarde ce qui se passe autour de moi, et que des fois ça m'inspire.

    Citation Envoyé par circular17 Voir le message
    Cela sert à ajouter un fichier à la collection, pour qu'elle soit disponible ensuite en faisant FontName := 'Arial' par exemple.
    Merci pour cette précision concernant ce comportement pour le moins curieux, surtout en venant du monde Windows où les polices installées sont accessibles à toutes les applications sans se prendre la tête.

    J'ai donc décommenté les lignes concernant Arial après avoir récupéré le fichier ttf dans une machine virtuelle (le monde à l'envers ! Pomper des trucs dans une machine Microsoft por faire tourner un programme Linux ) et bon, oui, ça fonctionne...

    C'est le genre de choses qui devrait être écrit en taille 100 points rouge gras clignotant et souligné dans le tuto, surtout à l'attention des pingouins, parce que jusqu'à ce soir j'étais persuadé que ça ne concernait que le monde Windows.

    Merci pour tes explications et ta patience.

    Tiens, cadeau :

    Nom : circular.png
Affichages : 216
Taille : 24,0 Ko

    Citation Envoyé par Roland Chastain Voir le message
    Voici un essai avec la police Chess Condal. Assez joli, non ?
    Ouais !

    Mais si tu écris pendant que j'écris, on va pas y arriver,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  15. #215
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 930
    Points : 59 398
    Points
    59 398
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Voici un essai avec la police Chess Condal. Assez joli, non ?
    Magnifique !
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  16. #216
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Voici un essai avec la police Chess Condal. Assez joli, non ?
    Ah oui, c'est sympa avec l'ombrage.

    Citation Envoyé par Jipété Voir le message
    Mais non ! C'était de l'humour, d'ailleurs il y avait un smiley pour l'indiquer...
    Ah oui il ne faut pas trop se prendre au serieux.

    Mettons que je regarde ce qui se passe autour de moi, et que des fois ça m'inspire.
    Oui, cela peut donner des idées.

    Merci pour cette précision concernant ce comportement pour le moins curieux, surtout en venant du monde Windows où les polices installées sont accessibles à toutes les applications sans se prendre la tête.
    Ah ben le truc c'est que le but est que ce soit cross-platform, donc on ne peut pas trop se reposer sur ce qui est présent sur Windows ou sur Linux.

    C'est le genre de choses qui devrait être écrit en taille 100 points rouge gras clignotant et souligné dans le tuto, surtout à l'attention des pingouins, parce que jusqu'à ce soir j'étais persuadé que ça ne concernait que le monde Windows.
    Je comprends alors j'ai ajouté une ligne d'explication a propos d'Arial.

    Merci pour tes explications et ta patience.

    Tiens, cadeau :
    Ahah merci
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  17. #217
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    L'effet "Phong" n'est pas mal non plus.

    En tout cas, félicitations à circular17 pour tout le travail accompli : la bibliothèque BGRABitmap, LazPaint, les corrections apportées à Lazarus... Chapeau !
    Images attachées Images attachées  
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  18. #218
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Merci de ton soutien.

    Oui je fais plein de choses pour le FreePascal. En partie, c'est parce que j'ai commencé à programmer avec Delphi et que je trouve qu'il y a une limpidité avec le Pascal qu'on retrouve dans peu de langages. J'aimerais que cela continue d'exister.

    Bien entendu, il y a les versions payantes de Delphi qui existent encore, cela dit si on n'a pas les moyens de s'acheter cela, ce n'est pas évident. Je crois que l'avenir des langages de programmations en général est dans la gratuité. Une des forces du C est la disponibilité de ses compilateurs.

    Microsoft l'a compris avec .NET. D'ailleurs à ce sujet, VB.NET est un language qui apporte aussi une bonne lisibilité. Cela dit, cela se base sur une machine virtuelle. Il me semble que la force du Pascal est d'allier la lisibilité et la compilation pour la machine réellle.

    Aussi le Pascal permet d'avoir une visibilité sur le contenu des framework. On ne se base pas sur des librairies compilées mais sur le code lui-meme. Cela est à la fois un challenge, mais aussi une souplesse inédite et un outil pédagogique inédit pour apprendre par soi-meme.
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  19. #219
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Mon échiquier commence à prendre forme. J'ai progressé dans la conception des choses : par exemple je me suis aperçu qu'une seule petite image d'arrière-plan était suffisante et qu'il n'était pas nécessaire d'en déclarer une pour chaque pièce, vu qu'il n'y a jamais qu'une seule pièce qui se déplace à la fois. Je poste l'état actuel du projet, pour qu'éventuellement vous me fassiez part de vos remarques.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  20. #220
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Ah oui, cela commence à bouger !

    Note: bonne nouvelle, les gens de Lazarus ont commencé à appliquer les modifications que j'ai envoyé.
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

Discussions similaires

  1. [Flash Pascal] Projet d'un programme permettant de visualiser une position du jeu des échecs
    Par Roland Chastain dans le forum Flash Pascal
    Réponses: 11
    Dernier message: 21/06/2015, 10h05
  2. Projet Jeu d'échec
    Par Layla dans le forum Langage
    Réponses: 10
    Dernier message: 23/12/2010, 14h06
  3. Jeu d'échec borland soap
    Par rpoulin dans le forum Web & réseau
    Réponses: 2
    Dernier message: 20/10/2005, 06h02
  4. Help ! Programmer un jeu vidéo
    Par Jay Bee dans le forum DirectX
    Réponses: 7
    Dernier message: 18/03/2004, 19h38
  5. Help ! Programmer un jeu vidéo...
    Par Jay Bee dans le forum OpenGL
    Réponses: 3
    Dernier message: 05/03/2004, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo