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

XNA/Monogame Discussion :

Chronomètre en XNA


Sujet :

XNA/Monogame

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 15
    Points : 10
    Points
    10
    Par défaut Chronomètre en XNA
    Bonjour,

    Je dois créer un jeu de mémoire visuel permettant d'évaluer les capacités mentales d'un enfant ayant entre 6 et 12 ans. Pour cela, j'ai besoin de créer et d'afficher un chronomètre.
    J'ai beau avoir chercher sur internet et dans la documentation fournie, je ne trouve rien. J'ai également chercher à "jouer" sur objet GameTime :

    if (gameTime.TotalRealTime.Seconds == 30)
    {
    this.Exit();
    game2.Run();
    }

    Voici le bout de code que j'ai déjà essayé, mais cela ne fonctionne pas..

    Est-ce que quelqu'un aurait une idée ou même une classe chrono.cs qui gère justement un chronomètre ?

    Merci d'avance,
    Sarhaan67
    "A vaincre sans péril, on triomphe sans gloire"

  2. #2
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2010
    Messages : 17
    Points : 25
    Points
    25
    Par défaut
    Bon, alors, voyons, un chronomètre.

    Déjà, il ne faut pas utiliser totalRealTime, qui va te donner le temps total de jeu.

    Je procéderai ainsi:

    1. Créer un DrawableGameComponent
    2. dedans, une valeur double
    3. Dans la boucle d'update, on incrémente cette valeur double en fonction de gameTime.ElapsedGameTime.TotalSeconds
    4. Dans la boucle de Draw(), utiliser spritebatch et spritefont pour effectuer le rendu du chronomètre.

    Ca pourrait être une bonne idée de tutoriel sur mon site, ca... je vais voir ce que je peux faire

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Merci Vodaime d'avoir répondu, mais bon créer un chronomètre en WPF va être un peu lourd, de plus si le client est sous XP, il sera obligé de l'instant sur son poste .. On veut éviter le plus manipulation possible à l'utilisateur..

    En ce qui concerne PERECil, cela me semble être une très bonne idée, néanmoins je débute en développement XNA et je ne sais pas vraiment utiliser la classe DrawableGameComponent donc est-ce qu'il serait possible que tu m'utilises ce que tu m'as dis, dans un exemple concret SVP ?


    En tout cas merci pour vos réponses

  4. #4
    Membre averti Avatar de yodaime
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 282
    Points : 340
    Points
    340
    Par défaut
    Citation Envoyé par Sarhaan Voir le message
    Merci Vodaime d'avoir répondu, mais bon créer un chronomètre en WPF va être un peu lourd, de plus si le client est sous XP, il sera obligé de l'instant sur son poste .. On veut éviter le plus manipulation possible à l'utilisateur..
    Je pensais pas à le faire en WPF mais a s'inspirer du code de la classe Chrono

  5. #5
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2010
    Messages : 17
    Points : 25
    Points
    25
    Par défaut
    Sarhaan: je vais essayer d'en faire un tutoriel sur http://www.xna-connection.com/ histoire que ca serve à tout le monde, si déjà . Par contre je suis un peu overbooké, j'espère que t'es pas trop pressé (j'ai déjà un tuto sur la gestion des paramètres de configurations en cours de route...).

    Ah et si je fais un chronomètre, ca sera certainement un truc légèrement plus complexe que ce que je propose ici; je passerai certainement par un service chargé de manager les chronomètres (obligé si on en veut plusieurs...)

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Merci messieurs, mais j'ai trouvé mon bonheur dans un petit bout de code dont je me suis bien inspiré (si jamais ca peut t'aider PERECil) :

    // Déclaration des variables tout au début de la classe
    float T1 = 10000f; // T1 est égal à 10ssecondes
    float interval = 0f; // interval est égal à 0 seconde

    // Dans la méthode Update
    T1 -= gameTime.ElapsedGameTime.Milliseconds; // Décrémentation du chronomètre

    if (T1 <= interval) // si T1 est inférieur ou égal à 0
    {
    .....
    }


    Voila rien, de plus simple pour créer mon chronomètre. Je me suis servi du tutoriel trouvé sur le site : http://www.xnafusion.com/xna-timer-tutorial/.

    En ce qui concerne l'affichage du chrono, rien de bien compliqué, il suffit tout simplement de créer un SpriteFont, convertir T1 en string, et le tour est joué =)

    En tout cas merci pour vos réponses concernant le chrono

    Sarhaan67
    "A vaincre sans péril, on triomphe sans gloire"

  7. #7
    Membre averti Avatar de yodaime
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    282
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2006
    Messages : 282
    Points : 340
    Points
    340
    Par défaut
    Merci pour l'info ca peut toujours servir !

    Un petit ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2010
    Messages : 17
    Points : 25
    Points
    25
    Par défaut
    Bonjour à tous!

    Je sais que je suis à la bourre et que Sarhaan67 a déjà trouvé son bonheur, mais j'ai fait une implémentation un peu plus "couillue" de la gestion du temps avec XNA. Alors oui c'est sur ya un poil plus de code que l'exemple donné par Sarhaan67, mais je sais pourquoi j'ai fait ca (je vais faire des méthodes d'Easing basées la dessus).

    Enfin, pour ceux qui pourraient être intéressés:
    http://www.xna-connection.com/post/T...ompte-pour-XNA

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 217
    Points : 228
    Points
    228
    Par défaut
    Et si l'on ne veut plus dépendre d'un GameComponent pour récupérer le temps, y'a ce bout de code qui est très utile:
    http://code.google.com/p/fracture/so...imeProvider.cs

  10. #10
    Nouveau membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2010
    Messages : 17
    Points : 25
    Points
    25
    Par défaut
    Justement, j'ai d'abord cherché a ne pas avoir a dépendre d'un GameComponent dans mes classes de Chronomètre. Seulement voilà, sans appel à la méthode Update() (ou tout autre méthode), le TimerBase ne se met pas à jour tout seul (j'avais d'abord réfléchi à utiliser un Thread par timer ou du microthreading) et donc les méthodes évènementielles qui sont basées sur l'écoulement du temps ne seraient jamais appellées.

    Les fonctions chronomètres que tu suggères sont très bien (avant XNA, j'utilisais des trucs similaires pour windows, j'dois encore avoir le code qui traine quelque part), toutefois, elles souffrent de la même tare que mon code, à savoir qu'il faut demander manuellement à une fonction du chronomètre le temps passé. On se retrouve donc a devoir l'appeller dans une boucle Update() d'un GameComponent (ou n'importe quelle boucle à l'intérieur du jeu) pour avoir la MAJ du temps passé... et quitte a récupérer le temps, autant le récupérer de la classe GameTime...

    Pour ainsi dire au début je voulais même faire un service de gestion des TimerBase (appel automatique à Update() dans le service), mais je me suis empêtré dans les références, et je n'arrivais pas a me sortir d'une possible fuite de mémoire (le service ne pouvant pas deviner si le timer était encore utilisé ou non, les timers ne pouvaient jamais être sorti de la liste statique des timers que je comptais utiliser pour avoir une référence sur tous les timers, et je ne voulais pas trop compter sur le fait qu'un utilisateur de mon code appelle manuellement une méthode Dispose()...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment réaliser un chronomètre ?
    Par theprimitive dans le forum Langage
    Réponses: 18
    Dernier message: 25/10/2005, 08h59
  2. [C++ Builder 6] Timer de précision pour chronomètre
    Par doudoustephane dans le forum C++Builder
    Réponses: 9
    Dernier message: 27/09/2005, 10h45
  3. Comment faire un chronomètre en Delphi ou ASM ?
    Par PoOky dans le forum Langage
    Réponses: 8
    Dernier message: 15/06/2005, 20h49
  4. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  5. [MFC] Boîte de dialogue chronométrée
    Par mdriesbach dans le forum MFC
    Réponses: 5
    Dernier message: 18/02/2003, 12h40

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