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

GTK+ avec C & C++ Discussion :

Réalisation jeu de dame


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Par défaut Réalisation jeu de dame
    Bonsoir,
    Je débute en gtk et j'aimerai réaliser un petit jeu de dame.
    J'aimerai avoir les grandes lignes selon vous pour saoir comment m'y prendre au niveau du damier et du déplacement de pions.

    J'ai pensé à une table avec dens chaque case une image? mais dans ce cas comment faire pour les pions?
    Ou peut être mettre un damier en image de fond avec une table avec les pions par dessus?
    enfin c'est assez vague!

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Tu as deux façons d'opérer je pense :

    1. tu utilises un GtkTable dans lequel tu places des images "fabriquées à la volée" avec la couleur de la case et le pion par dessus.
    2. tu utilises un GtkDrawingArea. Ici tu crées une image globale du damier sur laquelle tu déplaces tes pions.

    Quelque soit la méthode choisie il faudra en passer par les GdkPixbuf. Regarde la doc. officielle sur cette structure. Elle te permet de manipuler les images un peu comme tu veux.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Par défaut
    Merci! Je vais aller regarder ça.

    J'avais plutôt démarré le truc avec ta 1ere méthode, les tables (j'ai réussi à faire la damier). Mais je ne vois pas trop comment faire pour déplacer les pions par la suite puisque je ne réussi pas à mettre de g_signal_connect sur mes images. Peut être que j'y my prends mal...

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Si tu utilises des GtkImage ils dérivent des GtkWidget. Tu peux donc utiliser les signaux inhérents à ces derniers.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Par défaut
    Lorsque j'utilise le signal "clicked" par exemple pour fermer la fenetre en cliquant sur une de mes case il ne se passe rien.
    Dans l'hypothèse de la table, tu serais m'expliquer rapidement comment déplacer un pion?

    Désolé...j'ai un peu de mal à me lancer :s

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Le signal "clicked" n'est pas un signal natif d'un GtkWidget. En voici la liste :
    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
      "accel-closures-changed"                         
      "button-press-event"                             : Run Last
      "button-release-event"                           : Run Last
      "can-activate-accel"                             : Run Last
      "child-notify"                                   : Run First / No Recursion / Has Details / No Hooks
      "client-event"                                   : Run Last
      "composited-changed"                             : Run Last / Action
      "configure-event"                                : Run Last
      "delete-event"                                   : Run Last
      "destroy-event"                                  : Run Last
      "direction-changed"                              : Run First
      "drag-begin"                                     : Run Last
      "drag-data-delete"                               : Run Last
      "drag-data-get"                                  : Run Last
      "drag-data-received"                             : Run Last
      "drag-drop"                                      : Run Last
      "drag-end"                                       : Run Last
      "drag-failed"                                    : Run Last
      "drag-leave"                                     : Run Last
      "drag-motion"                                    : Run Last
      "enter-notify-event"                             : Run Last
      "event"                                          : Run Last
      "event-after"                                    
      "expose-event"                                   : Run Last
      "focus"                                          : Run Last
      "focus-in-event"                                 : Run Last
      "focus-out-event"                                : Run Last
      "grab-broken-event"                              : Run Last
      "grab-focus"                                     : Run Last / Action
      "grab-notify"                                    : Run First
      "hide"                                           : Run First
      "hierarchy-changed"                              : Run Last
      "key-press-event"                                : Run Last
      "key-release-event"                              : Run Last
      "keynav-failed"                                  : Run Last
      "leave-notify-event"                             : Run Last
      "map"                                            : Run First
      "map-event"                                      : Run Last
      "mnemonic-activate"                              : Run Last
      "motion-notify-event"                            : Run Last
      "move-focus"                                     : Run Last / Action
      "no-expose-event"                                : Run Last
      "parent-set"                                     : Run First
      "popup-menu"                                     : Run Last / Action
      "property-notify-event"                          : Run Last
      "proximity-in-event"                             : Run Last
      "proximity-out-event"                            : Run Last
      "query-tooltip"                                  : Run Last
      "realize"                                        : Run First
      "screen-changed"                                 : Run Last
      "scroll-event"                                   : Run Last
      "selection-clear-event"                          : Run Last
      "selection-get"                                  : Run Last
      "selection-notify-event"                         : Run Last
      "selection-received"                             : Run Last
      "selection-request-event"                        : Run Last
      "show"                                           : Run First
      "show-help"                                      : Run Last / Action
      "size-allocate"                                  : Run First
      "size-request"                                   : Run First
      "state-changed"                                  : Run First
      "style-set"                                      : Run First
      "unmap"                                          : Run First
      "unmap-event"                                    : Run Last
      "unrealize"                                      : Run Last
      "visibility-notify-event"                        : Run Last
      "window-state-event"                             : Run Last
    Pour commencer tu peux déjà faire tes premiers tests avec le signal "button-press-event". Je te donne ici le prototype du CALLBACK associé à ce signal :
    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
    gboolean            user_function                      (GtkWidget      *widget,
                                                            GdkEventButton *event,
                                                            gpointer        user_data)      : Run Last
     
    The ::button-press-event signal will be emitted when a button (typically from a mouse) is pressed.
     
    To receive this signal, the GdkWindow associated to the widget needs to enable the GDK_BUTTON_PRESS_MASK mask.
     
    This signal will be sent to the grab widget if there is one.
     
    widget :
    	the object which received the signal.
     
    event :
    	the GdkEventButton which triggered this signal
     
    user_data :
    	user data set when the signal handler was connected.
     
    Returns :
    	TRUE to stop other handlers from being invoked for the event. FALSE to propagate the event further.
    Tu pourras, une fois que tu maitriseras le clic de tes cases, ajouter la gestion du DnD de la même manière avec les signaux appropriés listés au dessus.

    Remarque:
    Il est important de ne pas oublier qu'un GtkWidget dispose d'un pointeur générique via les GObject. On peut donc y attacher n'importe quelle donnée. Un exemple pourrait être le n° de la case.

Discussions similaires

  1. créer jeu de dame en C
    Par SAMUELSalbert dans le forum C
    Réponses: 11
    Dernier message: 31/07/2006, 20h33
  2. Code source en c d'un jeu de dames
    Par ledawa dans le forum Développement 2D, 3D et Jeux
    Réponses: 33
    Dernier message: 22/05/2006, 08h54
  3. [VB] projet à réaliser: Jeu de la vie
    Par mauriiice dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/12/2005, 20h06
  4. [Jeu de dames]Enregistrer les règles...
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/11/2005, 19h39
  5. probleme pour un jeu de dames en python
    Par doudou152 dans le forum Général Python
    Réponses: 7
    Dernier message: 22/04/2005, 14h53

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