begin process at 2012 05 30 11:00:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Puissance 4 Help


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Puissance 4 Help

mardi 7 janvier 2003 à 12:57:12 | Puissance 4 Help

Strange12

je recherche un fichier source plutôt simple en C du jeu Puissance 4.
Si vous avez un truc à me proposer répondé moi vite
mercredi 8 janvier 2003 à 18:26:28 | Re : Puissance 4 Help

coockiesch

Hello voici une source (c++) du jeu du morpion simplifié.
Cette source a été tirée du livre "Référence complète du c++" par H.Shildt aux éditions First Interactive.
En épérant qu'elle pourra t'aider... Juste aider pas copier.
coockiesch

---------------------------------------------------------------------

/* Jeu de morpion simple */
#include <stdio.h>
#include <stdlib.h>

char matrix[3][3]; /* Matrice du morpion */

char check(void);
void init_matrix(void);
void get_player_move(void);
void get_computer_move(void);
void disp_matrix(void);

int main(void)
{
char done;

printf("Ceci est le jeu du morpion.\n");
printf("Votre adversaire est l\'ordinateur.\n");

done = ' ';
init_matrix();
do{
disp_matrix();
get_player_move();
done = check();/* Déterminer s?il existe un gagnant */
if(done!= ' ') break; /* Gagné !*/
get_computer_move();
done = check(); /* Déterminer s?il existe un gagnant */
} while(done== ' ');
if(done=='X') printf("Vous avez gagné !\n");
else printf("J\'ai gagné !\n");
disp_matrix(); /* Afficher les positions finales */

return 0;

}
/* Initialiser la matrice */
void init_matrix(void)
{
int i, j;

for(i=0; i<3; i++)
for(j=0; j<3; j++) matrix[i][j] = ' ';
}
/* Obtenir un mouvement du joueur */
void get_player_move(void)
{
int x, y;

printf("Pour jouer, entrez");
printf("les coordonnées X et Y : ");
scanf("%d%*c%d", &x, &y);

x--; y--;

if(matrix[x][y]!= ' '){
printf("Choix non valide. Réessayez.\n");
get_player_move();
}
else matrix[x][y] = 'X';
}

/* Faire jouer l?ordinateur */
void get_computer_move(void)
{
int i, j;
for(i=0; i<3; i++){
for(j=0; j<3; j++)
if(matrix[i][j]==' ') break;
if(matrix[i][j]==' ') break;
}

if(i*j==9) {
printf("Partie nulle\n");
exit(0);
}
else
matrix[i][j] = 'O';
}
/* Afficher la matrice à l?écran */
void disp_matrix(void)
{
int t;

for(t=0; t<3; t++) {
printf(" %c | %c | %c ",matrix[t][0],
matrix[t][1], matrix [t][2]);
if(t!=2) printf("\n---|---|---\n");
}

printf("\n");
}
/* Déterminer s?il existe un gagnant */
char check(void)
{
int i;

for(i=0; i<3; i++) /* Vérifier les lignes */
if(matrix[i][0]==matrix[i][1] &&
matrix[i][0]==matrix[i][2]) return matrix[i][0];

for(i=0; i<3; i++) /* Contrôler les colonnes */
if(matrix[0][i]==matrix[1][i] &&
matrix[0][i]==matrix[2][i]) return matrix[0][i];

/* Examiner les diagonales */
if(matrix[0][0]==matrix[1][1] &&
matrix[1][1]==matrix[2][2])
return matrix[0][0];

if(matrix[0][2]==matrix[1][1] &&
matrix[1][1]==matrix[2][0])
return matrix[0][2];

return ' ';
}
mercredi 25 mai 2005 à 00:28:01 | Re : Puissance 4 Help

Humex688

/* TP semaine 26 2003 - 2004
   H. Mélot
*/

/* Beaucoup d'améliorations possibles:
   - modifier la profondeur en fonction du nombre de cases
     qui restent à jouer, pour que ce ne soit pas trop lent au début
   - utiliser symétries (nottament pour le premier coup)
   - ...
*/


#include <stdio.h>

#define N 8

int MAX_PROF;

void initialisation(char tab[N][N], int n)
{
    int i,j;
    for (i = 0; i < n; i++)
 for (j = 0; j < n; j++)
     tab[i][j] = ' ';
}

