JEU PUISSANCE IV

uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011 - 18 janv. 2010 à 13:28
ElendilAranwe Messages postés 10 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 27 avril 2010 - 28 janv. 2010 à 20:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51130-jeu-puissance-iv

ElendilAranwe Messages postés 10 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 27 avril 2010
28 janv. 2010 à 20:38
merci beaucoup ;)
deloju Messages postés 2 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 22 janvier 2010
22 janv. 2010 à 00:31
dsl l'editeur a super mal indenté le code
code correct ici
http://www.megaupload.com/?d=IGJWTDBL
deloju Messages postés 2 Date d'inscription jeudi 14 janvier 2010 Statut Membre Dernière intervention 22 janvier 2010
22 janv. 2010 à 00:26
Voilà j'ai refait l'indentation et ajouté quelques notes vers la fin elles peuvent être intéressantes et utiles.
sinon bien fait qd même ;-) bravo

/*******************************************************************************
*************************** PUISSANCE 4 ****************************************
*******************************************************************************/

/* Consignes pré-processeurs */
#include <stdio.h>
#include <stdlib.h>
#include
#include <time.h>

/* Prototype des fonctions */
void initialisertabJeu( char tabJeu[8][8] );
void demandeJetonetverif( int* jetonJoueur , char tabJeu[8][8] );
int verificationPlacement( int jetonJoueur , char tabJeu[8][8] );
void placerJetonJoueur( int jetonJoueur , char tabJeu[8][8] );
int verificationVictoire( char tabJeu[8][8] );
int verificationVictoire2Joueurs( char tabJeu[8][8] );
void affichertabJeu( char tabJeu[8][8] );
void creationJetonetverif( int* jetonIA , char tabJeu[8][8] );
void placerJetonIA( int jetonIA , char tabJeu[8][8] );
void wait ( int seconds );
int random(int max);

/* Variables Globales */
bool aQui;

/**************** MAIN ****************/
void main( )
{
int test;
char tabJeu[8][8];
int jetonJoueur = 0;
int jetonJoueur2 = 0;
int jetonIA = 0;
int verif = 0;
int victoire = 0;
int mode;
printf( "Mode de jeu disponible:\n**********************\n");
printf( " 1 -> Joueur VS Ordi\n 2 -> Joueur VS Joueur\n");

do
{
printf("\nMode De Jeu : ");
fflush(stdin);
test=scanf( "%d" , &mode );
}while(test==0||(mode!=1&&mode!=2));

/*******************/
/** MODE 1 JOUEUR **/
/*******************/

if( mode == 1 )
{

aQui = true;

initialisertabJeu( tabJeu );

affichertabJeu( tabJeu );

/*************** Joueur ****************************/

while( victoire != 1 )
{

demandeJetonetverif( &jetonJoueur , tabJeu );

placerJetonJoueur( jetonJoueur , tabJeu );

affichertabJeu( tabJeu );

verif = verificationVictoire( tabJeu );

if( verif == 0 )
{
printf( " VICTOIRE DE L'IA \r\n\r\n " );
system( "pause" );
victoire = 1;
}

else if( verif == 1 )
{
printf( " VICTOIRE /clap /clap ^^ \r\n\r\n" );
system( "pause" );
victoire = 1;
}

/** IA **/

if( victoire != 1 )
{

creationJetonetverif( &jetonIA , tabJeu );

placerJetonIA( jetonIA , tabJeu );

affichertabJeu( tabJeu );

verif = verificationVictoire( tabJeu );

if( verif == 0 )
{
printf( " VICTOIRE DE L'IA \r\n\r\n " );
system("pause");
victoire = 1;
}
else if( verif == 1 )
{
printf( " VICTOIRE /clap /clap ^^ \r\n\r\n" );
system("pause");
victoire = 1;
}

}
}
}

/********************/
/** MODE 2 JOUEURS **/
/********************/

else /* mode == 2 */
{
initialisertabJeu( tabJeu );

affichertabJeu( tabJeu );

/*************/
/** Joueur1 **/
/*************/

while( victoire != 1 )
{

aQui = true;

demandeJetonetverif( &jetonJoueur , tabJeu );

placerJetonJoueur( jetonJoueur , tabJeu );

affichertabJeu( tabJeu );

verif = verificationVictoire2Joueurs( tabJeu );

if( verif == 0 )
{
printf( " VICTOIRE DU JOUEUR2 /clap /clap ^^ \r\n\r\n " );
system( "pause" );
victoire = 1;
}

else if( verif == 1 )
{
printf( " VICTOIRE DU JOUEUR1 /clap /clap ^^ \r\n\r\n" );
system( "pause" );
victoire = 1;
}

/*************/
/** Joueur2 **/
/*************/

if( victoire != 1 )
{

aQui = false;

demandeJetonetverif( &jetonJoueur2 , tabJeu );

placerJetonJoueur( jetonJoueur2 , tabJeu );

affichertabJeu( tabJeu );

verif = verificationVictoire2Joueurs( tabJeu );

if( verif == 0 )
{
printf( " VICTOIRE DU JOUEUR2 /clap /clap ^^ \r\n\r\n " );
system( "pause" );
victoire = 1;
}

else if( verif == 1 )
{
printf( " VICTOIRE DU JOUEUR1 /clap /clap ^^ \r\n\r\n" );
system( "pause" );
victoire = 1;
}
}
}
}

for( int i=0 ; i != 10 ; i++ )
{
printf( "\r\n\r\n\r\n\r\n\r\n" );
}

printf( "nous vous remercions de l'utilisation de notre programme\r\n\r\n" );
system( "pause" );

printf( "\r\n\r\nPuiSSance IV by RaNdoM_PoWneD\r\n\r\n\r\n" );
printf( "Tout droit reserve a RaNdoM_PoWneDCorporation\r\n\r\n" );
system( "pause" );

};

