Programme Multithreading - C++ - Programmation
Marsh Posté le 06-06-2005 à 15:24:34
Lire de la doc sur les thread, effectivement.
Et bien détailler les topics, aussi.
Marsh Posté le 06-06-2005 à 15:34:12
j'ai déjà lu la doc sur les threads et je pige que dalle.
Sinon pour le programme, je sais pas quoi dire de plus.
C'est un tamagoshi, pendant que tu le fais manger etc, y a un compteur qui décompte ses points de vie et qui incrément aussi une variable représentant ses points d'évolutions.
Voilà
Marsh Posté le 06-06-2005 à 15:36:28
A quoi tu piges quedalle ?
Détaille ce qui n'est pas clair.
Pourquoi les threads?
quel langage ?
quel os ?
Marsh Posté le 06-06-2005 à 15:39:38
Et bien j'ai essayé de lire le tuto sur ce site : http://bob.developpez.com/tutapiwin/
Et j'ai rien compris.
Je veux faire du multi parce que même lorsque l'on effectue des actions comme manger etc, le compteur tourne toujours, indépendemment des actions efféctuées et ce n'est possible qu'avec le multithreading je pense, à part si tu as une autre solution... J'utilise le C++ sous Visual C++
J'ai téléchargé des exemples et je n'ai pas compris grand chose.
Merci d'avance
Marsh Posté le 06-06-2005 à 15:49:33
ReplyMarsh Posté le 06-06-2005 à 15:51:47
Oui je fais du C++ au lycée depuis un an, et je suis actuellement en stage et on me demande de faire un tamagoshi, et je dois avouer que j'ai un peu de mal, c'est pour ca que je demande l'aide de personnes expérimentées.
Marsh Posté le 06-06-2005 à 15:53:55
ReplyMarsh Posté le 06-06-2005 à 15:55:11
ha mdr (le gros nul) non j'ai pas essayé, j'ai essayé de suivre des exemples sur le site que j'ai mit tout à l'heure mais y a trop de mots nouveaux, que je comprend pas...
Marsh Posté le 06-06-2005 à 15:56:59
Je te conseille d'essayer de coder quelque chose dans ce sens, et ainsi d'éclaircir les questions que tu te poses.
Pas-à-pas quoi. Commence par le prendre par un bout, et on voit ensuite.
C'est comme dans la pub: petit à petit, on devient moins petit !
Marsh Posté le 06-06-2005 à 16:01:05
Au lieu de faire du multithreading, tu enregistre au debut l'heure.
Ensuite a chaque calcul de vie tu prend l'heure et tu fais un calcul avec l'heure de début.
Si c'est "en temps réel", tu fais ce calcul à chaque occurence de la boucle principale.
Marsh Posté le 06-06-2005 à 16:06:26
J'ai pas très bien compris ce que tu me propose Ritzle, au début du programme, tu fixe l'heure et qu'est-ce que tu entends pas calcul de vie? Mon indicateur de vie doit tout le temps bouger, donc je comprend pas très bien...
Tu veux faire une soustraction entre l'heure ou ce calcul à lieu et l'heure de début et ensuite proportionnellement, donner un résultat pour la vie c'est bien ça?
Marsh Posté le 06-06-2005 à 16:25:56
Admettons que tu veux enlever 1 pt de vie toutes les 2 secondes.
En pseudo-code :
Code :
|
(heure() renvoie des secondes)
Marsh Posté le 06-06-2005 à 16:26:07
Y a t'il un mot clé pour visual C++ pour effacer l'écran?
Car je sais que le clrscr() ne marche pas sous VC++
Merci
Marsh Posté le 06-06-2005 à 16:57:07
C'est quoi comme bibliothèque qui faut mettre??
parce que il me met heure: undeclared identifier
Marsh Posté le 06-06-2005 à 17:25:16
Pourrais tu commenter un peu ton code, car moi être perdu.
heure(), c'est une fonction que tu fais toi? ou c'est un mot clé d'une bibliothèque?
Et si c'est une fonction, tu met quoi dedans?
Merci d'avance
Marsh Posté le 06-06-2005 à 17:36:55
j'ai précisé que c'était du pseudo-code, c'est-à-dire qu'on peut rien en faire tel quel (meme si ca ressemble fortement au C).
la fonction heure() n'existe pas, et je n'ai jamais su comment récupérer l'heure en C/C++... j'utilise souvent SDL et grace aux timers on peut savoir depuis combien de temps le programme a été lancé.
qu'est ce que tu comprends pas dans mon code ?
tu preferes une espece de basic ?
Code :
|
Marsh Posté le 06-06-2005 à 17:38:19
c'est en quel langage/quelle plate forme l'instruction "clrscr()" ?
Marsh Posté le 06-06-2005 à 17:41:32
ou en français :
Code :
|
Marsh Posté le 06-06-2005 à 17:43:05
Non c'était juste le heure qui me génait
En ce qui concerne clrscr(), je sais qu'il marche sous Borland et qu'il ne marche pas sous VC++, donc je voulais savoir si tu savais quel mot clé utiliser.
Pour la fonction heure, il faut utiliser GetSystemTime je crois.
Merci beaucoup
Marsh Posté le 06-06-2005 à 23:58:09
Pour l'heure t'as aussi GetSystemAsFileTime qui t'épargne des recompositions d'heure à la onc : GetSystemTime te la donne en décomposée : wYear, wMonth...wSecond, wMillisecond...
Une fonction pour choper l'heure :
Code :
|
Marsh Posté le 07-06-2005 à 10:16:15
Merci beaucoup, je vais voir ce que je peux faire avec ca.
Merci en tout cas
Marsh Posté le 07-06-2005 à 10:26:04
J'ai essayé ton bout de code theredled et il me retourne un vieux chiffre à virgule, comment ca se fait qu'il ne me retourne pas l'heure?
Merci d'avance
Marsh Posté le 07-06-2005 à 11:16:06
J'ai trouvé ca comme exemple et apparamment tout marche bien...
http://www.cppfrance.com/code.aspx?ID=10173
Sauf le -1 dans le calcul des heures.
J'attends vos commentaires
Merci
Marsh Posté le 07-06-2005 à 13:17:45
Normal pour le gros chiffre : l'heure que te donne ma fonction est en une seule valeur (je ne sais pas exactement comment GetSystemTimeAsFileTime calcule son chiffre) : il faut ensuite la convertir. Mais GetSystemTimeAsFileTime est très pratique surtout pour faire des calculs de temps (pas possible avec GetSystemTime), même précis (à la nanoseconde selon la doc).
Tu as d'autres fonction pour convertir genre FileTimeToSystemTime etc. J'ai trouvé tout ça dans la MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsystemtimeasfiletime.asp
en naviguant entre les liens "see also"
Marsh Posté le 07-06-2005 à 13:37:01
salut je me suis confronté au problème de l'heure y a pas longtemps j'ai galéré mais en fait c'est tout simple:
[cpp]
#include <windows.h>
#include <stdio.h>
int main()
{
SYSTEMTIME systime;
GetSystemTime(&systime);
// Determine day of the week.
char day[10];
switch (systime.wDayOfWeek)
{
case 0:
sprintf(day, "Sunday" );
break;
case 1:
sprintf(day, "Monday" );
break;
case 2:
sprintf(day, "Tuesday" );
break;
case 3:
sprintf(day, "Wednesday" );
break;
case 4:
sprintf(day, "Thursday" );
break;
case 5:
sprintf(day, "Friday" );
break;
case 6:
sprintf(day, "Saturday" );
break;
}
// Show the time in a message box.
memset (str,0,sizeof(str));
sprintf(str, "%s %u/%u/%u %u:%u:%u:%u",
day,
systime.wYear, systime.wMonth, systime.wDay,
systime.wHour+2, systime.wMinute, systime.wSecond, systime.wMilliseconds);
printf("%s\r",str);
seconde = systime.wSecond;
//printf("%d\r",seconde);
Sleep(1);
}
return 0;
}
Marsh Posté le 07-06-2005 à 13:44:03
Code :
|
c mieu la.... simple non?
Marsh Posté le 07-06-2005 à 13:46:31
escuse pour la petite erreur avec return 0 et { ....
j'ai tapé trop vite
Marsh Posté le 07-06-2005 à 14:10:24
Merci à tous pour toutes ces réponses, j'ai l'embarras du choix, et la dernière solution me parait bien..
Salut
Marsh Posté le 07-06-2005 à 14:22:10
wahhhhhhhh rien pigé loooooooooool c'est pour quoi faire Aldarek!?
Marsh Posté le 07-06-2005 à 14:29:38
si tu lisai le topic tout entier, tu saurais que c'est pour récuprer l'heure à partir de l'horloge interne du pc et ensuite la décomposer pour l'afficher sous forme H : M : S.
Voilà
Marsh Posté le 06-06-2005 à 14:52:28
Je voudrais faire un programme qui pendant qu'on effectue des actions diverses, un compteur boucle en même temps, mais ce compteur n'intéragit pas avec ce que l'on fait à côté.
Quelqu'un pourrait il m'aider svp??
Merci d'avance