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

SDL Discussion :

logique interface graphique


Sujet :

SDL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut logique interface graphique
    Bonjour, je voudrais pour mon petit jeu réaliser une interface graphique avec boutons,text input,scroll bar et surement d'autres choses. Le soucis étant que j'ai une très faible expérience en programmation et je n'arrive pas à faire quelque chose de clair,j 'ai déjà réalisé plusieurs implémentations mais à chaque fois ça finit en machine à vapeur.

    Donc j'ai tout viré et je repars à 0, j'ai :
    -un tableau de SDL_Texture*
    Ce tableau est initialisé au début et les indices ne changent pas donc ils me servent d'identifiant pour les textures.

    J'ai essayé plusieurs choses:

    -créer une grosse struct multi-usage qui contient tous les paramètres de mes boutons/input etc, ensuite je garde une trace de chacune de mes instances en les mettant dans un tableau. chacune a en plus deux champs: un int texture et un rectangle de destination pour le rendercopy et à chaque tour de boucle j'ai une fonction qui affiche tous mes éléments.

    -créer une struct {int texture/SDL_Rect dest_rect} je garde la trace en les mettant dans un tableau.
    et puis d'autres structs bouton/scroll bar etc qui à chaque instanciation ajoute une texture/rect dans le premier tableau. Le soucis avec ça c'est que je ne peux pas me servir des rectangles du premier tableau pour gérer la souris, sinon je dois remonter à la struct de l'élément pour en changer les paramètres mais comme il y a plusieurs struct faudrait utiliser des void* etc mais ça complique trop la chose.

    -Et ensuite des mélanges de ses deux choses...

    Je code en c car j'aime bien mais je suis aussi ouvert au c++ au cas où.
    Donc je me tourne vers vous au cas où quelqu'un aurait une idée. Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    salut oui le mieux c'est d'utiliser des structs qui vont être des entités abstraites désignant soit des boutons, soit des barres de défilement
    Mais je conseillerais de passer au C++ et comprendre la notion de classe
    Avec le C++ tu peux utiliser des conteneurs comme des listes ou des tableaux dynamiques
    Ensuite pour gérer les boutons c'est simple il faut détecter le clic souris sur une zone de l'écran chercher dans la liste ( ou tableau ) des boutons si les coordonnées du clic souris sont dans le rectangle qui définit le bouton
    Et à ce moment-là agir en conséquence ( quitter jeu, nouvelle partie..)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 83
    Points : 56
    Points
    56
    Par défaut
    Donc je devrais faire plusieurs struct et chacune devrait contenir le dst_rect pour comparer avec la position de la souris. Mais du coup pour l'affichage il faut que je passe toutes mes instances à ma fonction d'affichage, avec la première méthode je n'avais qu'à passer un seul tableau à la fonction. Me faudrait un moyen de faire connaître toutes mes instances d'élément à ma fonction d'affichage qui fait tous les render copy. Et de même pour la fonction hover qui compare la position de la souris et du dst_rect.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    classiquement un système d'UI possède un manager.
    Quand un élément d'UI doit exister, il s'enregistre dans le manager.
    Le manager a connaissance de tous les éléments existants et dispatch les inputs et peut les afficher si tu n'as pas un affichage décorélé des éléments.

    Pour les textures, tu devrais avoir un cache qui garde les textures en mémoire oui.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par aperdemak Voir le message
    Donc je devrais faire plusieurs struct et chacune devrait contenir le dst_rect pour comparer avec la position de la souris. Mais du coup pour l'affichage il faut que je passe toutes mes instances à ma fonction d'affichage, avec la première méthode je n'avais qu'à passer un seul tableau à la fonction. Me faudrait un moyen de faire connaître toutes mes instances d'élément à ma fonction d'affichage qui fait tous les render copy. Et de même pour la fonction hover qui compare la position de la souris et du dst_rect.
    salut je te conseille de faire simple au début : pour savoir si le joueur a cliqué sur un bouton il suffit de parcourir une liste d'entités de boutons on ne peut pas faire plus simple.
    Donc à la limite c'est indépendant de l'affichage ; si c'est le cas il suffit de gérer des indicateurs d'état globaux dans une classe par exemple game et on peut déclarer un flag Game_active par exemple.
    Si Game_active est à true on gére le jeu sinon on gère un menu...

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2004, 18h29
  2. interface graphique utilisateur, que faut-il utiliser?
    Par Missvan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 01/03/2004, 12h18
  3. Application multiplateforme avec interface graphique
    Par TNorth dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 31/01/2004, 18h55
  4. [Kylix] Interface graphique pour lognes de commande linux
    Par lecharcutierdelinux dans le forum EDI
    Réponses: 6
    Dernier message: 29/08/2003, 10h20
  5. plugin interface graphique
    Par jocelyn dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 13/08/2003, 09h49

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