FrancoisGauthier
Messages postés21Date d'inscriptionsamedi 1 août 2009StatutMembreDernière intervention20 mai 2011 4 déc. 2009 à 17:19
Allons-y!
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 3 déc. 2009 à 18:33
Salut,
Pour ne pas avoir de problemes, force ton compilateur a utiliser uniquement le C ou C++ ANSI quand tu developpes.
La tu seras portable avec du vrai C ou C++.
Eric
FrancoisGauthier
Messages postés21Date d'inscriptionsamedi 1 août 2009StatutMembreDernière intervention20 mai 2011 3 déc. 2009 à 16:45
Je viens d'essayer sous Vista avec Dev-C++ (c'est gcc aussi, mais bon...), ca compile parfaitement.
FrancoisGauthier
Messages postés21Date d'inscriptionsamedi 1 août 2009StatutMembreDernière intervention20 mai 2011 3 déc. 2009 à 16:24
>> Pistol_Pete
Oui, je le sais bien mais que veux tu, comme mon compilateur l'a avalé tout rond ben.... C'est quoi comme compilateur dans VisualStudio? Moi j'ai utilisé gcc dans NetBeans.
Je précise que quand j'ai compilé sur mon Mac avec Xcode 1.5 (et oui ca date un peu), il ne m'a pas signalé d'erreur non plus.
Pour la programmation défensive, c'était pas le but, mais je comprend ta remarque (franchement, pour des petits tests comme ça, j'avais pas envie de m'embeter avec).
Pour l' IA, je crois que tu l'a survolée un peu vite!!
Elle fait le même boulot que MiniMax ou AlphaBeta, avec moins d'instructions. Elle est donc plus performante; notament parcequ'elle réduit les calculs inutiles.
J'ai une autre version de l'IA encore plus légère, et qui fournit le même travail, non publiée pour l'instant.
; )
François
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 2 déc. 2009 à 18:09
Salut
Pour rebondir sur la fonction win(), googlelight a raison, il faut déclarer la fonction win avant de l'utiliser. Le compilo lie séquentiellement le programme: quand il tombe sur win qui n'est pas encore déclaré, il te met une erreur et c'est normal. Je suis très surpris que ca compile comme ca!
Il suffit d'ajouter le prototype de la fonction en début de programme:
int win(int accessMode);
En tout ca sur VS, ca passe pas.
Autre chose, quand tu demandes à l'utilisateur d'entrer un chiffre et plus globalement quand tu interagis avec lui, il faut que tu t'assures que l'action qu'il entreprend est correct. As tu essayé d'entrer une lettre au lieu d'un chiffre dans ton prog?
En ce qui concerne l'IA, tu peux essayer sur des petits programmes comme cela des algorithmes plus évolués comme les algos minmax, et Alpha beta. Tu trouveras beaucoup d'exemples sur ce site et dans la littérature.
Bonne continuation
FrancoisGauthier
Messages postés21Date d'inscriptionsamedi 1 août 2009StatutMembreDernière intervention20 mai 2011 30 nov. 2009 à 12:20
Dans le doute, je viens de tester ce source sous Mac OSx, et il compile sans l'ombre d'une erreure; tout comme avec OpenSolaris....
Je maintient donc la portabilité de ce code.
François
googlelight
Messages postés2Date d'inscriptionmardi 13 mai 2008StatutMembreDernière intervention30 novembre 2009 30 nov. 2009 à 12:18
voila g changer les emplacement des definitions de win et de reset et ca marche tres bien (sauf que je gagne plus hh)
++ meziane :D
FrancoisGauthier
Messages postés21Date d'inscriptionsamedi 1 août 2009StatutMembreDernière intervention20 mai 2011 30 nov. 2009 à 11:57
>> GoogleLight
Mon compilateur l'accepte tel quel.
Toutefois, tous n'ont pas la même interprétation de la norme du langage.
Il suffit de rajouter en haut du fichier l'en tête de la fonction concernée, elle est ainsi explicitement déclarée.
C'est un bon exemple de ce que constitue un code portable actuellement. C'est à dire portable d'un système à un autre sans trop de modifications à faire... mais ça reste quasi inévitable.
Merci à vous!
François
FrancoisGauthier
Messages postés21Date d'inscriptionsamedi 1 août 2009StatutMembreDernière intervention20 mai 2011 30 nov. 2009 à 11:53
Heyyy,
pas mal, j'y avais pas pensé!
Merci!
Il manque pas de 0 a la fin du test, il fini par :printf("") (Il est caché à la ligne en dessous, parceque je trouvais nul de finir le test comme ça, et je ne l'ai ensuite pas corrigé.... ;)
François
googlelight
Messages postés2Date d'inscriptionmardi 13 mai 2008StatutMembreDernière intervention30 novembre 2009 30 nov. 2009 à 11:42
Slt ; courage frero ;mais en compilant je recois ce mssg d'erreur
`win' undeclared (first use this function)
`int win(int)' used prior to declaration
LeFauve42
Messages postés239Date d'inscriptionvendredi 20 octobre 2006StatutMembreDernière intervention20 avril 2009 30 nov. 2009 à 11:08
Salut,
Petit source interessant et tres lisible :o).
J'aurai juste une petite remarque:
- pour tester qui a gagne, tu peux faire plus efficace avec un truc genre:
whoWin = tab[1]==tab[4]&&tab[4]==tab[7]?tab[7]:
tab[2]==tab[5]&&tab[5]==tab[8]?tab[8]:
.../...
tab[3]==tab[5]&&tab[5]==tab[7]?tab[7]:0;
Ca te renvoie 0, 'X' ou '0' au lieu de 0, 1 ou 2 mais tu fais deux fois moins de tests, et chaque test consiste en 2 et un && au lieux de 3 + et un (de plus, si le premier == est faux, le reste du test n'est pas effectue :o) )
Note qu'il manque un "0;" a la fin de ton test (a moins que ce ne soit un probleme d'affichage de cppfrance.com?). Je suis etonne que ca compile tel quel.
4 déc. 2009 à 17:19
3 déc. 2009 à 18:33
Pour ne pas avoir de problemes, force ton compilateur a utiliser uniquement le C ou C++ ANSI quand tu developpes.
La tu seras portable avec du vrai C ou C++.
Eric
3 déc. 2009 à 16:45
3 déc. 2009 à 16:24
Oui, je le sais bien mais que veux tu, comme mon compilateur l'a avalé tout rond ben.... C'est quoi comme compilateur dans VisualStudio? Moi j'ai utilisé gcc dans NetBeans.
Je précise que quand j'ai compilé sur mon Mac avec Xcode 1.5 (et oui ca date un peu), il ne m'a pas signalé d'erreur non plus.
Pour la programmation défensive, c'était pas le but, mais je comprend ta remarque (franchement, pour des petits tests comme ça, j'avais pas envie de m'embeter avec).
Pour l' IA, je crois que tu l'a survolée un peu vite!!
Elle fait le même boulot que MiniMax ou AlphaBeta, avec moins d'instructions. Elle est donc plus performante; notament parcequ'elle réduit les calculs inutiles.
J'ai une autre version de l'IA encore plus légère, et qui fournit le même travail, non publiée pour l'instant.
; )
François
2 déc. 2009 à 18:09
Pour rebondir sur la fonction win(), googlelight a raison, il faut déclarer la fonction win avant de l'utiliser. Le compilo lie séquentiellement le programme: quand il tombe sur win qui n'est pas encore déclaré, il te met une erreur et c'est normal. Je suis très surpris que ca compile comme ca!
Il suffit d'ajouter le prototype de la fonction en début de programme:
int win(int accessMode);
En tout ca sur VS, ca passe pas.
Autre chose, quand tu demandes à l'utilisateur d'entrer un chiffre et plus globalement quand tu interagis avec lui, il faut que tu t'assures que l'action qu'il entreprend est correct. As tu essayé d'entrer une lettre au lieu d'un chiffre dans ton prog?
En ce qui concerne l'IA, tu peux essayer sur des petits programmes comme cela des algorithmes plus évolués comme les algos minmax, et Alpha beta. Tu trouveras beaucoup d'exemples sur ce site et dans la littérature.
Bonne continuation
30 nov. 2009 à 12:20
Je maintient donc la portabilité de ce code.
François
30 nov. 2009 à 12:18
++ meziane :D
30 nov. 2009 à 11:57
Mon compilateur l'accepte tel quel.
Toutefois, tous n'ont pas la même interprétation de la norme du langage.
Il suffit de rajouter en haut du fichier l'en tête de la fonction concernée, elle est ainsi explicitement déclarée.
C'est un bon exemple de ce que constitue un code portable actuellement. C'est à dire portable d'un système à un autre sans trop de modifications à faire... mais ça reste quasi inévitable.
Merci à vous!
François
30 nov. 2009 à 11:53
pas mal, j'y avais pas pensé!
Merci!
Il manque pas de 0 a la fin du test, il fini par :printf("") (Il est caché à la ligne en dessous, parceque je trouvais nul de finir le test comme ça, et je ne l'ai ensuite pas corrigé.... ;)
François
30 nov. 2009 à 11:42
`win' undeclared (first use this function)
`int win(int)' used prior to declaration
30 nov. 2009 à 11:08
Petit source interessant et tres lisible :o).
J'aurai juste une petite remarque:
- pour tester qui a gagne, tu peux faire plus efficace avec un truc genre:
whoWin = tab[1]==tab[4]&&tab[4]==tab[7]?tab[7]:
tab[2]==tab[5]&&tab[5]==tab[8]?tab[8]:
.../...
tab[3]==tab[5]&&tab[5]==tab[7]?tab[7]:0;
Ca te renvoie 0, 'X' ou '0' au lieu de 0, 1 ou 2 mais tu fais deux fois moins de tests, et chaque test consiste en 2 et un && au lieux de 3 + et un (de plus, si le premier == est faux, le reste du test n'est pas effectue :o) )
Note qu'il manque un "0;" a la fin de ton test (a moins que ce ne soit un probleme d'affichage de cppfrance.com?). Je suis etonne que ca compile tel quel.
Eric