/********************************************************/
/* FONCTION INITIALISERTABJEU */
/* P: initialise la table de jeu avec le caractère '.' */
/* I: Tableau de chaine de caracteres */
/* O: / */
/********************************************************/
void initialisertabJeu( char tabJeu[8][8] )
{
int indice;
int indice2;

for( indice = 0 ; indice != 8 ; indice++ )
{
for( indice2 = 0 ; indice2 != 8 ; indice2++ )
{
tabJeu[ indice ][ indice2 ] = '.';
}
}
};

/********************************************************/
/* FONCTION AFFICHERTABJEU */
/* P: affiche la table de jeu sur la fenêtre console */
/* I: Tableau de chaine de caracteres */
/* O: / */
/********************************************************/
void affichertabJeu( char tabJeu[8][8] )
{
int indice;
int indice2;

printf("01234567\r\n");

for( indice = 0 ; indice != 8 ; indice++ )
{
for( indice2 = 0 ; indice2 != 8 ; indice2++ )
{

printf( "%c", tabJeu[ indice2 ][ indice ] );
}
printf("\r\n");
}
};

/****************************************************************************************/
/* FONCTION DEMANDEJETONETVERIF */
/* P: demande ou le joueur veut mettre son jeton et vérifie si cela est possible */
/* I: pointeur d'int vers .. .. Tableau de chaine de caracteres */
/* O: / */
/****************************************************************************************/
void demandeJetonetverif( int* jetonJoueur , char tabJeu[8][8] )
{
int verif = NULL ;

if( aQui == true )
{
printf( "Joueur1\r\n" );
}
else //Si pas 'true' forcement -> 'false'
{
printf( "Joueur2\r\n" );
}

printf( "veuillez indiquer une ligne entre 0 et 7 : ");
scanf( "%d" , jetonJoueur );
printf( "\r\n\r\n");

verif = verificationPlacement( *jetonJoueur , tabJeu );

while( verif == -1 )
{
verif = 0;

printf( "erreur veuillez entrer un autre numero de ligne ou signaler un bug: ");
scanf( "%d" , jetonJoueur );
printf( "\r\n\r\n");
verif = verificationPlacement( *jetonJoueur , tabJeu );
}
};

