Accueil > Forum > > > > pb avec un code
pb avec un code
samedi 20 août 2005 à 16:08:42 |
pb avec un code

Saros
|
J'ai un problème de compilation dans un code et je n'arrive pas du tout à savoir d'où ça vient 
le fichier source en question peut être téléchargé à partir de :
[ Lien ]
Il s'agit d'un morpion avec IA (IA pour le morpion ça sonne bizarre mais bon c'est ce qu'il y a de plus simple à coder)
J'ai essayé de compiler avec Dev-Cpp, VC++6 et VC++7 sans aucun résultat
Merci d'avance
Saros
|
|
samedi 20 août 2005 à 16:10:02 |
Re : pb avec un code
|
samedi 20 août 2005 à 21:10:40 |
Re : pb avec un code

Saros
|
#include <stdlib.h>
#include <iostream>
using namespace std;
bool won(int);
int refl(void);
int refl_c(int, int,int);
int ev_pos(int);
int ev_ply(int);
void affiche_plateau(void);
void list_mat(const int, int, int);
void mat_list(int, int, const int);
char signe[3] = {' ','X', 'O'};
int plateau[3][3] = {{0, 0, 0},{0, 0, 0},{0, 0, 0}};
int jr_en_cours; // appartient à {1, 2}
bool won(int jr){
if(plateau[1][1]==jr && plateau[1][2]==jr && plateau[1][3]==jr) return true;
if(plateau[1][1]==jr && plateau[2][2]==jr && plateau[3][3]==jr) return true;
if(plateau[1][1]==jr && plateau[2][1]==jr && plateau[3][1]==jr) return true;
if(plateau[2][1]==jr && plateau[2][2]==jr && plateau[2][3]==jr) return true;
if(plateau[3][1]==jr && plateau[3][2]==jr && plateau[3][3]==jr) return true;
if(plateau[3][1]==jr && plateau[2][2]==jr && plateau[1][3]==jr) return true;
if(plateau[3][2]==jr && plateau[2][2]==jr && plateau[1][2]==jr) return true;
if(plateau[1][3]==jr && plateau[2][3]==jr && plateau[3][3]==jr) return true;
// vérifie toutes les position une par une
// je sais, c'est bourin, mais ça marche et c'est rapide xD
return false;
}
int refl(void){
int estimation;
int pn;
int val;
int pn_ret;
estimation = -10000;
for(pn = 0 ; pn<9 ; pn++){
int cl,lg;
list_mat(pn, cl, lg);
if(plateau[cl][lg]==0){
plateau[cl][lg] = jr_en_cours;
if(won(jr_en_cours)){
plateau[cl][lg] = 0;
return 10000; // pion gagnant : on saute dessus
}
val = -refl_c(3-jr_en_cours,2,-estimation);
if(val>estimation){
estimation = val;
pn_ret=pn;
}
plateau[cl][lg] = 0;
}
}
return pn_ret;
}
int refl_c(int jr, int prof, int alpha){
bool pas_de_pion = true;
int rtr = -10000;
int pn;
int val;
for(pn=0 ; pn<9 ; pn++){
int cl,lg;
list_mat(pn, cl, lg);
if(plateau[cl][lg]==0){
plateau[cl][lg] = jr;
if(won(jr)){
plateau[cl][lg] = 0;
return 100000;
}
if(prof<=0){
val = ev_pos(jr);
pas_de_pion = false;
}else{
val = -refl_c(3-jr, prof-1, -rtr);
}
plateau[cl][lg] = 0;
if(val>rtr) rtr = val;
if(rtr >= alpha){
return rtr;
}
}
}
if(pas_de_pion){
ev_pos(jr);
}
}
int ev_pos(int jr){
return ev_ply(jr) - ev_ply(3-jr);
}
int ev_ply(int jr){
int ggt[8];
int i;
int ret = 0;
for(i=0 ; i<8 ; i++) ggt[i]=0;
if(plateau[0][0]==jr){
ggt[0]++;
ggt[3]++;
ggt[7]++;
}else if(plateau[0][0]==0){
ggt[0]+=10;
ggt[3]+=10;
ggt[7]+=10;
}
if(plateau[0][1]==jr){
ggt[0]++;
ggt[4]++;
}else if(plateau[0][1]==0){
ggt[0]+=10;
ggt[4]+=10;
}
if(plateau[0][2]==jr){
ggt[0]++;
ggt[1]++;
ggt[5]++;
}else if(plateau[0][2]==0){
ggt[0]+=10;
ggt[1]+=10;
ggt[5]+=10;
}
if(plateau[1][0]==jr){
ggt[3]++;
ggt[6]++;
}else if(plateau[1][0]==0){
ggt[3]+=10;
ggt[6]+=10;
}
if(plateau[1][1]==jr){
ggt[4]++;
ggt[5]++;
ggt[6]++;
ggt[7]++;
}else if(plateau[1][1]==0){
ggt[4]+=10;
ggt[5]+=10;
ggt[6]+=10;
ggt[7]+=10;
}
if(plateau[1][2]==jr){
ggt[1]++;
ggt[6]++;
}else if(plateau[1][2]==0){
ggt[1]+=10;
ggt[6]+=10;
}
if(plateau[2][0]==jr){
ggt[2]++;
ggt[3]++;
ggt[5]++;
}else if(plateau[2][0]==0){
ggt[2]+=10;
ggt[3]+=10;
ggt[5]+=10;
}
if(plateau[2][1]==jr){
ggt[2]++;
ggt[4]++;
}else if(plateau[2][1]==0){
ggt[2]+=10;
ggt[4]+=10;
}
if(plateau[2][2]==jr){
ggt[1]++;
ggt[2]++;
ggt[7]++;
}else if(plateau[2][2]==0){
ggt[1]+=10;
ggt[2]+=10;
ggt[7]+=10;
}
if(plateau[1][1]==jr) ret++; // favoriser la pos centrale
for(i=0 ; i<8 ; i++){
if(ggt[i]==12) ret+=5;
}
return ret;
}
void list_mat(const int a, int b, int c){
b = a%3;
c = (int)(a/3);
}
void mat_list(const int a, const int b, int c){
c = b*3 + a;
}
void affiche_plateau(void){
printf("+-+-+-+\n");
for(int j=0 ; j<3 ; j++){
printf("+");
for(int k=0 ; k<3 ; k++){
printf("%c+",signe[plateau[k][j]]);
}
printf("\n");
}
printf("+-+-+-+\n");
}
int main(int argc, char *argv[])
{
jr_en_cours = 1;
int i;
for(i=0 ; i<9 ; i++){
system("cls");
affiche_plateau();
int x,y;
if(jr_en_cours==1){
printf("A vous de jouer :");
char key;
int pos;
printf("+-+-+-+\n+A+Z+E+\n+Q+S+D+\n+W+X+C+\n+-+-+-+\n\n");
key = 0;
pos = 0;
while(true)
scanf("%c",&key);
if(key=='A' ||
key=='Z' ||
key=='E' ||
key=='Q' ||
key=='S' ||
key=='D' ||
key=='W' ||
key=='X' ||
key=='C') {
switch(key){
case 'A':
pos=0;
break;
case 'Z':
pos=1;
break;
case 'E':
pos=2;
break;
case 'Q':
pos=3;
break;
case 'S':
pos=4;
break;
case 'D':
pos=5;
break;
case 'W':
pos=6;
break;
case 'X':
pos=7;
break;
case 'C':
pos=8;
break;
}
list_mat(pos, x, y);
if(plateau[x][y]==0) break;
} // pour le if d'en haut - vérification de key
} // fin du while - la case a été choisié, vérifiée
plateau[x][y] = signe[jr_en_cours];
} else { // On traite l'intelligence artificielle ici
printf("Reflexion en cours...\n");
int pos;
pos = refl();
int x,y;
list_mat(pos, x, y);
plateau[x][y] = signe[jr_en_cours];
}
if(won(jr_en_cours)==true){
system("cls");
affiche_plateau();
printf("Joueur %d (%c) gagne\n\n", jr_en_cours, signe[jr_en_cours]);
system("pause");
return 0;
}
} // fin du for - un jr a gagné (>break;) ou bien nul (i=9);
system("cls");
affiche_plateau();
printf("Match nul\n\n");
system("pause");
return 0;
}
|
|
samedi 20 août 2005 à 21:24:59 |
Re : pb avec un code
|
samedi 20 août 2005 à 22:08:07 |
Re : pb avec un code

