Compte à rebours

Résolu/Fermé
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 12 mars 2014 à 07:49
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 13 mars 2014 à 10:43
Bonjour,

J'aimerais faire un programme où il faut mettre un temps en seconde, et un code.

Après cela, le temps s'affiche et décent petit a petit , a moins que l'on rentre le code.

Est-ce que qqun saurait me guidé vers certaines bibliothèques ? Ou me donner des astuces ?

1 réponse

Malheureusement il va falloir faire un programme multitâche. Ce que tu demandes c'est faire une interruption quand un temps t est écoulé.
En monotâche tu dois sûrement pouvoir en utilisant SDL mais même pas sur.

Pour faire du multitâche en C il faut être sous UNIX. C'est ton cas ?
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 12/03/2014 à 11:46
"il faut être sous UNIX": pas nécessairement, Windows dispose d'une API de threads, tout comme UNIX dispose de pthreads. Mais ça n'empêche pas que cette API Windows soit lourdingue par rapport à pthreads (noms de fonction à rallonge, types style
PWLPCTSRHWNDHANDLEDWORDLPVOID
, mille et un arguments de fonction pour rien, comme 100% des APIs windows vs leur équivalent Unix/Linux).
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
12 mars 2014 à 13:16
Je ne pratique pas SDL, mais ils ont cela : http://wiki.libsdl.org/SDL_AddTimer

Avec CSFML on peut utiliser cela : https://github.com/SFML/CSFML/blob/master/include/SFML/System/Clock.h


Dal
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54 > [Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024
13 mars 2014 à 07:44
Merci a vous tous !

je vais regarder ce que disent vos piste.

Si non est-ce que vous pensez que un autre langage serait mieux pour ce genre de programme ?

Dans ma premiere idee pour faire le compte a rebourd, je pensait définir une variable DebT qui serait l'heure quand on lance le timer, et que la variable FinT, serait définie ainsi : DebT + nombre de secondes tapées = FinT
le tout converti en seconde bien sur

et il y aurait une boucle qui contrôlerait si "une seconde a passer" donc le temps afficher diminuerait de 1sec
et cette boucle contrôlerait egalement si : temps actuel = FinT , ce qui mettrait fin a la boucle.

enfin je peux vous donner plus de details si vous trouvez que ca pourrait jouer
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié par [Dal] le 13/03/2014 à 10:25
Salut skk201,

1.

Si tu utilises les fonctions C standard time() et difftime() (inclure time.h), tu peux facilement vérifier la différence en secondes entre deux cycles d'exécution de programme. Si tu n'as pas besoin de plus de précision, tu peux t'en contenter.

Tu peux ensuite afficher avec des printf le temps qui reste. Cela ne sera pas très joli (car en C standard tu ne peux pas contrôler là où tu écris sur l'écran, donc tes différents printf vont simplement défiler au lieu de mettre à jour l'endroit de l'écran qui nécessite de l'être), mais cela peut marcher.

Là où tu auras un problème en C standard, c'est pour gérer l'entrée clavier alors que la boucle doit poursuivre son exécution. Les fonctions standard du C gérant l'interaction avec le clavier vont interrompre l'exécution du programme dans l'attente de l'entrée en question.

Même si tu résouds ce problème, tu en auras un autre : ton programme va boucler sur lui même tellement vite qu'il va occuper ton CPU pour pas grand chose.

C'est notamment pour cela que les différentes solutions postées par les contributeurs à ce fil t'ont été proposées.

2.

Une autre solution pour gérer le clavier qui pourrait ne pas nécessiter l'installation de bibliothèques ou la gestion de threads, pourrait être de capturer les scan-codes des touches du clavier pressées. Cela ne sera pas non plus du C standard portable, car la façon de faire dépendra de ton système d'exploitation.

Tu n'as pas précisé quel était ton système d'exploitation, malgré la question de landboa à ce sujet.

3.

Si tu tiens à rester en mode terminal, et que tu ne veux pas d'une bibliothèque graphique, tu pourrais installer une bibliothèque de type ncurses pour gérer l'écran du terminal.

Si tu trouves l'installation d'une bibliothèque trop lourde, il y a aussi des astuces, dépendant du système d'exploitation (non portables), permettant de placer du texte à telles coordonnées de l'écran, ce qui pourrait suffire à ton besoin.

4.

est-ce que vous pensez que un autre langage serait mieux pour ce genre de programme ?

Je ne suis peut-être pas le mieux placé pour te répondre, mais, oui, sûrement, il y a des langages plus faciles que le C pour faire des choses de ce type, qui sont plus complexes qu'il n'y parait.

Mais pour que les membres du forum puissent te renseigner utilement, je pense qu'il faudrait que tu dises quel est ton système d'exploitation, et si ce que tu veux faire c'est un programme en mode terminal, en mode graphique ou mode fenêtré.

Par exemple, en HTML et Javascript, le forum CCM renvoie ceci : https://forums.commentcamarche.net/forum/affich-18953410-comptes-a-rebours-html


Dal

P.S. : on écrit "rebours"
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
13 mars 2014 à 10:43
Merci beaucoup !

Désoler pour ce manque de précision. Alors le programme tournera sur un petit PC portable, je crois qu'il tourne sur Windows XP, mais la je ne suis pas sûr et certain.

Le but de ce code est de faire une "bombe" pour des parties de Airsoft.

L'idale serait un mode fenêtré. Mais je ferait avec mes capacités, donc si je n'arrive qu'a faire un code pour le mode terminal alors je le ferait en terminal en attendant.

Le problème du mode terminal, c'est qu'il faudrait qu'il soit afficher en grand écran. Il y a aussi le problème que la personne qui doit "désamorcer le code" peut lire s'il remonte tout en haut du terminal, le code qui a été taper.

Pour la gestion temps/clavier je pense avoir ma petite idée la dessus.

Mais si finalement je n'arrivais pas a aboutir à une solution en C, j'essayerait de faire une application androide.

Merci pourvos conseils !
0