/****************************************************************/
/* FONCTION VERIFICATIONPLACEMENT */
/* P: verifie si positionner le jeton du joueur est possible */
/* I: int jeton joueur, Tableau de chaine de caracteres */
/* O: valeur de retour de la fct */
/****************************************************************/
int verificationPlacement( int jetonJoueur , char tabJeu[8][8] )
{

if((jetonJoueur<0)||(jetonJoueur>7))
{
return -1;
}
if((tabJeu[jetonJoueur][0])!='.')
{
return -1;
}
return 1;
};

/****************************************************************/
/* FONCTION PLACERJETONJOUEUR */
/* P: place le jeton du joueur */
/* I: int jeton joueur, Tableau de chaine de caracteres */
/* O: / */
/****************************************************************/
void placerJetonJoueur( int jetonJoueur , char tabJeu[8][8] )
{
int placement;
int indice;

for( indice = 8 ; indice > 0 ; indice-- )
{

if ( ( tabJeu[ jetonJoueur ][ indice-1 ] ) == '.' )
{
placement = ( indice - 1 ) ;
indice = 1 ;
}
}
if( aQui == true )
{
tabJeu[ jetonJoueur ][ placement ] = 'O' ;
}
else //if( aQui == false )
{
tabJeu[ jetonJoueur ][ placement ] = 'X' ;
}
};

/****************************************************************************/
/* FONCTION VERIFICATIONVICTOIRE */
/* P: vérifie s'il y a quatres jetons positionnés d'affilée -> VICTOIRE */
/* I: Tableau de chaine de caracteres */
/* O: retourne un int 1 -> Victoire JOUEUR 0 -> VICTOIRE ORDI */
/****************************************************************************/
int verificationVictoire( char tabJeu[8][8] )
{
int indice;
int indice2;
int verif=0; // -> initialisation directe

// vérifie s'il y a quatres jetons positionnes d'affilée en horizontale
for( indice = 0 ; indice != 8 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2++ )
{
if( tabJeu[ 0+indice2 ][ indice ] == 'O' && tabJeu[ 1+indice2 ][ indice ] == 'O' && tabJeu[ 2+indice2 ][ indice ] == 'O' && tabJeu[ 3+indice2 ][ indice ] == 'O' )
{
return 1; //victoire du joueur
}
if ( tabJeu[ 0+indice2 ][ indice ] == 'X' && tabJeu[ 1+indice2 ][ indice ] == 'X' && tabJeu[ 2+indice2 ][ indice ] == 'X' && tabJeu[ 3+indice2 ][ indice ] == 'X' )
{
return 0; //victoire de l'IA
}
}
}

// vérifie s'il y a quatres jetons positionnes d'affilée en verticale
for( indice = 0 ; indice != 8 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2++ )
{
if( tabJeu[ indice ][ 7-indice2 ] == 'O' && tabJeu[ indice ][ 6-indice2 ] == 'O' && tabJeu[ indice ][ 5-indice2 ] == 'O' && tabJeu[ indice ][ 4-indice2 ] == 'O' )
{
return 1; //victoire du joueur
}
if ( tabJeu[ indice ][ 7-indice2 ] == 'X' && tabJeu[ indice ][ 6-indice2 ] == 'X' && tabJeu[ indice ][ 5-indice2 ] == 'X' && tabJeu[ indice ][ 4-indice2 ] == 'X' )
{
return 0; //victoire de l'IA
}

}
}

// vérifie s'il y a quatres jetons positionner d'affilé en diagonale MONTANTE
for( indice = 0 ; indice != 5 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2 ++ )
{
if( tabJeu[ 0+indice2 ][ 7-indice ] == 'O' && tabJeu[ 1+indice2 ][ 6-indice ] == 'O' && tabJeu[ 2+indice2 ][ 5-indice ] == 'O' && tabJeu[ 3+indice2 ][ 4-indice ] == 'O' )
{
return 1; //victoire du joueur
}
if( tabJeu[ 0+indice2 ][ 7-indice ] == 'X' && tabJeu[ 1+indice2 ][ 6-indice ] == 'X' && tabJeu[ 2+indice2 ][ 5-indice ] == 'X' && tabJeu[ 3+indice2 ][ 4-indice ] == 'X' )
{
return 0; //victoire de l'IA
}
}
}

