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
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
ERREUR DE POINTEURERREUR DE POINTEUR par africanwinners
Cliquez pour lire la suite par africanwinners CLISTCTRLCLISTCTRL par dorras7
Cliquez pour lire la suite par dorras7
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|