Probleme de syntaxe language c

Résolu
leo170390 -  
 leo170390 -
Bonjour, je suis désolé de vous déranger pour un chose si bête mais j'ai un problème de syntaxe dans mon code, à la fin de mon menu (switch).
Je suis débutant et j'ai donc un peu de mal avec le C.
Le message d'erreur est error: syntax error at the end of input
Mais si quelqun pouvait me dire ce qui me bloque ça serait super sympa!
merci ;)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
// Début du programme principal

int main()



{
//Déclaration des variables
int i,j,num;
int h1,h2,h3,h4,h5,h6,num1;
int jeu[6][6];
int gagne, gagne2;
int choix;
char nom1[20], nom2[20],rep,o;

//Tant que on veut jouer le programme se lance
do
{
//Initialisation de certaines variables
gagne=0;
gagne2=0;
h1=0;h2=0;h3=0;h4=0;h5=0;h6=0;

//Impression de la page de presentation:

printf("\n\n\n\n");
printf("\t\t********************************************\n");
printf("\t\t* *\n");
printf("\t\t* PUISSANCE 4 *\n");
printf("\t\t* par *\n");
printf("\t\t* Leopold Michaud *\n");
printf("\t\t* *\n");
printf("\t\t********************************************\n\n\n");

printf("menu: choisissez votre mode de jeu\n\n");
printf("1) Joueurs Humains\n");
printf("2) Joueur vs ordi\n");
do{


switch(choix)
{
case 1 ://Saisie des noms des deux joueurs:
printf("\n\n\n\tNom du premier joueur:\n");
scanf("%s",nom1);
printf("\n\n");
printf("\n\n\tNom du second joueur:\n");
scanf("%s",nom2);
printf("\n\n");

// Initialisation du tableau toutes les cases prennent la valeur 0
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{

jeu[i][j]=0;
}
}

//Affichage du plateau de jeu vide
printf("| 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|\n");
for(j=5;j>=0;j--)
{
for(i=0;i<6;i++)
{
printf("| ",jeu[i][j]);
}
printf("|\n");
printf("|---|---|---|---|---|---|\n");
}
printf("\n\n\n") ;


//Tant qu'un joueur n'a pas gagné le programme demande de jouer
do
{
//Le joueur 1 joue
do
{
printf("A vous de jouer %s, donner un numero de colonne (de 1 à 6):\n",nom1);
scanf("%d",&num);
printf("\n");

//Test sur la hauteur des colonnes, si elle sont remplies ou non
if((num==1 && h1>5) || (num==2 && h2>5) || (num==3 && h3>5) || (num==4 && h4>5) || (num==5 && h5>5) || (num==6 && h6>5))
{
printf("la colonne %d est pleine, %s donner un numero de colone autre que %d \n",num,nom1,num);
num = -1;
}
}while(num<1 || num>6);

//Donne la valeur 1 à la case jouée par le joueur 1

if(num==1)
jeu[num-1][h1]=1;
if(num==2)
jeu[num-1][h2]=1;
if(num==3)
jeu[num-1][h3]=1;
if(num==4)
jeu[num-1][h4]=1;
if(num==5)
jeu[num-1][h5]=1;
if(num==6)
jeu[num-1][h6]=1;
printf("\n");
//Vérification horizontale pour savoir si le joueur a gagné:on balaye toutes les lignes de 0 à 6 en vérifiant 4 cases à chaque foisSi 4 cases qui se suivent valent 1 alors gagne prend pour valeur 1
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
if(jeu[i][j]==1 && jeu[i+1][j]==1 && jeu[i+2][j]==1 && jeu[i+3][j]==1)
gagne=1;
}
}
//Même chose mais verticalement maintenant
for(i=0;i<6;i++)
{
for(j=0;j<3;j++)
{
if(jeu[i][j]==1 && jeu[i][j+1]==1 && jeu[i][j+2]==1 && jeu[i][j+3]==1)
gagne=1;
}
}

//Et diagonale bas gauche vers haut droit
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==1 && jeu[i+1][j+1]==1 && jeu[i+2][j+2]==1 && jeu[i+3][j+3]==1)
gagne=1;
}
}
//Même chose pour les diagonales bas droite vers haut gauche
for(j=0;j<6;j++)
{
for(i=6;i>=0;i--)
{
if(jeu[i][j]==1 && jeu[i-1][j+1]==1 && jeu[i-2][j+2]==1 && jeu[i-3][j+3]==1)
gagne=1;
}
}

// Affichage de la grille
printf("| 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|\n");
for(j=5;j>=0;j--)
{
for(i=0;i<6;i++)
{
printf("| %d ",jeu[i][j]);
}
printf("|\n");
printf("|---|---|---|---|---|---|\n");
}

// On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:
if(num==1)
jeu[num][h1++];
if(num==2)
jeu[num][h2++];
if(num==3)
jeu[num][h3++];
if(num==4)
jeu[num][h4++];
if(num==5)
jeu[num][h5++];
if(num==6)
jeu[num][h6++];

