Bonjour !
Je suis en premier année en école d'ingénieur, et nous devons réaliser un morpion en langage C à l'aide du logiciel code blocks.
Mon programme semble fini, compile, mais ne marche pas !
Il s'arrête à différents endroits...
Que faire ?
Code://TP5-6 //24/11/2009 //Céline THIS //Programme : morpion #include <stdio.h> #include <stdlib.h> #define DIM 5 //---------------------------déclaration des types structurés------------------------ struct joueur {//définition de la structure contenant le nom et la marque de chaque joueur char nom[25]; char marque; }; typedef struct joueur s_joueur; struct cellule {//définition de la structure représentant chaque case du tableau, contenant 2 marques : case libre ou non, case piégée ou non int permutation;//si=1 : piège, si=0 : affichage de la marque du joueur int libre;//si=-1 : cellule libre }; typedef struct cellule s_cellule ; //---------------------------déclaration des sous-programmes----------------- void Affichage_grille (s_cellule tab[DIM][DIM],s_joueur tab_j[]); void Pose_pion (s_joueur tab_j[],s_cellule tab[DIM][DIM],int joueur, int permutation); int Verification_fin(int ligne,int colonne,s_cellule tab[DIM][DIM]); void Changement_joueur(int joueur,int resultat,int libre); //-----------------------------programme principal---------------------------- int main() { int cases_vides_restantes=25; int joueur=0; int libre; int alignement_par_colonne=0; int alignement_par_ligne=0; int permutation; int ligne,colonne; int resultat; s_joueur tab_j[2]; s_cellule grille[DIM][DIM]= {{{0,-1},{0,-1},{0,-1},{0,-1},{1,-1}}, {{0,-1},{0,-1},{0,-1},{0,-1},{0,-1}}, {{0,-1},{0,-1},{1,-1},{0,-1},{0,-1}}, {{0,-1},{0,-1},{0,-1},{0,-1},{0,-1}}, {{1,-1},{0,-1},{0,-1},{0,-1},{0,-1}}}; printf("BIENVENUE SUR LE MORPION PIEGE\n\n\nLE PREMIER QUI ALIGNE 3 PIONS HORIZONTALEMENT OU VERTICALEMENT A GAGNE !!!\n\n\nATTENTION : Certaines cases transformeront le pion joue en pion adverse.\n\n"); printf("Entrez le nom du joueur 1 : "); scanf("%s",tab_j[0].nom); printf("Entrez la marque du joueur 1 : "); scanf("%s",&tab_j[0].marque); printf("Entrez le nom du joueur 2 : "); scanf("%s",tab_j[1].nom); printf("Entrez la marque du joueur 2 : "); scanf("%s",&tab_j[1].marque); Affichage_grille (grille,tab_j); do { Pose_pion (tab_j,grille,joueur,permutation); printf("GNiark"); Affichage_grille (grille,tab_j); cases_vides_restantes--; printf("GNiark2"); Verification_fin(ligne,colonne,grille); printf("GNiark3"); Changement_joueur(joueur, resultat, libre); } while(resultat==0&&cases_vides_restantes!=0); return 0; } void Pose_pion (s_joueur tab_j[],s_cellule tab[DIM][DIM],int permutation, int joueur) { int ligne, colonne; int j; j=joueur; printf ("C'est a %s de jouer.\n", tab_j[j].nom); printf ("Entrer la ligne : "); scanf("%d",&ligne); ligne=ligne-1; printf("Entrer la colonne : "); scanf("%d",&colonne); colonne=colonne-1; if (permutation==0) printf("_%c_|",tab_j[j].marque); if (permutation==1) printf("_%c_|",tab_j[j+1].marque); } void Affichage_grille (s_cellule tab[DIM][DIM],s_joueur tab_j[]) { int ligne,colonne; for(ligne=0;ligne<DIM;ligne++) { printf("\n"); for(colonne=0;colonne<DIM;colonne++) {if(tab[ligne][colonne].libre==-1) {printf("_%c_|",tab_j[tab[ligne][colonne].libre].marque); } printf(" |"); } } printf("\n"); } int Verification_fin(int ligne,int colonne,s_cellule tab[DIM][DIM]) { int resultat=0; if ((tab[ligne-1][0].libre==tab[ligne-1][1].libre)&&(tab[ligne-1][1].libre==tab[ligne-1][2].libre)&&(tab[ligne-1][2].libre!=-1)) resultat=1; if ((tab[ligne-1][1].libre==tab[ligne-1][2].libre)&&(tab[ligne-1][2].libre==tab[ligne-1][3].libre)&&(tab[ligne-1][3].libre!=-1)) resultat=1; if ((tab[ligne-1][2].libre==tab[ligne-1][3].libre)&&(tab[ligne-1][3].libre==tab[ligne-1][4].libre)&&(tab[ligne-1][4].libre!=-1)) resultat=1; if ((tab[0][colonne-1].libre==tab[1][colonne-1].libre)&&(tab[1][colonne-1].libre==tab[2][colonne-1].libre)&&(tab[2][colonne-1].libre!=-1)) resultat=1; if ((tab[1][colonne-1].libre==tab[2][colonne-1].libre)&&(tab[2][colonne-1].libre==tab[3][colonne-1].libre)&&(tab[3][colonne-1].libre!=-1)) resultat=1; if ((tab[2][colonne-1].libre==tab[3][colonne-1].libre)&&(tab[3][colonne-1].libre==tab[4][colonne-1].libre)&&(tab[4][colonne-1].libre!=-1)) resultat=1; return resultat; } void Changement_joueur(int joueur,int resultat,int libre) { if (resultat==0&&libre==0) { if (joueur==0) joueur==1; else joueur==0; } }
-----