// vérifie s'il y a quatres jetons positionner d'affilé en diagonal DESCENDANTE
for( indice = 0 ; indice != 5 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2 ++ )
{
if( tabJeu[ 0+indice2 ][ 0+indice ] == 'O' && tabJeu[ 1+indice2 ][ 1+indice ] == 'O' && tabJeu[ 2+indice2 ][ 2+indice ] == 'O' && tabJeu[ 3+indice2 ][ 3+indice ] == 'O' )
{
return 1; //victoire du joueur
}
if( tabJeu[ 0+indice2 ][ 0+indice ] == 'X' && tabJeu[ 1+indice2 ][ 1+indice ] == 'X' && tabJeu[ 2+indice2 ][ 2+indice ] == 'X' && tabJeu[ 3+indice2 ][ 3+indice ] == 'X' )
{
return 0; //victoire de l'IA
}
}
}
return -1;
};

/****************************************************************************/
/* FONCTION VERIFICATIONVICTOIRE2JOUEURS */
/* P: vérifie s'il y a quatres jetons positionnés d'affilée -> VICTOIRE */
/* I: Tableau de chaine de caracteres */
/* O: retourne un int 1 -> Victoire JOUEUR1 0 -> VICTOIRE JOUEUR2 */
/****************************************************************************/
int verificationVictoire2Joueurs( char tabJeu[8][8] )
{
int indice;
int indice2;
int verif;
verif = 0;

// vérifie s'il y a quatres jetons positionner d'affilé en horizontal
for( indice = 0 ; indice != 8 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2++ )
{
if( tabJeu[ 0+indice2 ][ indice ] == 'O' && tabJeu[ 1+indice2 ][ indice ] == 'O' && tabJeu[ 2+indice2 ][ indice ] == 'O' && tabJeu[ 3+indice2 ][ indice ] == 'O' )
{
return 1; //victoire du joueur1
}
if ( tabJeu[ 0+indice2 ][ indice ] == 'X' && tabJeu[ 1+indice2 ][ indice ] == 'X' && tabJeu[ 2+indice2 ][ indice ] == 'X' && tabJeu[ 3+indice2 ][ indice ] == 'X' )
{
return 0; //victoire du joueur2
}

}
}

// vérifie s'il y a quatres jetons positionner d'affilé en vertical
for( indice = 0 ; indice != 8 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2++ )
{
if( tabJeu[ indice ][ 7-indice2 ] == 'O' && tabJeu[ indice ][ 6-indice2 ] == 'O' && tabJeu[ indice ][ 5-indice2 ] == 'O' && tabJeu[ indice ][ 4-indice2 ] == 'O' )
{
return 1; //victoire du joueur1
}
if ( tabJeu[ indice ][ 7-indice2 ] == 'X' && tabJeu[ indice ][ 6-indice2 ] == 'X' && tabJeu[ indice ][ 5-indice2 ] == 'X' && tabJeu[ indice ][ 4-indice2 ] == 'X' )
{
return 0; //victoire du joueur2
}
}
}

// vérifie s'il y a quatres jetons positionner d'affilé en diagonal MONTANTE
for( indice = 0 ; indice != 5 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2 ++ )
{
if( tabJeu[ 0+indice2 ][ 7-indice ] == 'O' && tabJeu[ 1+indice2 ][ 6-indice ] == 'O' && tabJeu[ 2+indice2 ][ 5-indice ] == 'O' && tabJeu[ 3+indice2 ][ 4-indice ] == 'O' )
{
return 1; //victoire du joueur1
}
if( tabJeu[ 0+indice2 ][ 7-indice ] == 'X' && tabJeu[ 1+indice2 ][ 6-indice ] == 'X' && tabJeu[ 2+indice2 ][ 5-indice ] == 'X' && tabJeu[ 3+indice2 ][ 4-indice ] == 'X' )
{
return 0; //victoire du joueur2
}
}
}

