Index du forum / Informatique / Puissance 4


Page : 1

Puissance 4

Répondre Nouveau topic
Auteurs Messages
AntoineR Posté à 15h24 le 17 May 09

Membre inscrit le 17/05/2009
Messages : 1
Localisation :
Je dois faire un puissance 4 et je suis un gros newbie donc voici mon code :
[code=c]
#include<stdio.h>
#include<stdbool.h>
#define LIGNE 6
#define COLONNE 7
#define J1 'x'
#define J2 'o'
#define VIDE ' '
typedef char Grille[LIGNE][COLONNE];

/*Affichage du tableau*/

void initialiser(Grille maGrille){
int i=0;
int j=0;
while(j<COLONNE){
i=0;
while(i<LIGNE){
maGrille[i][j]=VIDE;
i++;
}
j++;
}
}

void afficherGrille (Grille maGrille){
int i=0;
int j=0;

while(i<LIGNE){
while(j<COLONNE){
printf("|%c", maGrille[i][j]);
j++;
}
j=0;
printf("| \n");
i++;
}
}

bool verifierRegle( int choix_joueur ){
int i=6;
bool plein=true;
Grille maGrille;

while(plein==true && i!=0){
if(maGrille[i][choix_joueur]==VIDE){
plein=false;
}
i=i-1;
}
return(plein);
}


void appliquerGravite( int choixJoueur, Grille maGrille, char j ){
int i=6;
int ligne;

while(i!=0){
if(maGrille[i][choixJoueur]==J1 || maGrille[i][choixJoueur]==J2){
i=i-1;
}
else{
maGrille[i][choixJoueur]=j;
i=0;
}
}
}


int main (void){
Grille monTab;
int col;
bool gagnant=false;

initialiser(monTab);
afficherGrille(monTab);
while(gagnant==false){
printf("choisissez une colonne \n");
scanf("%d", &col);
while(col>=COLONNE){
printf("la colonne %d n'existe pas, donnez en une autre", &col);
scanf("%d", &col);
}
verifierRegle(col);
appliquerGravite(col, monTab, J1);
afficherGrille(monTab);
return(0);

}[/code]

donc j'aimerais bien avoir mes X et mes O qui s'affichent quand le joueur joue
et puis dans la mesure du possible savoir comment faire pour changer de joueur...
Merci d'avance

La signature est limitée à 200 caractères
Petipo Posté à 00h44 le 18 May 09

Membre inscrit le 04/05/2008
Messages : 9
Localisation : Dans mon T-shirt.
Voici une version de ton code améliorée et qui marche. Pas terminée et je posterai les explications plus tard. Bonne chance.
#include<stdio.h>
#include<stdbool.h>
#define LIGNE 6
#define COLONNE 7
#define J1 'x'
#define J2 'o'
#define VIDE ' '
typedef char Grille[LIGNE][COLONNE];

/*Affichage du tableau*/

void initialiser(Grille maGrille)
{
int i=0;
int j=0;
while(j<COLONNE)
{
i=0;
while(i<LIGNE)
{
maGrille[i][j]=VIDE;
i++;
}
j++;
}
}

void afficherGrille (Grille maGrille)
{
int i=0;
int j=0;

while(i<LIGNE){
while(j<COLONNE)
{
printf("|%c",maGrille[i][j]);
j++;
}
j=0;
printf("| \n");
i++;
}
}

bool verifierRegle( Grille maGrille, int choix_joueur )
{
int i=6;
bool plein=true;


while (plein==true && i!=0)
{

if (maGrille[i][choix_joueur]==VIDE)
{

plein=false;
}
i=i-1;
}
return plein;
}
int Verifcol ( Grille jeu ,int c, char joueur )
{
int i=0;
int comp=0;

while (i<6 && comp<4)
{
if (jeu [i][c]==joueur)
{
comp++;
}
else
{
comp=0;
}
i++;
}
if (comp==4){return true;}
else {return false;}
}



bool Verifligne (Grille jeu, int l, char joueur)
{
int i=0;
int comp=0;

while (i<7 && comp<4)
{
if (jeu [l][i]==joueur)
{
comp++;
}
else
{
comp=0;
}
i++;
}
if (comp==4){return true;}
else {return false;}
}

bool Verifdiago (Grille jeu, int l, int c, char joueur)
{
/* à compléter */
return false;
}

bool Verifier ( Grille jeu , char j, int c, int l)
{
bool p4=false;
int joueur=j;
if (Verifcol(jeu, c, joueur) || Verifligne(jeu, l, joueur) || Verifdiago(jeu, l, c, joueur) ){p4=true;}
return p4;
}

int appliquerGravite( int choixJoueur, Grille maGrille, char j )
{
int i=5;
int ligne;
choixJoueur--;
bool ok= true;

while(i>=0 && ok)
{
if(maGrille[i][choixJoueur]==VIDE)
{
maGrille[i][choixJoueur]=j;
ok=false;
}

else
i--;
}
return i; /*on retourne la ligne à laquelle a été ajouté le pion */
}

char Changejoueur ( char j )
{
if (j=='x') return 'o';
else return 'x';
}


int main (void)
{
Grille monTab;
int col;
char joueur='o';
bool gagnant=false;
int ligne;
initialiser(monTab);
afficherGrille(monTab);
while(gagnant==false)
{
joueur=Changejoueur(joueur);
printf("Choisissez une colonne \n");
scanf("%d", &col);
while(col>=COLONNE && col<1)
{
printf("\n La colonne %d n'existe pas, donnez en une autre", col);
scanf("%d", &col);
}

if (!verifierRegle(monTab, col)) /* Si la colonne n'est pas pleine on joue */
ligne=appliquerGravite(col, monTab, joueur);/*En plus de placer le pion à la bonne ligne, on récupère celle-ci. */
else /* sinon on affiche un msg d'erreur et on change le joueur pour que lorsqu'il sera rechangé en début de boucle il soit en fait toujours le même */
{
printf ("Colonne pleine \n");
joueur=Changejoueur(joueur);
}
afficherGrille ( monTab );
gagnant=Verifier (monTab, joueur, col, ligne); /* vérification du jeu pour voir si l'on a gagné. ( appelle Verifligne, Verifcol et Verifdiago ) */

}
printf ("Gagné !");
return 0;
}


Les blagues les plus courtes sont souvent les moins longues.

Page : 1