Salut
Voila, je suis étudiant en Mesures Physiques à toulouse et j'ai un projet informatique sur le puissance 4 en C à rendre pour mercredi 13 juin. J'ai un niveau trés trés faible en C (j'ai raté pas mal de cours :/ ) mais j'ai deja un ptit programme de fait, avec l'aides des potes et du net (surtout :) ) mais j'aimerai changer quelques petites choses, à savoir :
- jouer avec les colonnes numerotées de 1 à 8
- n'avoir rien dans le tableau au lieu des 0
- avoir des X et O qui s'affiche quand on joue, plutôt que des 1 et 2...
Voila, j' arrive pas à faire sa, sa plante à chaque fois... Je sais plus trop comment faire et si quelqu'un pouvait m'éclairer sa serai cool. Merci d'avance, voila le programme :
{
/*Déclaration des variables */
int i,j,num;
int h0,h1,h2,h3,h4,h5,h6,num1;
int jeu[7][6];
int gagne, gagne2;
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;
h0=0;h1=0;h2=0;h3=0;h4=0;h5=0;h6=0;
/*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 deuxieme joueur:\n");
scanf("%s",nom2);
printf("\n\n");
/* Initialisation du tableau toutes les cases prennent la valeur 0*/
for(i=0;i<7;i++)
{
for(j=0;j<6;j++)
{
/*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 0 à 6):\n",nom1);
scanf("%d",&num);
printf("\n");
/*Test sur la hauteur des colonnes, si elle sont remplies ou non*/
if((num==0 && h0>5)|| (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<0 || num>6);
/*Donne la valeur 1 à la case jouée par le joueur 1*/
if(num==0)
jeu[num][h0]=1;
if(num==1)
jeu[num][h1]=1;
if(num==2)
jeu[num][h2]=1;
if(num==3)
jeu[num][h3]=1;
if(num==4)
jeu[num][h4]=1;
if(num==5)
jeu[num][h5]=1;
if(num==6)
jeu[num][h6]=1;
/*Vérification horizontale pour savoir si le joueur a gagné:
on balaye toutes les lignes de 0 à 6 en vérifiant 4 cases à chaque fois
Si 4 cases qui se suivent valent 1 alors gagne prend pour valeur 1*/
for(i=0;i<4;i++)
{
for(j=0;j<6;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<7;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<7;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==0)
jeu[num][h0++];
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 a gagne!!!\n bravo!!!\n",nom1);
break;
}
/*On recommence pour le joueur 2*/
do
{
printf("A vous de jouer %s, donner un numero de colonne (de 0 à 6):\n",nom2);
scanf("%d",&num1);
printf("\n");
if((num1==0 && h0>5)|| (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<0 || num1>6);
Post ton code dans les balises code ;)
Je regarderai ça durant la semaine
__________________________
............ Curtis: RTS 3D .............. ......
........... TeamMoteurProg...........
Donc il n'y a forcément que des entiers dans ton tableau.
Si tu souhaites pouvoir avoir autre chose qu'un entier, par exemple un caractère qui serrait l'espace ' ' ou un chiffre, tu peux le déclarer comme étant un tableau de char (caractères):
char jeu[7][6];
Si tu souhaites afficher des X et des O à la place des nombres, soit tu fais la première méthode décrite ci-dessus et tu mets des 'X' et des 'O' à la place des nombres, soit tu continues à utiliser ton tableau d'entiers mais tu testes tes valeurs avant de les afficher :
rainbow, il dit qu'il en a besoin pour mercredi, il a des questions précises, ça sert à rien que tu lui dises que tu le regarderas durant la semaine, ça lui fait une belle jambe, il en a besoin maintenant.
A sa place comment tu réagirais ? Perso, je n'aurrais pas été patient et je me serais fait bannir par un modo.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu].
Autant pour moi, je n'avais pas vu la date Cependant ...
Pac dit : rainbow, il dit qu'il en a besoin pour mercredi, il a des questions précises, ça sert à rien que tu lui dises que tu le regarderas durant la semaine, ça lui fait une belle jambe, il en a besoin maintenant.
Le lundi et mardi font encore jusqu'à présent partie de la semaine.
aucun dit : A sa place comment tu réagirais ? Perso, je n'aurrais pas été patient et je me serais fait bannir par un modo.
A partir du moment où on pose une question, on attend la réponse nan ? Pour l'avoir dans les temps, on la pose avant ou on se met à la merci de la vitesse de réponse des membres.
De simples remarques que j'espère que tu prendras bien même si je suis complètement coupable sur ce coup ...
__________________________
............ Curtis: RTS 3D .............. ......
........... TeamMoteurProg...........