florian1121
Messages postés37Date d'inscriptionjeudi 20 avril 2006StatutMembreDernière intervention26 avril 2006
-
23 avril 2006 à 15:40
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 2009
-
23 avril 2006 à 17:37
Bonjour!!
J'ai un probleme au niveau de mon programme, lorsque je le lance la boucle for dans les case ,ca empeche la boucle de switch de recommencer, ce qui est logique puisque le switch attend que le for soit fini pour recommencer!!
mais j'aurai besoin que les boucles for recommence a 0 dés que je rappuit sur une fleche, tout en gardant la valeur de la variable distance, afin que les valaur calculé par la nouvelle boucle for s'additionne avec la variable distance de la boucle d'avant!!
Voici le programme pour plus de clarté!!
void main()
{
int vitesse=0,distance=0,n,i;
char touche;
n=1000;
i=clock_t()/CLOCKS_PER_SEC;
do
{
fflush(stdin);
touche = getch();
clrscr();
/*fonction récuperant le code ascii des fleche*/
switch(touche)
{
case 72 : vitesse += 10;
/*fleche haut detecté*/
for(i=0;i<n;i++)
/*boucle permettant un decompte du temps, dès l'appuit sur une fleche,
mais empechant a nouveau l'appui d'une fléche qui permettrait de changer la variable vitesse*/
{
system(
"cls");
printf(
"la voiture roule à %ikm/h\n",vitesse);
printf(
"%d\n",i);
distance=distance+(vitesse/3.6);
/*calcule de la distance parcourrue a chaque seconde, et
s'additionnant a la distance parcourrue jusque la*/
printf(
"distance=%d",distance);
_sleep(1000);
}
break;
case 80 : vitesse -= 10;
for(i=0;i<n;i++)
{
system(
"cls");
printf(
"la voiture roule à %ikm/h\n",vitesse);
printf(
"%d\n",i);
distance=distance+(vitesse/3.6);
printf(
"distance=%d",distance);
_sleep(1000);
}
break;
}
}
while(touche!=13); /* en appuyant sur entrer on boucle*/
}
cs_Joky
Messages postés1787Date d'inscriptionlundi 22 novembre 2004StatutMembreDernière intervention31 janvier 20092 23 avril 2006 à 16:53
Comme l'avais dit BruNews... CreateThread...
DWORD __stdcall ThreadProc( LPVOID lpParam )
{
//Ici ce sera comme un nouveau processus, une espèce de programme indépendant
//Donc tu peux faires tes traitements ici, par exemple ta boucle for
}
et dans ton switch
HANDLE hThread;
case 72:
vitesse -= 10;
hThread = CreateThread( NULL,
0,
(LPTRHEAD_START_ROUTINE)ThreadProc,
NULL, //Le paramètre que tu veux passer
0, //Démarrer imédiatemment
NULL );
if(hThread == NULL)
MessageBox(0, "Erreur lors de la création du thread.", "Erreur", 0x10);
break;
florian1121
Messages postés37Date d'inscriptionjeudi 20 avril 2006StatutMembreDernière intervention26 avril 20062 23 avril 2006 à 16:57
Merci beaucoup, mais l'ennuit c que c trop compliqué pour moi , et pour mes connaissance en informatique!!!!
Je le tente et je te retient au courrant!!
florian1121
Messages postés37Date d'inscriptionjeudi 20 avril 2006StatutMembreDernière intervention26 avril 20062 23 avril 2006 à 17:16
presque tout les mots que tu me donne me sont noté en erruer comme indentificateur introuvable, je suppose que c parcequ'il me manque un #include, lequel faut il mettre?
Et aussi , la fonction createthread, il ne faut pas la definir avant?
En fait l'idéal pour faire en fonction de mes connaissance ce serait une fonction qui permet d'arréter la boucle, par exemple dans la boucle for,
if (touche==72)
n=i
else
/* le restant*/
Ce qui permettrait d'arréter la boucle en appuyant sur la fleche,
j'ai essayer mais ca ne marche pas, ou peut etre que j'ai fait une erreur(surment!!!)!!
Sans ca,pensez vous que ca pourrait marcher, et si oui coment l'ecrire correctement???