Télécharger le zip
j'ai oublié de préciser qu'elle ne fonctionne que sur Unixup date à venir
un seul fichier dans le zip
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é.
Comme je l'ai dis je suis débutant et mon but est de montrer simplement aux autres débutantscomment on peut par exemple passer en mode raw sur terminal, faire un randomize, utiliser le vt100je n'ai aucune prétention face au niveau algorithmique des experts de ce siteLa source avec IA est difficile à comprendre quand on veut apprendre par soi même un langageEn 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 :-)
2 othello pour Linux, on n'en est pas au niveau indigestion comme avec le sudoku donc ça reste.
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.
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?
Non désolé. Je ne programme que sous Windows présentement. J'ai aucune idée de quoi tu parle...
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 !!!
usleep marche très bien à ma connaissance sur linux (du moins) et c'est défini dans unistd.hpersonnellement, 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 <unistd.h> // 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é ;))
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 :(
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 .
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).
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 unselect(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 !
Une derniere methode qui marche bein ! (meme principe que le select. mais moin galer a metre en place sous windows//initHANDLE h = CreateEvent(NULL,TRUE, FALSE, NULL);// dans ta boucleWhile(1){ // le Sleep WaitForSingleObject(h, time_in_ms);}Et j'insite le Sleep(ms/1000) ne marchera pas !!!!!! Enjoy
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 903 527 membres 104 nouveaux aujourd'hui 16 195 membres club