steve_clamage
|
Réponse acceptée !
ligne 221, rajoutes une accolade ouvrante ( { ) apres while(true) et ca compilera. J'ai rarement vu un code aussi crade, il n'y a au mieux que l'algo à retenir.
|
|
samedi 20 août 2005 à 22:17:52 |
Re : pb avec un code

Saros
|
Je l'ai recopié de ma TI à la rache, je nettoierai et commenterai plus tard En fait à la base c'est un code VB, j'ai transcrit en turbo pascal pour TI, puis en C++ J'ai pris l'algorithme de quelqu'un (je dirai tout ça quand je posterai - si j'arrive à le faire marcher) Merci bien en tout cas... une aprem sur une accolade 
Saros
|
|
Cette discussion est classée dans : pb, code, vc, morpion, ia
Répondre à ce message
Sujets en rapport avec ce message
VC++ Pb affichage caractères accentués à partir du code ASCII [ par mllaline ]
Je souhaite afficher l'ensemble des 256 caractères de la table ASCII dans un Textearea (VC++). (présenté comme ça, ça n'a peu d'intérêt. Le but est ju
Pb avec VC [ par kokoariko ]
Lus',1/Sous Visual C++, j'ai créé différents contrôles (CListBox, CProgressBar, CStatic ...) sur une fenêtre Dialog, grace à MFC ClassWizard.Tout se p
pb avec nMaxFile dans CFileDialog vc++ [ par pichu ]
Dans une CFileDialog on est limité dans le nombre de selection si on en selectionne plusieursle pb est que je veux etre illimite dans le nombreComment
Pb execution sous VC++ 6.0 [ par Galmiza ]
Salut,Je suis confronté à un problème curieux (enfin, curieux pour moi du moins):J'ai fait un programme qui se compile parfairtement en Release et en
utiliser un code c dans une solution VC++ 7 [ par romzaide ]
Bjour, j'ai une solution VC++ qui explore un répertoire et et j'utilise le noms des différents fichiers trouvés pour calculer leurs hash edonkey (MD4
optimiser un code en C [ par serom00 ]
Bonjour,Je cherche a optimiser mon code C.J'utilse VC++7Mais je me pose pleins de questions:Tout d'abord je voudrai savoir si quelqu'un connaitrai un
[VC++6] problème de police [ par neogeocortex ]
alors voila, j'arrive facilement à changer la police de caractère d'une editbox, seulement quand la police est complète ( quand tout les caracères son
pb connexion socket [ par skyman272 ]
BonjourJ'essaye de faire marcher le programme source qui est sur ce site : http://www.cppfrance.com/code.aspx?ID=29687Je lance le serveur principal et
besoin d'un code source en VC++ [ par amina_6a ]
salut ,moi j 'ai pas vraiment un probleme ,mais j 'ai besoin d'un code source pour une application qui permet la communication avec les peripheriques
Pb de boite de dialogue [ par mrous ]
Bonjour,j'ai un petit problème avec une boite de dialogue:cette boite de dialogue ne contient qu'une progressbar, et j'execute mon code des son affich
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|