Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 2007
-
6 août 2004 à 00:37
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 2007
-
15 oct. 2004 à 20:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 15 oct. 2004 à 20:26
C'est une source qui ne compile que sous DJGPP et ces fichiers sont spécifiques à ce compilo.
Si t'es sous Visual C++ ou Dev-C++, n'espère même pas; ce sont des compilos pour Windows et la source est pour DOS (ce qui est différent, malgré ce qu'on pourrait penser ^^)
the_verms
Messages postés1Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention15 octobre 2004 15 oct. 2004 à 11:36
Cela implique qu'il est nécessaire d'avoir ces fichiers (et la bonne version) pour la compilation. Mais quand on ne les a pas, comment fait-ton? Où les trouve-t-on?
Thx d'avance....
lilington
Messages postés158Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention12 mars 2009 3 sept. 2004 à 14:23
ou alors ça marche pas ou bien aucun n'est passé pendant la boucle for et le gotoxy() + le printf.
lilington
Messages postés158Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention12 mars 2009 3 sept. 2004 à 12:26
Merci c'est cool pais je vais un peu prendre pn temps pour tester je suis un peu pris c'est temps si.
ça ne te derange pas si je tarde à te donner les resultat du test ?
cs_gorgonzola
Messages postés37Date d'inscriptionsamedi 16 mars 2002StatutMembreDernière intervention21 février 2015 27 août 2004 à 21:41
OK si j'ai bien compris tu veux pas attendre mais compter les microsecondes. Alors c'est simple, en fait la fonction clock() renvoie le nombre de tics du processeur actuel (comme pour la fonction time() sauf que c'est des 'tics' et pas des secondes). et 'CLOCKS_PER_SEC' est le nombre de tics dans une seconde.
Autrement dit il te suffit de faire :
tmp=clock(); // mémorise le nombre de tics actuel
...
ici tu met ton code, ce que tu veux
...
tmp=clock()-tmp; // calcule le nombre de tics actuel moins le nombre de tics de la derniere fois, autrement dit 'tmp' va contenir le nombre de tics passé
tmp=(tmp*1000)/CLOCKS_PER_SEC; // et maintenant convertit le nombre de tics en microsecondes !
Voila, puis après tu fais ce que tu veux avec 'tmp' qui contient le nombre de microsecondes passées.
lilington
Messages postés158Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention12 mars 2009 10 août 2004 à 10:42
j'ai lu ta source mais ya un hic le programme ne doit pas s'interrompre c'est un chrono du genre
in main()
{
do
{
if ( ok=chrono(200)) y++;
if ( ok2=chrono(500)) y2++;
if (kbhit()) e=getch();
/* {
si des touches taper faire qq chose
} */
capture _arriereplan(x,y,dx,dy);
restore_arriereplan(dx,dy);
afiche_pcx(image1,x,y);
afiche_pcx(image0,x,y2);
}
while(e!=27);
}
comme tu peut le constater la fonction chrono renvois 1 si X ms sont passé depuis sont dernière appel et ainsi toutes les X milli seconde + le temps d'execution d'une boucle y et y2 sont incrémenter.
ca me permettra de pouvoire synchroniser le mouvement de plusieurs ennemis dans mon jeu.au fait c'est sur turbo c
lilington
Messages postés158Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention12 mars 2009 10 août 2004 à 10:30
Merci t'es génial
cs_gorgonzola
Messages postés37Date d'inscriptionsamedi 16 mars 2002StatutMembreDernière intervention21 février 2015 9 août 2004 à 14:00
t'as de la chance j'avais déjà fait une source pour attendre X microsecondes il y a quelques temps :
lilington
Messages postés158Date d'inscriptionsamedi 31 janvier 2004StatutMembreDernière intervention12 mars 2009 9 août 2004 à 13:26
Génial je n'vais besoin que de ça mais dit moi j'ai un petit blème tu pourras peut être m'aider : j'ai besoin d'un chrono pour un programme genre castelvania que je prépare.
voilà il me faut créer un timer pour que mes personnages puisse bouger par ex: le perso 1 ne peut pas effectuer de mouvement avant que 800ms ne sois passées sepuis son dernier mouvement ,le perso 2 600ms et ainsi de suite.
Funto66
Messages postés1267Date d'inscriptionmercredi 1 janvier 2003StatutMembreDernière intervention28 février 20074 6 août 2004 à 00:37
Excellente source :) Ça marche très bien chez moi :)
Le seul truc peut-être c'est les commentaires, notamment pour la fonction line(). C'est ça l'algo de Bresenham?
15 oct. 2004 à 20:26
Si t'es sous Visual C++ ou Dev-C++, n'espère même pas; ce sont des compilos pour Windows et la source est pour DOS (ce qui est différent, malgré ce qu'on pourrait penser ^^)
15 oct. 2004 à 11:36
#include
#include <conio.h>
#include <dpmi.h>
#include <go32.h>
#include
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/farptr.h>
#include <sys/movedata.h>
#include <time.h>
Cela implique qu'il est nécessaire d'avoir ces fichiers (et la bonne version) pour la compilation. Mais quand on ne les a pas, comment fait-ton? Où les trouve-t-on?
Thx d'avance....
3 sept. 2004 à 14:23
void main(void)
{
int tm;
clrscr();
tm=clock();
gotoxy(1,1);printf("a= %d",tm);
for(int i=0;i<100;i++) y++;
tm=clock()-tm;
tm=(tm*1000)/CLOCKS_PER_SEC;
gotoxy(1,2);printf("b= %d",tm);
getch();
}
ou alors ça marche pas ou bien aucun n'est passé pendant la boucle for et le gotoxy() + le printf.
3 sept. 2004 à 12:26
ça ne te derange pas si je tarde à te donner les resultat du test ?
27 août 2004 à 21:41
Autrement dit il te suffit de faire :
tmp=clock(); // mémorise le nombre de tics actuel
...
ici tu met ton code, ce que tu veux
...
tmp=clock()-tmp; // calcule le nombre de tics actuel moins le nombre de tics de la derniere fois, autrement dit 'tmp' va contenir le nombre de tics passé
tmp=(tmp*1000)/CLOCKS_PER_SEC; // et maintenant convertit le nombre de tics en microsecondes !
Voila, puis après tu fais ce que tu veux avec 'tmp' qui contient le nombre de microsecondes passées.
10 août 2004 à 10:42
in main()
{
do
{
if ( ok=chrono(200)) y++;
if ( ok2=chrono(500)) y2++;
if (kbhit()) e=getch();
/* {
si des touches taper faire qq chose
} */
capture _arriereplan(x,y,dx,dy);
restore_arriereplan(dx,dy);
afiche_pcx(image1,x,y);
afiche_pcx(image0,x,y2);
}
while(e!=27);
}
comme tu peut le constater la fonction chrono renvois 1 si X ms sont passé depuis sont dernière appel et ainsi toutes les X milli seconde + le temps d'execution d'une boucle y et y2 sont incrémenter.
ca me permettra de pouvoire synchroniser le mouvement de plusieurs ennemis dans mon jeu.au fait c'est sur turbo c
10 août 2004 à 10:30
9 août 2004 à 14:00
http://www.cppfrance.com/code.aspx?id=9952
9 août 2004 à 13:26
voilà il me faut créer un timer pour que mes personnages puisse bouger par ex: le perso 1 ne peut pas effectuer de mouvement avant que 800ms ne sois passées sepuis son dernier mouvement ,le perso 2 600ms et ainsi de suite.
6 août 2004 à 00:37
Le seul truc peut-être c'est les commentaires, notamment pour la fonction line(). C'est ça l'algo de Bresenham?