//Test pour savoir si le joueur 1 a gagné, si c'est le cas alors arret de la boucle
if(gagne==1)
{
printf("%s gagne\n\n\n\n",nom1);
break;
}


//On recommence pour le joueur 2
do
{
printf("A vous de jouer %s, donner un numero de colonne (de 1 à 6):\n",nom2);
scanf("%d",&num1);
printf("\n");

if((num1==1 && h1>5) || (num1==2 && h2>5) || (num1==3 && h3>5) || (num1==4 && h4>5) || (num1==5 && h5>5) || (num1==6 && h6>5))
{
printf("la colonne %d est pleine, %s donner un numero de colone autre que %d \n",num1,nom2,num1);
num1 = -1;
}
}while(num1<1 || num1>6);

if(num1==1)
jeu[num1-1][h1]=2;
if(num1==2)
jeu[num1-1][h2]=2;
if(num1==3)
jeu[num1-1][h3]=2;
if(num1==4)
jeu[num1-1][h4]=2;
if(num1==5)
jeu[num1-1][h5]=2;
if(num1==6)
jeu[num1-1][h6]=2;
printf("\n");


for(i=0;i<4;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==2 && jeu[i+1][j]==2 && jeu[i+2][j]==2 && jeu[i+3][j]==2)
gagne=2;
}
}
for(i=0;i<6;i++)
{
for(j=0;j<3;j++)
{
if(jeu[i][j]==2 && jeu[i][j+1]==2 && jeu[i][j+2]==2 && jeu[i][j+3]==2)
gagne=2;
}
}

for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==2 && jeu[i+1][j+1]==2 && jeu[i+2][j+2]==2 && jeu[i+3][j+3]==2)
gagne=2;
}
}

for(j=0;j<6;j++)
{
for(i=5;i>=0;i--)
{
if(jeu[i][j]==2 && jeu[i-1][j+1]==2 && jeu[i-2][j+2]==2 && jeu[i-3][j+3]==2)
gagne=2;
}
}
printf("| 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|\n");
for(j=5;j>=0;j--)
{
for(i=0;i<6;i++)
{
printf("| %d ",jeu[i][j]);
}
printf("|\n");
printf("|---|---|---|---|---|---|\n");
}
if(num1==1)
jeu[num1][h1++];
if(num1==2)
jeu[num1][h2++];
if(num1==3)
jeu[num1][h3++];
if(num1==4)
jeu[num1][h4++];
if(num1==5)
jeu[num1][h5++];
if(num1==6)
jeu[num1][h6++];


if(gagne==2)
{
printf("%s gagne!!!\n\n\n\n",nom2);
break;
}




} while(gagne!=1 || gagne2!=2);
printf("voulez vous refaire une partie ? ('o' ou 'n')\n");
scanf("%s",&rep);
printf("\n\n\n\n");

break ;


case 2:
{
int alea ;
srand ( time(NULL) );
alea = rand() % 6 ;
//Saisie des noms des deux joueurs:
printf("\n\n\n\tNom du premier joueur:\n");
scanf("%s",nom1);
printf("\n\n");

// Initialisation du tableau toutes les cases prennent la valeur 0
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{

jeu[i][j]=0;
}
}

//Affichage du plateau de jeu vide
printf("| 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|\n");
for(j=5;j>=0;j--)
{
for(i=0;i<6;i++)
{
printf("| ",jeu[i][j]);
}
printf("|\n");
printf("|---|---|---|---|---|---|\n");
}
printf("\n\n\n") ;


//Tant qu'un joueur n'a pas gagné le programme demande de jouer
do
{
//Le joueur 1 joue
do
{
printf("A vous de jouer %s, donner un numero de colonne (de 1 à 6):\n",nom1);
scanf("%d",&num);
printf("\n");

//Test sur la hauteur des colonnes, si elle sont remplies ou non
if((num==1 && h1>5) || (num==2 && h2>5) || (num==3 && h3>5) || (num==4 && h4>5) || (num==5 && h5>5) || (num==6 && h6>5))
{
printf("la colonne %d est pleine, %s donner un numero de colone autre que %d \n",num,nom1,num);
num = -1;
}
}while(num<1 || num>6);

//Donne la valeur 1 à la case jouée par le joueur 1

if(num==1)
jeu[num-1][h1]=1;
if(num==2)
jeu[num-1][h2]=1;
if(num==3)
jeu[num-1][h3]=1;
if(num==4)
jeu[num-1][h4]=1;
if(num==5)
jeu[num-1][h5]=1;
if(num==6)
jeu[num-1][h6]=1;
printf("\n");
//Vérification horizontale pour savoir si le joueur a gagné:on balaye toutes les lignes de 0 à 6 en vérifiant 4 cases à chaque foisSi 4 cases qui se suivent valent 1 alors gagne prend pour valeur 1
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
if(jeu[i][j]==1 && jeu[i+1][j]==1 && jeu[i+2][j]==1 && jeu[i+3][j]==1)
gagne=1;
}
}
//Même chose mais verticalement maintenant
for(i=0;i<6;i++)
{
for(j=0;j<3;j++)
{
if(jeu[i][j]==1 && jeu[i][j+1]==1 && jeu[i][j+2]==1 && jeu[i][j+3]==1)
gagne=1;
}
}