// vérifie s'il y a quatres jetons positionner d'affilé en diagonal DESCENDANTE*/
for( indice = 0 ; indice != 5 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2 ++ )
{
if( tabJeu[ 0+indice2 ][ 0+indice ] == 'O' && tabJeu[ 1+indice2 ][ 1+indice ] == 'O' && tabJeu[ 2+indice2 ][ 2+indice ] == 'O' && tabJeu[ 3+indice2 ][ 3+indice ] == 'O' )
{
return 1; //victoire du joueur1
}
if( tabJeu[ 0+indice2 ][ 0+indice ] == 'X' && tabJeu[ 1+indice2 ][ 1+indice ] == 'X' && tabJeu[ 2+indice2 ][ 2+indice ] == 'X' && tabJeu[ 3+indice2 ][ 3+indice ] == 'X' )
{
return 0; //victoire du joueur2
}
}
}
return -1;
};

/****************************************************************************/
/* FONCTION CREATIONJETONETVERIF */
/* P: crée le jeton de l'IA et vérifie s'il est possible de le positionner */
/* I: pointeur int JetonOrdi, Tableau de chaine de caracteres */
/* O: / */
/****************************************************************************/
void creationJetonetverif( int* jetonIA , char tabJeu[8][8] )
{
int verif = NULL ;

printf( "L'IA Reflechis.... ");
printf( "\r\n\r\n");

wait( 2 ); // attendre une seconde pour rentre le tout plus réaliste

*jetonIA = random( 8 );

verif = verificationPlacement( *jetonIA , tabJeu );

while( verif == -1 )
{
verif = 0;
*jetonIA = random( 8 );
verif = verificationPlacement( *jetonIA , tabJeu );
}
};

/****************************************************************************/
/* FONCTION PLACERJETONI */
/* P: place le jeton de l'IA */
/* I: int JetonOrdi, Tableau de chaine de caracteres */
/* O: / */
/****************************************************************************/
void placerJetonIA( int jetonIA , char tabJeu[8][8] )
{
int placement;
int indice;

for( indice = 8 ; indice > 0 ; indice-- )
{

if ( ( tabJeu[ jetonIA ][ indice-1 ] ) == '.' ) // si il n'y as pas de jeton à l'emplacement indiqué sauvegarder l'emplacement
{
placement = ( indice - 1 ) ;
indice = 1 ;

}
}
tabJeu[ jetonIA][ placement ] = 'X' ;
// met un jeton à l'emplacement sauvegarder précedemment
};

/************************************/
/* FONCTION WAIT */
/* P: */
/* I: int secondes */
/* O: / */
/************************************/
void wait( int seconds )
{
clock_t endwait;
endwait = clock () + seconds * CLOCKS_PER_SEC ;
while(clock()<endwait){}
};

/****************************************************************************/
/***************************FONCTION BY ME***********************************/
/****************************************************************************/
/* FONCTION RANDOM */
/* P: genere un nombre aleatoire inférieur au nombre passé en parametre */
/* I: int max */
/* O: int généré */
/****************************************************************************/
int random(int max)
{
int nb=0;
srand(time(NULL));
do
{
nb=rand();
}while(nb>max-1);
return nb;
};

/********************************************************************************/
/****************************** EXPLICATIONS SUPP' ******************************/
/********************************************************************************/

// Bloc d'explications de fonction
// +facile pour relire le code apres un certain temps
/********************************************************************/
/* Nom Fonction */
/* P: (PROCESS) ce que fait la fct */
/* I: explications des parametres recus */
/* O: explications des parametres retournes (VOIR Ex plus haut) */
/********************************************************************/

