blackdead08
Messages postés18Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention12 septembre 2006
-
1 juil. 2006 à 00:34
mickeydisn
Messages postés13Date d'inscriptiondimanche 27 octobre 2002StatutMembreDernière intervention23 août 2007
-
23 août 2007 à 15:17
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
mickeydisn
Messages postés13Date d'inscriptiondimanche 27 octobre 2002StatutMembreDernière intervention23 août 2007 23 août 2007 à 15:17
Une derniere methode qui marche bein ! (meme principe que le select. mais moin galer a metre en place sous windows
//init
HANDLE h = CreateEvent(NULL,TRUE, FALSE, NULL);
// dans ta boucle
While(1)
{
// le Sleep
WaitForSingleObject(h, time_in_ms);
}
Et j'insite le Sleep(ms/1000) ne marchera pas !!!!!!
Enjoy
mickeydisn
Messages postés13Date d'inscriptiondimanche 27 octobre 2002StatutMembreDernière intervention23 août 2007 23 août 2007 à 14:21
Pour info le caste ne ca pas changer quand chose puisque c'est la fonction qui est ecri ainci ... les valeur flotante seron toujour convertie en entier.
En cherche un peut sur le net tu vera que le usleep et souvant ramplacer pas un
select(0,NULL,NULL,NULL,&tv) ou tv et une structure temprel exprime en micro segond.
(note : select et une fonction de gestion de thead.. souvant utiliser dans des socket.. , ici l'utilisation et un peut "bizard" .. mais c'est a ma connaisance le seul moyen efficace de faire un sleep avec un temps < 1ms)
Un autre moyen et d'utiliser le temps machine en crean une boucle vide qui tourne jusqua que le temp voulue soit ecouler. mais cette methode est peut recommender puisque aucune liberation de processeur n'est effectuer... (Utilisation de 100% du processeur inuti)
Info sur le Sleep .. le Sleep ou le select ne son pas des fonction precise, en effet de temps donnée en parametre et un minimal. apres un rapide test sur une vielle machine for(;;) Sleep(1); donne des temps de Sleep au allant tour de 2ms par Sleep.
dernier Info . pour calculer une valeur de temps precise il et fortement deconseiller d'utiliser les fonction de time.h.. pour des calcule de l'ordre du microsegonde il vaux mieu utilisé QueryPerformanceFrequency et QueryPerformanceCounter (voire google)
Voila j'en et deja trop dit !
mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008 23 août 2007 à 13:26
La remarque aurait pu être constructive si au lieu de rigoler, tu proposais une correction avec un cast par exemple.
Cela dit et bien que cela reste hors sujet, je te conseille d'utiliser un correcteur orthographique et un meilleur clavier car il semble inverser certaines lettres (étrange).
mickeydisn
Messages postés13Date d'inscriptiondimanche 27 octobre 2002StatutMembreDernière intervention23 août 2007 23 août 2007 à 12:04
Franchament j'ai rein vue de plus drole : Sleep(x / 1000)
la fonction Sleep de Windows prend comme paramentre un DWORD, equivalent d'un unsigned int ...
si tu mes x = 100 .. ca fais Sleep(0.1) qui en unsigned int donne tout simplement 0 .
blackdead08
Messages postés18Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention12 septembre 2006 3 juil. 2006 à 09:59
Cela vient peut être du compilateur, mais usleep() n'a aucun effet sur le déroulement du programme.
Les compilateur que j'utilise sont gcc et xcode sur Mac Os X 10.4 (version PPC).
Les programmes sont exécutés sous terminal Unix Darwing ou X11.
J'utilise peut être mal ces fonctions :(
mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008 3 juil. 2006 à 09:30
usleep marche très bien à ma connaissance sur linux (du moins) et c'est défini dans unistd.h
personnellement, qd je fais des programmes compilable sur windows, j'utilise le Sleep de chez crosoft redéfini en usleep; comme ça j'utilise le même vocabulaire sans allourdir le code.
[ce n'est qu'une idée parmi tant d'autres ;) ]
#ifdef __CYGWIN__ // car j'utilise Cygwin ;)
#include <windows.h>
#define usleep(x) Sleep(x / 1000) // en microseconde
#else
#include // pour usleep()
#endif
.Mick.
ps: pas la peine de me poser la question sur le mode RAW avec solaris ... désolé, je ne connais pas la réponse (je ne travaille plus dessus depuis quelques années, héhé ;))
blackdead08
Messages postés18Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention12 septembre 2006 2 juil. 2006 à 23:52
Voilà la mise à jour viens d'être faite!
Une prochaine version avec des commentaires plus scientifique (invariant,pres,post...)
Je m'exerce sur les pointeurs la prochaine version en sera donc amélioré...
Savez-vous comment je peux faire un équivalent de la fonction delay(),
de l'unité crt, du langage pascal?
(déjà trouvé nanosleep, usleep, system ("sleep"),... mais rien ne fonctionne)
encore merci SAKingdom !!!
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 1 juil. 2006 à 23:06
Non désolé. Je ne programme que sous Windows présentement. J'ai aucune idée de quoi tu parle...
blackdead08
Messages postés18Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention12 septembre 2006 1 juil. 2006 à 23:03
Excellente remarque je vais modifier les else if de suite et
des commentaires sur le vt100 seront dans le zip...
(laissez moi juste le temps -demain soir-)
Je suis content de progresser grace à vous SAKingdom
sauriez vous comment je peut transformer le mode raw
pour quel puisse fonctionner sur solaris?
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 1 juil. 2006 à 15:58
Je vien de voir le code. Errrmm, si c'est pour les débutants, il aurait été sage de commenter et d'espacer un peu plus ton code. Il y a quelque points qui pourrait être optimisé mais je passe par dessus quelque un car les valeurs sont trop minime. J'ai remarquer que tu utilise plusieurs if de suite plutot que d'utiliser des else if. Utiliser 3 if en ligne signifie faire trois test. Faire if else if else if signifi tester jusqu'à ce que la valeur évalué soi vrai et sauter le reste. Évidament encore ici, ça ne représente pas grand chose coté performance mais je te suggère de prendre l'habitude d'utiliser des else if plutot que plusieurs if en ligne si ce n'est que pour une meilleur compréhension du code.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 1 juil. 2006 à 10:33
2 othello pour Linux, on n'en est pas au niveau indigestion comme avec le sudoku donc ça reste.
blackdead08
Messages postés18Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention12 septembre 2006 1 juil. 2006 à 08:58
Comme je l'ai dis je suis débutant et mon but est de montrer simplement aux autres débutants
comment on peut par exemple passer en mode raw sur terminal, faire un randomize, utiliser le vt100
je n'ai aucune prétention face au niveau algorithmique des experts de ce site
La source avec IA est difficile à comprendre quand on veut apprendre par soi même un langage
En effet, elle contient plusieurs fichiers ce qui sous entend que l'on dois maîtriser toutes les options de son compilateur et la compilation séparée avec les makefile's...
J'apprend avec ce site et je voulais que d'autres puissent en profiter, je vous laisse seul juge de conserver cette source ou non :-)
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 1 juil. 2006 à 04:23
Il y a déja beaucoup de source traitent d'un othello. Il y a déja une autre source othello un peu plus bas avec IA et fonctionnent sous Linux. Je ne sais pas si cette source sera conservé.
blackdead08
Messages postés18Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention12 septembre 2006 1 juil. 2006 à 00:35
un seul fichier dans le zip
blackdead08
Messages postés18Date d'inscriptionvendredi 23 décembre 2005StatutMembreDernière intervention12 septembre 2006 1 juil. 2006 à 00:34
j'ai oublié de préciser qu'elle ne fonctionne que sur Unix
up date à venir
23 août 2007 à 15:17
//init
HANDLE h = CreateEvent(NULL,TRUE, FALSE, NULL);
// dans ta boucle
While(1)
{
// le Sleep
WaitForSingleObject(h, time_in_ms);
}
Et j'insite le Sleep(ms/1000) ne marchera pas !!!!!!
Enjoy
23 août 2007 à 14:21
En cherche un peut sur le net tu vera que le usleep et souvant ramplacer pas un
select(0,NULL,NULL,NULL,&tv) ou tv et une structure temprel exprime en micro segond.
(note : select et une fonction de gestion de thead.. souvant utiliser dans des socket.. , ici l'utilisation et un peut "bizard" .. mais c'est a ma connaisance le seul moyen efficace de faire un sleep avec un temps < 1ms)
Un autre moyen et d'utiliser le temps machine en crean une boucle vide qui tourne jusqua que le temp voulue soit ecouler. mais cette methode est peut recommender puisque aucune liberation de processeur n'est effectuer... (Utilisation de 100% du processeur inuti)
Info sur le Sleep .. le Sleep ou le select ne son pas des fonction precise, en effet de temps donnée en parametre et un minimal. apres un rapide test sur une vielle machine for(;;) Sleep(1); donne des temps de Sleep au allant tour de 2ms par Sleep.
dernier Info . pour calculer une valeur de temps precise il et fortement deconseiller d'utiliser les fonction de time.h.. pour des calcule de l'ordre du microsegonde il vaux mieu utilisé QueryPerformanceFrequency et QueryPerformanceCounter (voire google)
Voila j'en et deja trop dit !
23 août 2007 à 13:26
Cela dit et bien que cela reste hors sujet, je te conseille d'utiliser un correcteur orthographique et un meilleur clavier car il semble inverser certaines lettres (étrange).
23 août 2007 à 12:04
la fonction Sleep de Windows prend comme paramentre un DWORD, equivalent d'un unsigned int ...
si tu mes x = 100 .. ca fais Sleep(0.1) qui en unsigned int donne tout simplement 0 .
3 juil. 2006 à 09:59
Les compilateur que j'utilise sont gcc et xcode sur Mac Os X 10.4 (version PPC).
Les programmes sont exécutés sous terminal Unix Darwing ou X11.
J'utilise peut être mal ces fonctions :(
3 juil. 2006 à 09:30
personnellement, qd je fais des programmes compilable sur windows, j'utilise le Sleep de chez crosoft redéfini en usleep; comme ça j'utilise le même vocabulaire sans allourdir le code.
[ce n'est qu'une idée parmi tant d'autres ;) ]
#ifdef __CYGWIN__ // car j'utilise Cygwin ;)
#include <windows.h>
#define usleep(x) Sleep(x / 1000) // en microseconde
#else
#include // pour usleep()
#endif
.Mick.
ps: pas la peine de me poser la question sur le mode RAW avec solaris ... désolé, je ne connais pas la réponse (je ne travaille plus dessus depuis quelques années, héhé ;))
2 juil. 2006 à 23:52
Une prochaine version avec des commentaires plus scientifique (invariant,pres,post...)
Je m'exerce sur les pointeurs la prochaine version en sera donc amélioré...
Savez-vous comment je peux faire un équivalent de la fonction delay(),
de l'unité crt, du langage pascal?
(déjà trouvé nanosleep, usleep, system ("sleep"),... mais rien ne fonctionne)
encore merci SAKingdom !!!
1 juil. 2006 à 23:06
1 juil. 2006 à 23:03
des commentaires sur le vt100 seront dans le zip...
(laissez moi juste le temps -demain soir-)
Je suis content de progresser grace à vous SAKingdom
sauriez vous comment je peut transformer le mode raw
pour quel puisse fonctionner sur solaris?
1 juil. 2006 à 15:58
1 juil. 2006 à 10:33
1 juil. 2006 à 08:58
comment on peut par exemple passer en mode raw sur terminal, faire un randomize, utiliser le vt100
je n'ai aucune prétention face au niveau algorithmique des experts de ce site
La source avec IA est difficile à comprendre quand on veut apprendre par soi même un langage
En effet, elle contient plusieurs fichiers ce qui sous entend que l'on dois maîtriser toutes les options de son compilateur et la compilation séparée avec les makefile's...
J'apprend avec ce site et je voulais que d'autres puissent en profiter, je vous laisse seul juge de conserver cette source ou non :-)
1 juil. 2006 à 04:23
1 juil. 2006 à 00:35
1 juil. 2006 à 00:34
up date à venir