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;
}
}
// 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);
} 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;
}
}
// 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);
fiddy
Messages postés11069Date d'inscriptionsamedi 5 mai 2007StatutContributeurDernière intervention23 avril 20221 842 10 déc. 2008 à 23:35
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.
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...