void affichage(char tab[N][N],int n)
{
    int i,j;
    printf("\n     ");
    for (i = 0; i < n; i ++)
 printf("%d   ", i);
    printf("\n    ");
    for (i = 0; i < n; i ++)
    printf("___ ");

    for (i = 0; i < n; i ++)
    {
 printf("\n   |");
 for (j = 0; j < n; j++)
     printf("   |");
 printf("\n %d |", i);
 for (j = 0; j < n; j ++)
         printf(" %c |", tab[i][j]);
 printf("\n   |");
 for (j = 0; j < n; j++)
     printf("___|");
    }
    printf("\n");
}

void lecture_case(char tab[N][N], int n, int* ligne, int* colonne, int joueur)
{
    int ok = 0;
    *ligne = -1;
    *colonne = -1;


    printf("Joueur %d. Entrez la case a jouer :\n", joueur);
   
    do {
       while (((*ligne) < 0) || ((*ligne) >= n))
 {
     printf("Ligne (0 -- %d) ? ", n-1);
     scanf("%d", ligne);
 }
 
 while ((*colonne < 0) || (*colonne >= n))
 {
     printf("Colonne (0 -- %d) ? ", n-1);
     scanf("%d", colonne);
 }

 if (tab[*ligne][*colonne] != ' ')
 {
     printf("Choisissez une autre case! Celle-ci est prise.\n");
     *ligne = -1; *colonne = -1;
 }
 else
     ok = 1;
    } while (ok == 0);
}

void mise_a_jour(char tab[N][N], int ligne, int colonne, int joueur)
{
    if (joueur == 1)
 tab[ligne][colonne] = 'X';
    else
 tab[ligne][colonne] = 'O';
}

int verification(char tab[N][N], int n, int joueur, int l, int c)
{

    int i;
    int vl = 1;
    int vc = 1;
    int vd1 = 1;
    int vd2 = 1;

    char ch;
    if (joueur == 1)
 ch = 'X';
    else
 ch = 'O';

    for (i = 0; i < n; i ++)
    {
 if (tab[l][i] != ch)
     vl = 0;
 
 if (tab[i][c] != ch)
     vc = 0;

     if (tab[i][i] != ch)
     vd1 = 0;
 
 if (tab[i][n-i-1] != ch)
     vd2 = 0;
    }

    if ((vl == 1) || (vc == 1) || (vd1 == 1) || (vd2 == 1))
 return joueur;
    else
 return 0;
}

void change_joueur(int *joueur)
{
    if ((*joueur) == 1)
 *joueur = 2;
    else
 *joueur = 1;
}

int exaequo(char tab[N][N],int n)
{
    int i,j;

    for (i = 0; i < n; i ++)
 for (j = 0; j < n; j ++)
     if (tab[i][j] == ' ')
  return 0;

    return 1;
}