//Et diagonale bas gauche vers haut droit
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==1 && jeu[i+1][j+1]==1 && jeu[i+2][j+2]==1 && jeu[i+3][j+3]==1)
gagne=1;
}
}
//Même chose pour les diagonales bas droite vers haut gauche
for(j=0;j<6;j++)
{
for(i=6;i>=0;i--)
{
if(jeu[i][j]==1 && jeu[i-1][j+1]==1 && jeu[i-2][j+2]==1 && jeu[i-3][j+3]==1)
gagne=1;
}
}

// Affichage de la grille
printf("| 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|\n");
for(j=5;j>=0;j--)
{
for(i=0;i<6;i++)
{
printf("| %d ",jeu[i][j]);
}
printf("|\n");
printf("|---|---|---|---|---|---|\n");
}

// On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:
if(num==1)
jeu[num][h1++];
if(num==2)
jeu[num][h2++];
if(num==3)
jeu[num][h3++];
if(num==4)
jeu[num][h4++];
if(num==5)
jeu[num][h5++];
if(num==6)
jeu[num][h6++];

//Test pour savoir si le joueur 1 a gagné, si c'est le cas alors arret de la boucle
if(gagne==1)
{
printf("%s gagne\n\n\n\n",nom1);
break;
}


//On recommence pour le joueur 2
do
{
scanf("%d",&alea);
printf("\n");

if((num1==1 && h1>5) || (num1==2 && h2>5) || (num1==3 && h3>5) || (num1==4 && h4>5) || (num1==5 && h5>5) || (num1==6 && h6>5))
{
printf("la colonne %d est pleine, %s donner un numero de colone autre que %d \n",num1,nom2,num1);
num1 = -1;
}
}while(num1<1 || num1>6);

if(num1==1)
jeu[num1-1][h1]=2;
if(num1==2)
jeu[num1-1][h2]=2;
if(num1==3)
jeu[num1-1][h3]=2;
if(num1==4)
jeu[num1-1][h4]=2;
if(num1==5)
jeu[num1-1][h5]=2;
if(num1==6)
jeu[num1-1][h6]=2;
printf("\n");


for(i=0;i<4;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==2 && jeu[i+1][j]==2 && jeu[i+2][j]==2 && jeu[i+3][j]==2)
gagne=2;
}
}
for(i=0;i<6;i++)
{
for(j=0;j<3;j++)
{
if(jeu[i][j]==2 && jeu[i][j+1]==2 && jeu[i][j+2]==2 && jeu[i][j+3]==2)
gagne=2;
}
}

for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
{
if(jeu[i][j]==2 && jeu[i+1][j+1]==2 && jeu[i+2][j+2]==2 && jeu[i+3][j+3]==2)
gagne=2;
}
}

for(j=0;j<6;j++)
{
for(i=5;i>=0;i--)
{
if(jeu[i][j]==2 && jeu[i-1][j+1]==2 && jeu[i-2][j+2]==2 && jeu[i-3][j+3]==2)
gagne=2;
}
}
printf("| 1 | 2 | 3 | 4 | 5 | 6 |\n");
printf("|---|---|---|---|---|---|\n");
for(j=5;j>=0;j--)
{
for(i=0;i<6;i++)
{
printf("| %d ",jeu[i][j]);
}
printf("|\n");
printf("|---|---|---|---|---|---|\n");
}
if(num1==1)
jeu[num1][h1++];
if(num1==2)
jeu[num1][h2++];
if(num1==3)
jeu[num1][h3++];
if(num1==4)
jeu[num1][h4++];
if(num1==5)
jeu[num1][h5++];
if(num1==6)
jeu[num1][h6++];


if(gagne==2)
{
printf("vous avez perdu!");
break;
}




} while(gagne!=1 || gagne2!=2);
printf("voulez vous refaire une partie ? ('o' ou 'n')\n");
scanf("%s",&rep);
printf("\n\n\n\n");

break ;
}
}

3 réponses

mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
cet erreur c'est souvent en rapport avec les accolades tu devrais chercher par là verifie que tu en as pas oublié...
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Tu as oublié d'écrire le while correspondant à ton do (celui qui englobe le switch).
Sinon j'ai survolé vraiment vite le code et j'ai vu :jeu[num1][h1++];
Ne voudrais-tu pas plutôt faire : jeu[num1][h1]++; ou alors simplement h1++
Car l'instruction comme tu as mis, est équivalente à h1++. Ou alors il faut récupérer la sortie.

Cdlt
0
leo170390
 
effectivement c'était ça!
je te remercie pour ton aide! je vais voir pour l'histoire des h1++, pour l'instant j'improvise l'AI, qui ne marche pas non plus...
0