//ATTENTION: UNE BONNE INDENTATION ACCROIT FORTEMENT LA LISIBILITE DU CODE
/*
ex: a ne pas faire
*******************

for( indice = 0 ; indice != 8 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2++ )
{
if( tabJeu[ indice ][ 7-indice2 ] == 'O' && tabJeu[ indice ][ 6-indice2 ] == 'O' && tabJeu[ indice ][ 5-indice2 ] == 'O' && tabJeu[ indice ][ 4-indice2 ] == 'O' )
{
return 1; //victoire du joueur1
}
if ( tabJeu[ indice ][ 7-indice2 ] == 'X' && tabJeu[ indice ][ 6-indice2 ] == 'X' && tabJeu[ indice ][ 5-indice2 ] == 'X' && tabJeu[ indice ][ 4-indice2 ] == 'X' )
{
return 0; //victoire du joueur2
}
}
}

ex: OK
*******

for( indice = 0 ; indice != 8 ; indice++ )
{
for( indice2 = 0 ; indice2 != 5 ; indice2++ )
{
if( tabJeu[ indice ][ 7-indice2 ] == 'O' && tabJeu[ indice ][ 6-indice2 ] == 'O' && tabJeu[ indice ][ 5-indice2 ] == 'O' && tabJeu[ indice ][ 4-indice2 ] == 'O' )
{
return 1; //victoire du joueur1
}
if ( tabJeu[ indice ][ 7-indice2 ] == 'X' && tabJeu[ indice ][ 6-indice2 ] == 'X' && tabJeu[ indice ][ 5-indice2 ] == 'X' && tabJeu[ indice ][ 4-indice2 ] == 'X' )
{
return 0; //victoire du joueur2
}
}
}
*/

//initialisation
/*
int verif;
verif = 0; ->bien mais pas nickel

int verif=0; -> OK
*/

//Booleen
/*
if( aQui == true )
{
printf( "Joueur1\r\n" );
}
if( aQui == false)
{
printf( "Joueur2\r\n" );
}
*/
/*
if( aQui == true )
{
printf( "Joueur1\r\n" );
}
else //Si pas 'true' forcement -> 'false'
{
printf( "Joueur2\r\n" );
}
*/

/*
do
{
printf("\nMode De Jeu : ");
fflush(stdin);
test=scanf( "%d" , &mode );
}while(test==0||(mode!=1&&mode!=2));

fflush(stdin); -> permet de vider le buffer clavier
test permet de boucler tant que scanf lui renvoie 0 ex: tu rentres des chaines de caracteres, etc..
ici (mode!=1&&mode!=2) permet de blinder la saisie , je n'autorise que ces 2 saisies là,tu px l'etendre, exemple pour la saisie du numero de ligne
*/
ElendilAranwe Messages postés 10 Date d'inscription mercredi 30 décembre 2009 Statut Membre Dernière intervention 27 avril 2010
18 janv. 2010 à 21:02
Oui je te prie de m'excuser j'ai fais ce programme y a un mois et j'avoue l'avoir juste survoler pour le mettre, et je n'ai pas vu qu'il était en C au lieu de C++.

Pour l'indentation il me semble qu'elle est bonne. Après peut être que je me trompe.
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
18 janv. 2010 à 13:38
Je trouve mon commentaire assez "sec". Pour me rattraper, voici un exemple :

En C :
#include <stdio.h>
int main() {
char chaine[]="entier";
printf("Voici un %s : %d\n",chaine,12);
return 0;
}

En C++ :
#include
int main() {
char chaine[]="entier"; //Sans utiliser les string
cout << "Voici un " << chaine << " : " << 12 << endl;
return 0;
}

Les deux programmes affichent : "Voici un entier : 12"
uaip Messages postés 1466 Date d'inscription mardi 20 février 2007 Statut Membre Dernière intervention 7 février 2011
18 janv. 2010 à 13:28
Salut,
Même dans le fichier, le code est illisible (mauvaise indentation).
Tu ne vérifies pas que le mode saisi est bien 1 ou 2.
Mise à part les bool, ce n'est absolument pas du C++ mais du C (tu réviseras les opérateurs de flux en C++...)
J'ai pas le temps de regarder la totalité du code, mais il n'y a aucune notion de C++. Déçu...
Rejoignez-nous