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

Prolog Discussion :

problème d'affichage d'une grille de scrabble avec XPCE


Sujet :

Prolog

  1. #1
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Scrabble (fini) et XPCE (problème d'affichage d'une grille)
    Bonsoir,

    j'ai un projet de développement de scrabble.

    on a quasiment tout fini, sauf que je suis chargé de la partie graphique, et je n'arrive pas à afficher la du "texte" sous n'importe quelle forme.

    en fait, j'aimerais être capable d'afficher ma grille ligne par ligne de la façon suivante (peut-être existe-t-il un meilleur moyen?)
    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
     
     
    init_fenetre:-  new(Scr_Fen, dialog('scrabble')),
                    send_list(Scr_Fen, append,
                              [ new(Text_init, text('initialisation réussie')),
                                new(Reglet, label("")),                           %label dynamique   affiche le reglet
                                new(MotPropose, text_item('Mot à poser:')),       % zone de saisie  du mot proposé
                                new(Num_case, text_item('Coordonnée de case :')), % zone de saisie de coordonnée de case
                                new(Sens, new(Sens, menu(sens))),                 % radio button sens du mot
                                button(envoyer, message(@prolog ,                 % bouton envoyer (récuperation du mot porposé)
                                                        test_placer_mot, MotPropose?selection, Reglet) ),
                                button(piocher, message(@prolog, pioche_Button,Text_init)), % bouton piocher
                               new(Ligne1, label("")),  %label dynamique ligne 1
                               new(Ligne2, label("")),  %label dynamique ligne 2
                               new(Ligne3, label("")),  %label dynamique ligne 3
                               new(Ligne4, label("")),  %label dynamique ligne 4
                               new(Ligne5, label("")),  %label dynamique ligne 5
                               new(Ligne6, label("")),  %label dynamique ligne 6
                               new(Ligne7, label("")),  %label dynamique ligne 7
                               new(Ligne8, label("")),  %label dynamique ligne 8
                               new(Ligne9, label("")),  %label dynamique ligne 9
                               new(Ligne10,label("")),  %label dynamique ligne 10
                               new(Ligne11,label("")),  %label dynamique ligne 11
                               new(Ligne12,label("")),  %label dynamique ligne 12
                               new(Ligne13,label("")),  %label dynamique ligne 13
                               new(Ligne14,label("")),  %label dynamique ligne 14
                               new(Ligne15,label("")),  %label dynamique ligne 15
                               button(afficher, message(@prolog ,                 % bouton envoyer (récuperation du mot porposé)
                                                         affiche_grille_xpce, Ligne1,
                                                                             Ligne2,
                                                                             Ligne3,
                                                                             Ligne4,
                                                                             Ligne5,
                                                                             Ligne6,
                                                                             Ligne7,
                                                                             Ligne8,
                                                                             Ligne9,
                                                                             Ligne10,
                                                                             Ligne11,
                                                                             Ligne12,
                                                                             Ligne13,
                                                                             Ligne14,
                                                                             Ligne15) ),
     
                               button(quitter, message(Scr_Fen, destroy))      % bouton quitter
                               ]),
     
                               send_list(Sens, append, ['Horizontal', 'Vertical']),
     
                               send(Scr_Fen, open).                              % affiche la fenetre
     
    affiche_grille_xpce(Ligne1,Ligne2,Ligne3,Ligne4,Ligne5,Ligne6,
                        Ligne7,Ligne8,Ligne9,Ligne10,Ligne11,Ligne12,
                        Ligne13,Ligne14,Ligne15
                        ):- ligne(Ligne1),
                            name(Atome, Ligne1),
                            send(Ligne1, selection ,Atome).
     
     
    ligne("Ligne une").
    %ligne('une Ligne').
    bien sur tout le code n'est pas affiché. Pour alleger un peu la chose, j'ai juste mis les prédicats qui me posent problèmes: ici c'est affiche_grille_xpce.
    pour l'instant j'arrive à recuperer le texte tappé dans le text_item mot proposé et l'afficher au dessus dans le label que j'appelle réglet. (qui sera en fait destiné ensuite à afficher le réglet du scrabble).

    en fait je n'ai pas vraiment compris comment utiliser "send/3".
    quelqu'un pourrait-il éclairer ma lanterne?

    je peux fournir plus de détails si nécessaire, pour l'instant je nage un peu...


    [EDIT]:
    je reformule ma quetion:
    quelqu'un pourrait-il m'expliquer le fonctionnement de send, afin que je puisse afficher et mettre à jour l'affichage de d'un label ou d'un texte sur ma fenetre?
    je n'ai pas trouvé dans la doc technique de xpce
    [/EDIT]

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bonjour
    j'ai un peu regardé, le code que je te forunis te permets d'afficher Ligne1, Ligne 2 .... dans les différents champs de to scrabble.
    J'ai aussi fait afficher un mot dans le réglet.

    Peut-être as-tu avancé depuis ton dernier post.
    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
    init_fenetre:-  
    	new(Scr_Fen, dialog('scrabble')),
    	send_list(Scr_Fen, append,
    		  [ new(Text_init, text('initialisation réussie')),
    		    new(Reglet, label("")),  %label dynamique   affiche le reglet
    		    new(MotPropose, text_item('Mot à poser:')),% zone saisie mot proposé
                        new(Num_case, text_item('Coordonnée de case :')), % saisie coordonnée
    		    new(Sens, new(Sens, menu(sens))),        % radio button sens du mot
                        button(envoyer, message(@prolog , test_placer_mot, 
    					    MotPropose?selection, 
    					    Reglet) ),
    		    button(piocher, message(@prolog, pioche_Button,Text_init)),
    		    new(Ligne1, label("")),  %label dynamique ligne 1
                        new(Ligne2, label("")),  %label dynamique ligne 2
                        new(Ligne3, label("")),  %label dynamique ligne 3
                        new(Ligne4, label("")),  %label dynamique ligne 4
                        new(Ligne5, label("")),  %label dynamique ligne 5
                        new(Ligne6, label("")),  %label dynamique ligne 6
                        new(Ligne7, label("")),  %label dynamique ligne 7
                        new(Ligne8, label("")),  %label dynamique ligne 8
                        new(Ligne9, label("")),  %label dynamique ligne 9
                        new(Ligne10,label("")),  %label dynamique ligne 10
                        new(Ligne11,label("")),  %label dynamique ligne 11
                        new(Ligne12,label("")),  %label dynamique ligne 12
                        new(Ligne13,label("")),  %label dynamique ligne 13
                        new(Ligne14,label("")),  %label dynamique ligne 14
                        new(Ligne15,label("")),  %label dynamique ligne 15
                        button(afficher, message(@prolog ,
    					     affiche_grille_xpce, 
    					     [Ligne1,
    					     Ligne2,
                                                 Ligne3,
                                                 Ligne4,
                                                 Ligne5,
                                                 Ligne6,
                                                 Ligne7,
                                                 Ligne8,
    					     Ligne9,
    					     Ligne10,
                                                 Ligne11,
                                                 Ligne12,
                                                 Ligne13,
                                                 Ligne14,
                                                 Ligne15]) ),
    		    button(quitter, message(Scr_Fen, destroy))  % bouton quitter
    		    ]),
    	send_list(Sens, append, ['Horizontal', 'Vertical']),
    	send(Scr_Fen, open).       % affiche la fenetre
     
    affiche_grille_xpce(XLN):-
    % 	gtrace,
    	L = ["Ligne1","Ligne2","Ligne3","Ligne4","Ligne5","Ligne6",
    	     "Ligne7","Ligne8","Ligne9","Ligne10","Ligne11","Ligne12",
    	     "Ligne13","Ligne14","Ligne15"],
    	maplist(string_to_atom, L, LA),
    	send(XLN, for_all, message(@prolog, my_selection, @arg1, @arg2, LA)).
     
     
    %ligne('une Ligne').
    my_send_list(O, A) :-
    	writeln(A),
    	send(O, selection, A).
     
    my_selection(Obj, Ind, LX) :-
    	get(LX, element, Ind, X),
    	send(Obj, selection, X).
     
     test_placer_mot(Mot, Label) :-
    	send(Label, selection, Mot).
    Tiens nous au courant.

    PS : si je peux me permettre un avis, travaille avec des cases où tu afficheras une lettre, plutôt qu'avec des champs d'affichage où les lettres ne seront pas forcément affichée correctement en colonnes (celà dépendra de la police choisie).
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Super!
    Merci pour ta réponse Trap D,

    En effet j'ai un peu avancé depuis ce week-end,
    en fait on c'est fait un gros week-end de 31 h de prolog pour avancer un peu ce projet avec mon groupe.
    Forcément on avance quand même un peu, même quand on bloque. mais rien de tel qu'un petite nuit pour remettre les idées en places.

    Je regarde ce que tu me proposes cet après-midi surement.

    Pour ce qui est du conseil, j'y avais pensé, mais je me suis trouver vite confronter au problème de position. dès que je défini la position d'un objet, il faut que je les définissent tous. est-ce normal? je n'en sais rien, mais pour les boutons, en tout cas, je n'ai pas réussi à faire en sorte qu'ils ne s'entassent pas en position (0,0)...
    Je pense que je vais garder les lignes, car dans le moteur du jeux pour l'instant on fait affiche en textuel grace aux listes. je me dis que ça va faire vraiment beaucoup de traitement en plus non? on essaye déjà d'accelerer la recherche des solutions, car ça prends trop de temps dans les cas de jocker et de création de mots avec une lettre "fantome".

    Nous avons l'ambition de finir ce projet avant les vacances de Noël. si les autres membres de mon groupe sont d'accord, je pourrais fournir un peu de code pour de l'aide sur ce projet. je crois que vous en cherchez?
    J'aurais bien aimé en trouver sur le net, mais c'est resté un peu vague.
    je ne veux quand même pas mettre toute la source: pas question que les autres ne bossent pas un peu si ils ont ce projet aussi

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Je me fais un peu de pub, mais as-tu regardé cet article.
    Tu y trouveras une manière de créer une interface graphique XPCE facilement.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    oui! j'avais vu ton post.

    c'est d'ailleurs un des rares sur le sujet. il m'a grandement aider pour le début, et c'est grace à ça que je me suis lancé dedans. Mais ensuite, j'avais d'autres besoins, je dirais. Ou d'autres envie sur la programmation prolog. Malheureusement le net est assez pauvre en ressource de ce coté là, à part la doc swi-prolog.

    d'où ma demande d'aide ce week-end.

  6. #6
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par jeerem Voir le message
    Nous avons l'ambition de finir ce projet avant les vacances de Noël. si les autres membres de mon groupe sont d'accord, je pourrais fournir un peu de code pour de l'aide sur ce projet. je crois que vous en cherchez?
    J'aurais bien aimé en trouver sur le net, mais c'est resté un peu vague.
    je ne veux quand même pas mettre toute la source: pas question que les autres ne bossent pas un peu si ils ont ce projet aussi
    Ca y est,
    notre projet est bel et bien fini.
    gros travail, mais le scrabble tourne parfaitement avec 2 niveaux.
    il peut générer vraiment bcp de cas, ce qui permet à l'utilisateur de placer presque n'importe quel mot, tant qu'il est dans le dictionnaire.

    je vais avoir du temps d'ici la semaine prochaine peut-être pour expliquer notre source ou l'envoyer. je ne sais pas comment ça marche sur ce forum. Mais il m'a tellement rendu service ce semestre, j'ai bien envie d'y contribuer avec cette version. notre projet tient quand même sur 6 mois (à 4 dans le groupe). il y a beaucoup de fichier et de lignes de code. (env. 2 500) Faut-il tout expliquer?

    Les améliorations qu'il reste a faire seraient surtout:

    * de l'optimisation du temps de recherche. En cours nous avons vus l'algorithme A*, il parait que ça pourrait se faire pour la recherche de mots. nous l'avons vu malheureusement trop tard.

    * l'affichage graphique qui n'est pas géré. toujours le même problème de rafraichissement non géré. J'ai tjs le fichier source. et je le joindrai au reste du projet.

    * notre dictionnaire: il nous a été fourni par notre prof et n'est pas franchement réglementaire. (mots propres, etc...)

Discussions similaires

  1. [C#] problème d'affichage d'une nouvelle Form
    Par michel_frederic dans le forum C#
    Réponses: 15
    Dernier message: 17/11/2005, 16h40
  2. [GD] Problème d'affichage d'une image avec gd2
    Par turini dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/10/2005, 11h59
  3. [Débutant] Affichage d'une grille
    Par Mathieu.J dans le forum OpenGL
    Réponses: 25
    Dernier message: 13/06/2004, 19h38
  4. Problème d'affichage d'une chaîne à l'écran
    Par Bubonik software dans le forum C
    Réponses: 7
    Dernier message: 08/05/2004, 20h47
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

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