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 :

[GTK+ 2.0][C] Afficher une matrice


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut [GTK+ 2.0][C] Afficher une matrice
    Bonjour à tous,

    Je dois réaliser dans le cadre de mes études un projet de programmation. J'ai choisi de réaliser un Tetris.
    J'ai déjà codé les fonctions que je devrais utiliser.
    J'ai choisi de prendre une grande matrice (qui représente mon tableau de jeu) et de modéliser mes pièces qui tombent par des matrices 4x4.
    Ces matrices sont faites de 0 (couleur noire), ainsi que de 1,2,3,... (couleurs).

    Je dois maintenant passer à l'interface graphique, afin notamment de vérifier si mes fonctions codées sont correctes.
    Je vous écris car j'avoue que ça me fait un peu paniquer; j'ai lu divers cours de GTK+, mais je n'ai rien trouvé pour résoudre mon problème.

    Je souhaite donc afficher une grande matrice, et faire apparaitre des petits carrés de couleurs.
    Comment puis-je afficher une telle matrice? Existe-t-il une fonction qui me permettrait d'associer une couleur à une case (pour mes matrices 4x4)?

    En espérant que vous ayez réussi à comprendre ce qui me pose problème,
    J'attends vos réponses avec impatience et vous remercie d'avance pour celles-ci.
    Cordialement,
    Cacahuete

    P.S. : Je sais afficher une fenêtre, ainsi que des boutons. (Ce sont mes seules compétences actuelles en GTK+)

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Bonjour et bienvenue . Tu pourrais nous en dire plus sur ton environnement (Windows, Linux, autre ?) et nous dire quelle version de GTK+ tu utilises ?
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Bonjour liberforce, merci de ta réponse si rapide!

    Je suis sous Windows, et la version que j'utilise (celle mon école) est la 2.0.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Je viens de tomber sur cette fonction... Est-ce que tu penses qu'avec celle-ci, et des "cases colorées" comme widgets ça pourrait fonctionner?


    void gtk table attach( GtkTable *table, GtkWidget *child, guint left attach, guint
    right attach, guint top attach, guint bottom attach, GtkAttachOptions xoptions,
    GtkAttachOptions yoptions, guint xpadding, guint ypadding);

  5. #5
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Points : 2 002
    Points
    2 002
    Par défaut
    Désolé pour la réponse tardive... Pas mal de boulot.

    Pour un jeu graphique, je te déconseille d'utiliser des widgets qui ne sont pas faits pour ça... La meilleure solution (pas forcément la plus facile) pour coder un jeu de ce type où il y a de l'animation, c'est d'utiliser juste un GtkDrawingArea pour représenter l'aire de jeu où s'affichernt tes pièces, et d'utiliser la bibilothèque cairo (qui est intégrée de base à GTK+) pour dessiner dedans. Tu peux ensuite utiliser un GtkTable pour intégrer la drawing area au reste de ton interface (boutons, score, etc.)

    En GTK 2, pour dessiner dans un widget comme unedrawing area, cela se fait en réponse au signal "expose-event". Tu dois connecter ce signal pour ce widget à une callback, où tu feras tes actions de dessin. Pour cela, tu dois avoir un tableau C qui contiendr la représentation de l'aire de jeu, avec des valeurs dans chaque case pour indiquer le type de pièce qui s'y trouve, ou l'absence de pièce, et ta callback de desssin ne fera que lire ce tableau pour en déduire ce qu'il y a à dessiner. Quand l'utilisateur effectue un déplacement, ou que le temps fait descendre une pièce, tu mets à jour ton tableau C, et ta callback mettra à jour d'elle même l'aire de jeu graphique.
    Documentation officielle GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels GTK+ 3:
    GTK en C, GTK en Python

    Tutoriels par l'exemple (platform-demos):
    GTK (tous langages)

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Bonjour liberforce,

    Tout d'abord merci pour ta réponse détaillée.
    J'ai déjà créé mon programme en C (à base de 0 et de 1), et en fait j'affiche mon tableau de jeu à chaque "descente" de pièce.
    Donc il faudrait que mon tableau de jeu soit la callback?
    Je ne suis pas sûre d'avoir tout saisi, et j'ai du mal à trouver des tutos sur mon sujet.

    Merci d'avance pour ta réponse.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 34
    Points : 11
    Points
    11
    Par défaut
    Je viens de tomber sur ce site ( http://zetcode.com/tutorials/gtktutorial/gtkevents/ ) qui m'a pas mal éclairci les idées.

    Si je traite pour le moment l'évènement "ma pièce doit descendre toutes les secondes", j'utilise donc le tout dernier exemple du site.
    Cependant, j'ai 2 questions;
    -Je comprends le main, mais je ne comprends pas les 2 premières fonctions.. Tu pourrais me les expliquer grossièrement s'il te plait?
    -Par ailleurs, je ne vois pas le lien entre mon tableau à base de 0 et de 1 du langage C, avec la bibliothèque GTK.. Je veux dire par là que je ne sais absolument pas comment intégrer pour tableau de jeu au GTK.. Serait-ce via la darea, si je reprends l'exemple du site?

    Merci d'avance pour ta réponse.

Discussions similaires

  1. afficher une matrice
    Par sub-0 dans le forum Débuter
    Réponses: 5
    Dernier message: 04/01/2009, 21h25
  2. Afficher une matrice
    Par m2ise dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 24/01/2008, 12h30
  3. Afficher une matrice
    Par GrandGarfield dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 26/05/2007, 20h37
  4. Afficher une matrice 3d avec OpenGl
    Par kmaniche dans le forum OpenGL
    Réponses: 9
    Dernier message: 03/02/2006, 13h21
  5. [LG] Problème pour afficher une matrice
    Par phoebee dans le forum Langage
    Réponses: 4
    Dernier message: 11/08/2005, 21h41

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