double search(char tab[N][N], int n, int l, int c, int joueur, int prof)
{
    int i,j;
    double sum = 0;
   
    mise_a_jour(tab,l,c,joueur);
    if (verification(tab,n,joueur,l,c))
    {
 if (joueur == 2)
     sum += 1. / (double) prof;
 else
     sum -= 1. / (double) prof;
    }
    else if (prof < MAX_PROF)
    {
 change_joueur(&joueur);   
 for (i = 0; i < n; i++)
     for (j = 0; j < n; j++)
  if (tab[i][j] == ' ')
      sum += search(tab,n,i,j,joueur,prof+1);
    }
    tab[l][c] = ' ';

    return sum;
}
/*
void choix_ordi(char tab[N][N], int n, int* ligne, int* colonne)
{
    int best_l = -1, best_c = -1;
    double best_sum = -99999;
    double sum;

    int i,j;

    printf("L'ordinateur calcule son prochain coup...\n");
 
/* Enlever les commentaires pour afficher les sommes calculées
   par l'ordinateur
 
    //  printf("Sum:\n");
    for (i = 0; i < n; i++)
    {
 for (j = 0; j < n; j++)
 {
     if (tab[i][j] == ' ')
     {
  sum = search(tab,n,i,j,2,1);
  // printf("%g, ",sum);
  if (best_sum < sum)
  {
      best_sum = sum;
      best_l = i;
      best_c = j;
  }
     }
     // else
     //    printf("X, ");
 }
 //printf("\n");
    }
   
    *ligne = best_l;
    *colonne = best_c;
   
    printf("--> case (%d,%d)\n",*ligne,*colonne);
}


int main()
{
    int n;
    char grille[N][N];
    int joueur = 1;
    int lig, col;
    int egal = 0;
    int gagne = 0;
    int mode;

    printf("OXO - Bienvenue.\n");
    do {
 printf("Choisissez la taille de la grille (2 -- 7) : ");
 scanf("%d",&n);
    } while (n < 2 || n > 10);

    // choix de la profondeur (pour que le jeu ne soit pas trop lent)
    switch (n) {
 case 2 : MAX_PROF = 4; break;
 case 3 : MAX_PROF = 9; break;
 case 4 : MAX_PROF = 7; break;
 case 5 : MAX_PROF = 5; break;
    }

    do {
 printf("Choisissez votre mode de jeu :\n");
 printf("1. Joueur vs Joueur\n");
 printf("2. Joueur vs Ordinateur\n");
 scanf("%d",&mode);
    } while (mode < 1 || mode > 2);

    if (mode == 2)
    {
 do {
 printf("Qui commence ?\n");
 printf("1. Joueur\n");
 printf("2. Ordinateur\n");
 scanf("%d",&joueur);
 } while (joueur < 1 || joueur > 2);
    }

    initialisation(grille,n);
    affichage(grille,n);

    do {
 if (mode == 2 && joueur == 2)
     choix_ordi(grille,n,&lig,&col);
 else
     lecture_case(grille,n,&lig,&col,joueur);
 mise_a_jour(grille,lig,col,joueur);
 affichage(grille,n);
 gagne = verification(grille,n,joueur,lig,col);
 if (gagne == 0)
     egal = exaequo(grille,n);
 change_joueur(&joueur);
    } while ((egal == 0) && (gagne == 0));

    if (egal == 1)
 printf("\nEgalite!\n");
    else
 printf("\nLe joueur %d a gagne la partie!\n", gagne);

    return 0;
}

 

 

 

 


 

mercredi 25 mai 2005 à 00:29:36 | Re : Puissance 4 Help

Humex688

tu peut t'inspirer de ce code et l'ameliorer.


Cette discussion est classée dans : help, puissance


Répondre à ce message

Sujets en rapport avec ce message

Help me!!!!! [ par Pepes ] Chui kun newbie ki cherche déserpérémént un programmateur en c++. Si vous avez une adresse ou télécharger une shareware ou unn programme complet répon Help Debutant [ par Kaouane ] Salut,je voudrais juste savoir les erreurs qu'il y'a dans ce programme qui vam e servir a retenir les syntaxe d'une classe:#include class addition{int puissance 4 en c [ par girlweeb ] je recherche le jeux puissance 4 en c , si possible !qq un pourrait il me venir en aide? WritePrivateProfileString avec une variable help!!!!! [ par mavric ] salut bon je dois cree un fichier ini,pour sauvegarder les param d'un prog Pour ca j'utilise les fonctions WritePrivateProfileString et getPrivateProf developpement d'une application asynchrone HELP................ [ par header ] J'ai besoin d'aide, je developpe une appli qui telecharge des fichiers sur internet malheuresement elle bloque. Bref pour parer a ce problème il faut Help please help [ par Neo77 ] ben alors il est pourri mon prog ke g posté? demain ca va etre ma feteg un ds sur les listes chainee & table de hachageet g a peine codé dessus help me, besoin d'aide en C quand au prototype et au procédure [ par rodcobalt22 ] hello tout le monde,voilà j'ai un prob, j'ai paumé ma leçon comme un gros gland et maintenant je suis emm.... pour un truc.je recherche la syntaxe ent puissance 4 en C [ par djouje ] c'est tres important pour moi il me faudrait ce petit jeu je remercie toute personne pouvant me venir en aide .Merci et bonne prog. Help!!! copier un fichier ds un autre repertoire [ par mavric ] Salut je cherche a copier un fichier vers un autre repertoire.Pour copier j'utilise la fonction CopyFile,g bien essayer de mettre un chemin en plus du Help me !!! [ par Jcedric42 ] Salut a tous, je debut juste en programmations, et j'ai pas beaucous de base, j'aimerez savoir comment il faut que je fasse pour pouvoir ecrires des c


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,172 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales