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 :

Affichage d'un plateau


Sujet :

Prolog

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Affichage d'un plateau
    Bonjour je code actuellement le jeu de Siam pour mon projet à l'UTC mais je bloque sur l'affichage en XPCE.

    Celui-ci est optionnel mais je préfère avec un bel affichage plutot qu'un petit affichage "pourri" en console.

    Grâce au bon tuto de Trap D et à mon talent de copieur j'arrive à avoir un plateau .

    Par contre les case c'est autre chose .

    mon plateau est stocké sous la forme [Liste_Elephant,Liste_Rhino,Liste_Montagne, Joueur]

    Liste_Elephant et Liste_Rhino sont des couple (Case,Direction)
    et Liste_Montagne juste une liste de Case

    et je voudrais savoir comment je peux faire le
    affiche_case(P,L,I,B) %P le plateau sous la forme [T,U,V,Q] , L la ligne, I la colonne. la case stocké dans la liste est un Z is X * 10 + Y

    qui affiche un carré avec un E ou R majuscule et un triangle orienté pour la direction (n,e,s,w).
    le E en Bleu Gras et le R en rouge gras
    et juste en M en Marron Gras pour une montagne.

    je sais qu'il va y avoir 9 cas mais c'est surtout la création des cases qui me pose probleme.

    Je met le code de l'affichage que j'ai du plateau pour l'instant.




    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
     
     
    plateau_actuel([[(0,0),(0,0),(0,0),(0,0),(0,0)],[(0,0),(0,0),(0,0),(0,0),(0,0)],
    [32,33,34],e]).
     
    affiche(_D, _C, _, 0) :-!.
     
     
    affiche(D, C, Largeur, L) :-
    	forall(between(1, Largeur, I),
    	       (  
    			plateau_actuel(P),
    		   affiche_case(P,L,I,B),
    		   X is 40 * (I-1) + 10,
    		   Y is 40 * (L-1) + 10,
    		   send(D, display, B, point(X,Y))
    	       )),
    	L1 is L-1,
    	affiche(D, C, Largeur, L1).
    Merci D'avance

  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
    En réponse à un MP reçu, (à éviter, la prochaine fois je ne répondrai pas), voici une solution pour afficher une image cliquable :
    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
    toto:-
    	new(D, dialog('Prolog au travail !')),
    	send(D,size, size(300, 300)),
    	send(D,open),
    	affiche(D,1,5,5).
     
    affiche(_D, _C, _, 0) :-!.
    affiche(D, C, Largeur, L) :-
    	forall(between(1, Largeur, I),
    	       ( % new(B, box(40,40)),
    	         sformat(Name, 'Coordonnees ~w ~w', [L, I]),
    	         new(B, my_label(Name,'happy.bm')),
    		 X is 50 * (I-1) + 10,
    		 Y is 50 * (L-1) + 10,
    		 send(D, display, B, point(X,Y)))),
    	L1 is L-1,
    	affiche(D, C, Largeur, L1).
     
     
     
    :- pce_begin_class(my_label, label, "Graphical window with text").
     
    variable(name, any, both, "texte a afficher").
     
    initialise(P, Name, Img) :->
    	send(P, send_super, initialise, Name, image(Img)),
    	send(P, slot, name, Name),
    	WS = 50, HS = 50,
    	send(P, size, size(WS,HS)),
    	send(P, recogniser,
    	     handler_group(new(click_gesture(left,
    					     '',
    					     single,
    					     message(@receiver, my_click))))).
     
    % saisie du texte lors d'un click
    my_click(B) :->
    	get(B, slot, name, Name),
    	send(@display, inform, Name).
     
    :- pce_end_class.
    Un clic sur une image affiche les coordonnées de l"image cliquée.
    "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
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup Trap D

    Ne t'inquiètes pas je ferais profiter les autres de mes problèmes on ne sait jamais ça peut en aider quelques uns^^

Discussions similaires

  1. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  2. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00
  3. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 11h36
  4. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

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