NewbieContest

Programmation => Langages compilés => Discussion démarrée par: micka13 le 15 Avril 2007 à 16:08:39



Titre: [C] fonction delay().
Posté par: micka13 le 15 Avril 2007 à 16:08:39
Bonjour, pour mon pojet informatique , je dois realiser un othello.
Il est finis , mais maintenant je cherche a rajouter des trucs.
Par exemple je souhaiterais faire une animation : les pions se retournent .
J'ai donc trouvé la fonction delay , qui me permet de temporiser mon anim , pour qu'on puisse la voir , sinon c'est trop rapide.
Mon probleme vient du fait que n'importe quel paramatres ne changent rien a cette fonction , il n'y a aucune pause !
delay() prend des parametres en ms , donc si je met 1000 , il devrait y avoir 1s de pause non? Il existe son homologue "sleep()"  , qui lui est en s , mais le probleme est qu'il n'accepte que des int , donc je ne peux pas faire 0.2 s...
Ma configuration : window , 1go ram , pentium D
Logiciel : turbo C 2.01.
Pourquoi un logiciel aussi pourri? Aucune idee je n'ai droit de compiler avec rien d'autre 8).
Connaissez vous d'autre fonctions de ce type , ou bien peut etre qu'il y a quelquechose a faire que je n'ai pas compris?
Merci de votre aide.


Titre: [C] fonction delay().
Posté par: Nebelmann le 15 Avril 2007 à 16:36:54
essaye un usleep :

Code:
       /* BSD version */
       #include <unistd.h>

       void usleep(unsigned long usec);


Titre: [C] fonction delay().
Posté par: micka13 le 15 Avril 2007 à 16:42:08
Arf pas de chance cette bibliotheque n'existe pas d'origine avec turboC.
Je ne peux pas en prendre d'autre car sinon il y aura une erreur chez le prof ;)


Titre: [C] fonction delay().
Posté par: Invit le 15 Avril 2007 à 19:35:01
Perso quand je faisais de la prog VGA avec TurboC j'utilisais delay() aussi, c'est crado mais me semble que c'est de toutes façons le moyen le plus efficace pour une animation simple.


Titre: [C] fonction delay().
Posté par: micka13 le 15 Avril 2007 à 20:06:35
C'est ce que j'ai crus comprendre a travers divers forum!
Au premier semestre d'autre personne s'en sont servi a ma fac , et ca marché.
Je ne comprend pas pourquoi ca ne fonctionne pas sur mon ordi:mad:.
Surtout que le sleep n'a pas de probleme:rolleyes:

Je crois que je vais me faire des boucles...c'est dommage d'utiliser le processus alors que le delay , parait-il ,arrete tout.

[edit]Bizarre delay se trouve dans dos.h , mais en rajoutant time.h , il semble que cela fonctionne...je vais faire d'autre test pour en etre sur :) [/edit]


Titre: [C] fonction delay().
Posté par: Invit le 15 Avril 2007 à 21:12:47
Citation de: micka13
Je crois que je vais me faire des boucles...
Justement non, la vitesse d'exec de tes boucles dépendent de la cadence de ton processeur, tandis qu'avec delay() tu temporises un nombres de milisecondes (lesquelles équivalent à la même durée quelque soit le processeur :lol:)

Ma foi, il est sans doute possible de passer par time.h et de faire une tempo "à la main".


Titre: [C] fonction delay().
Posté par: _o_ le 15 Avril 2007 à 22:05:11
Citation de: cmd
Ma foi, il est sans doute possible de passer par time.h et de faire une tempo "à la main".
Mais ça risque de bouffer du CPU à rien faire. :/

La solution propre est d'utiliser delay(). Reste à comprendre pourquoi le passage d'un paramètre ne change rien. Peut-être une initialisation mal fichue ? Sinon, attention, delay a une précision de 55 ms d'après ce que j'en lis.


Titre: [C] fonction delay().
Posté par: micka13 le 16 Avril 2007 à 09:01:39
Je vous remercie pour vos reponses , mais il semblerait que j'ai ete un peu stupide :oops:.
Lorsque je lance mon programme , il commence l'execution avant que la fenetre n'apparaisse.
Donc en fait il faisait ma petite anim qui dure 2s , mais lorsque je le voyais les 2 s etaient ecoulé!
Ensuite quand je changer de paramatres , entre 5000 et 50000 il y a vraiment peu de difference donc je ne voyait toujours pas.Et puis enfin lorsque j'ai mis 50000000000000   , a mon avis le chiffre etaient un peu grand^^
Resultat j'ai fait un getch()  pour bien attendre que l'ecran apparaisse et la miracle :rolleyes: ^^.