begin process at 2012 05 27 17:59:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > PUISSANCE4 EN LANGAGE C

PUISSANCE4 EN LANGAGE C


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :puissance4, langage, c, moussy Niveau :Débutant Date de création :08/12/2006 Date de mise à jour :12/12/2006 10:39:29 Vu / téléchargé :14 590 / 828

Auteur : troigee

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

voila vous connaissez sûrement le but du jeu. histoire d'en rajouter vous devez alignez quatre pions sur un des 4 axes de la grille.
Alors je vous dis amuser vous bien....

Source

  • #include <stdio.h>
  • #include <stdlib.h>
  • char grille[6][7];/*ce tableau represente une delimitation du nombre de case de la grille*/
  • int remplissage[7];/* ce tableau définit le nombre de jeton qu'il y a dans la colonne..maximum 6.*/
  • int dansGrille(int x,int y)
  • /*la fonction prend 2 entiers x et y et renvoie vrai s'il existe une case de coordonnées(x,y)dans grille.*/
  • {
  • if ((x>=0)&&(x<=5)&&(y>=0)&&(y<=6))/* x appartient aux six cases d'une colone 0~5
  • y appartient aux septs case d'une ligne 0~6*/
  • return 1;
  • else return 0;
  • }
  • /* fonction qui renvoie vrai s'il est possible
  • de poser un jeton dans la colonne x, j'utilise un tableau sur cette fonction*/
  • int jouable(int x)
  • {
  • if (x>=0 && (x<7) &&remplissage[x]>=0 && remplissage[x]<6)
  • return 1;
  • else return 0;
  • }
  • /*.............fonction saisir coup*/
  • int saisircoup()
  • {
  • int z; // z colonne//
  • do{
  • printf("\t rentrez une colonne entre <0-6>:\n\t essaies une autre si celle-ci est remplie!\n");
  • scanf("%d",&z);
  • if (jouable(z)==1)
  • return z;
  • }
  • while(jouable(z)!=1);
  • }
  • /*..............*/
  • void afficherGrille()
  • {
  • int i,j;
  • printf("\t\t********MOUSSY && MICK********\n");
  • printf("\t\t*********Puissance4*******\n\n\n\n");
  • for(i=0;i<6;i++){
  • printf("\t\t\t");
  • printf("+-+-+-+-+-+-+-+");
  • printf("\n");
  • printf("\t\t\t");
  • for (j=0;j<7;j++)
  • printf("|%c",grille[5-i][j]);
  • printf("|%d \n",i);// affiche les numéros horizontalement
  • }
  • if (i==6)
  • printf("\t\t\t");
  • printf("+-+-+-+-+-+-+-+");
  • printf("\n");
  • printf("\t\t\t");
  • for(j=0;j<=6;j++)
  • {
  • printf(" %d",j);// affiche les numéro verticalement
  • }
  • printf("\n\n\t\t");
  • }
  • int estRemplieOuNon()
  • {
  • int x,comp=0;
  • for(x=0;x<=6;x++)
  • {
  • if(jouable(x))
  • {
  • comp=comp+1;
  • }
  • }
  • if (comp==0) //nbre de colonne+1
  • return 1;
  • else return 0;
  • }
  • int adjacent(int c, int l,int dirV, int dirH)
  • {
  • int n=0;
  • if(dirV==0)
  • {
  • if(dirH==1)
  • {
  • while((grille[l][c])==(grille[l][c+1])&&(grille[l][c]!=' '))
  • {
  • n++;
  • c++;
  • }
  • }
  • else if(dirH==-1)
  • {
  • while((grille[l][c])==(grille[l][c-1])&&(grille[l][c]!=' '))
  • {
  • n++;
  • c--;
  • }
  • }
  • }
  • if(dirV==1)
  • {
  • if(dirH==0)
  • {
  • while((grille[l][c])==(grille[l+1][c])&&(grille[l][c]!=' '))
  • {
  • n++;
  • l++;
  • }
  • }
  • else if(dirH==1)
  • {
  • while((grille[l][c])==(grille[l+1][c+1])&&(grille[l][c]!=' '))
  • {
  • n++;
  • c++;
  • l++;
  • }
  • }
  • else if(dirH==-1)
  • {
  • while((grille[l][c])==(grille[l+1][c-1])&&(grille[l][c]!=' '))
  • {
  • n++;
  • c--;
  • l++;
  • }
  • }
  • }
  • if(dirV==-1)
  • {
  • if(dirH==0)
  • {
  • while((grille[l][c])==(grille[l-1][c])&&(grille[l][c]!=' '))
  • {
  • n++;
  • l--;
  • }
  • }
  • else if(dirH==-1)
  • {
  • while((grille[l][c])==(grille[l-1][c-1])&&(grille[l][c]!=' '))
  • {
  • n++;
  • c--;
  • l--;
  • }
  • }
  • else if(dirH==1)
  • {
  • while((grille[l][c])==(grille[l-1][c+1])&&(grille[l][c]!=' '))
  • {
  • n++;
  • c++;
  • l--;
  • }
  • }
  • }
  • return(n);
  • }
  • int partieEstGagneeOuPas(int c,int l)
  • {
  • if ((adjacent(c,l,0,1)+adjacent(c,l,0,-1))>=3 ||
  • (adjacent(c,l,1,0)+adjacent(c,l,-1,0))>=3 ||
  • (adjacent(c,l,1,1)+adjacent(c,l,-1,-1))>=3 ||
  • (adjacent(c,l,1,-1) + adjacent(c,l,-1,1)>=3))
  • return 1;
  • else return 0;
  • }
  • /*6*/
  • main ()
  • {
  • int i,j,joueur=0,colonne,ligne;
  • int y=0,compt1=0;
  • const N=50;
  • char nom1[N],nom2[N],recom;
  • printf("nom du premier joueur!!\n");
  • scanf("%s",&nom1[N]);
  • printf("nom du deuxiem jouer\n");
  • scanf("%s",&nom2[N]);
  • afficherGrille();
  • do
  • {
  • for (i=0;i<6;i++)
  • {
  • for (j=0;j<7;j++)
  • {
  • grille[i][j]=' ';
  • }
  • }
  • for(j=0;j<7;j++)
  • {
  • remplissage[j]=0;/* on initialise remplissage à zéro, car 0 est sa premiere valeur*/
  • }
  • do
  • {
  • if (joueur%2==0)// evident
  • {
  • printf("%s, posez votre pion\n",&nom1[N]);// on rentre son nom
  • colonne=saisircoup();
  • ligne=remplissage[colonne];//remplissage définit les lignes de la colonne
  • grille[ligne][colonne]='O';
  • remplissage[colonne]=remplissage[colonne]+1;
  • compt1++;
  • system("cls");
  • afficherGrille();
  • if( partieEstGagneeOuPas(colonne,ligne)==1)// si la partie est gagnée
  • {
  • printf("%s gagne au %deme coup\n",&nom1[N],compt1/2+1);
  • }
  • }
  • if(joueur%2!=0)
  • {
  • printf("%s, posez votre pion\n",&nom2[N]);
  • colonne=saisircoup();
  • ligne=remplissage[colonne];
  • grille[ligne][colonne]='X';
  • remplissage[colonne]=remplissage[colonne]+1;
  • compt1++;
  • system("cls");// efface
  • afficherGrille();
  • if( partieEstGagneeOuPas(colonne,ligne)==1)
  • {
  • printf("%s gagne au %deme coup\n",&nom2[N],compt1/2);
  • }
  • }
  • joueur=joueur+1;//on incremente le joueur
  • } while(( !estRemplieOuNon() && !partieEstGagneeOuPas(colonne,ligne) ) );// répéter tant que c'est pas rempli
  • printf("le score de %s est %d\n",&nom1[N],score1);
  • printf("le score de %s est %d\n",&nom2[N],score2);
  • do
  • { fflush(stdin);
  • printf("\t\tVoulez-vous recommencer ? (o/n) : ");
  • scanf("%c",&recom);
  • }while(recom!='o' && recom!='n');
  • printf("\n");
  • }while (recom=='o');
  • }
#include <stdio.h>
#include <stdlib.h>

  char grille[6][7];/*ce tableau represente une delimitation du nombre de case de la grille*/
  int remplissage[7];/* ce tableau définit le nombre de jeton qu'il y a  dans la colonne..maximum 6.*/

int dansGrille(int x,int y)
  /*la fonction prend 2 entiers x et y et renvoie vrai s'il existe une case de coordonnées(x,y)dans grille.*/
  {
      if ((x>=0)&&(x<=5)&&(y>=0)&&(y<=6))/* x appartient aux six cases d'une colone 0~5
                            y appartient aux septs case d'une ligne 0~6*/
       return 1;
      else return 0;
  }
 /* fonction qui renvoie vrai s'il est possible
  de poser un jeton dans la colonne x, j'utilise un tableau sur cette fonction*/
int jouable(int x)
  {

    if (x>=0 && (x<7) &&remplissage[x]>=0 && remplissage[x]<6)
    return 1;
    else return 0;

  }
  /*.............fonction saisir coup*/
int saisircoup()
  {
    int z;           // z colonne//

        do{


          printf("\t      rentrez une colonne entre <0-6>:\n\t essaies une autre si celle-ci est remplie!\n");
          scanf("%d",&z);
          if (jouable(z)==1)
          return z;

          }
        while(jouable(z)!=1);

  }
  /*..............*/
  void afficherGrille()
  {
    int i,j;
    printf("\t\t********MOUSSY && MICK********\n");
    printf("\t\t*********Puissance4*******\n\n\n\n");

    for(i=0;i<6;i++){
    printf("\t\t\t");
    printf("+-+-+-+-+-+-+-+");

    printf("\n");
    printf("\t\t\t");
    for (j=0;j<7;j++)

    printf("|%c",grille[5-i][j]);

    printf("|%d \n",i);// affiche les numéros horizontalement

                    }
    if (i==6)
    printf("\t\t\t");
    printf("+-+-+-+-+-+-+-+");
    printf("\n");
    printf("\t\t\t");
    for(j=0;j<=6;j++)
                     {
    printf(" %d",j);// affiche les numéro verticalement
                     }
    printf("\n\n\t\t");
}


int estRemplieOuNon()

{
     int x,comp=0;
     for(x=0;x<=6;x++)
     {
     if(jouable(x))
      {
           comp=comp+1;
      }
     }
     if (comp==0)   //nbre de colonne+1

      return 1;


     else return 0;

}

int adjacent(int c, int l,int dirV, int dirH)
{
    int n=0;

     if(dirV==0)
        {
        if(dirH==1)
           {
           while((grille[l][c])==(grille[l][c+1])&&(grille[l][c]!=' '))
              {
              n++;
              c++;
              }
           }
         else if(dirH==-1)
           {
           while((grille[l][c])==(grille[l][c-1])&&(grille[l][c]!=' '))
              {
              n++;
              c--;
              }
           }
        }
     if(dirV==1)
        {
        if(dirH==0)
           {
           while((grille[l][c])==(grille[l+1][c])&&(grille[l][c]!=' '))
              {
              n++;
              l++;
              }
           }
        else if(dirH==1)
           {
           while((grille[l][c])==(grille[l+1][c+1])&&(grille[l][c]!=' '))
              {
              n++;
              c++;
              l++;
              }
           }
           else if(dirH==-1)
              {
              while((grille[l][c])==(grille[l+1][c-1])&&(grille[l][c]!=' '))
                 {
                 n++;
                 c--;
                 l++;
                 }
              }
        }
     if(dirV==-1)
        {
        if(dirH==0)
           {
           while((grille[l][c])==(grille[l-1][c])&&(grille[l][c]!=' '))
              {
              n++;
              l--;
              }
           }
        else if(dirH==-1)
              {
              while((grille[l][c])==(grille[l-1][c-1])&&(grille[l][c]!=' '))
                 {
                 n++;
                 c--;
                 l--;
                 }
              }
              else if(dirH==1)
              {
              while((grille[l][c])==(grille[l-1][c+1])&&(grille[l][c]!=' '))
                 {
                 n++;
                 c++;
                 l--;
                 }
              }
        }
     return(n);

}

int partieEstGagneeOuPas(int c,int l)
{

  if  ((adjacent(c,l,0,1)+adjacent(c,l,0,-1))>=3 ||
  (adjacent(c,l,1,0)+adjacent(c,l,-1,0))>=3 ||
  (adjacent(c,l,1,1)+adjacent(c,l,-1,-1))>=3 ||
  (adjacent(c,l,1,-1) + adjacent(c,l,-1,1)>=3))
  return 1;
  else return 0;

}

/*6*/
main ()
{

     int i,j,joueur=0,colonne,ligne;
     int y=0,compt1=0;
     const N=50;
     char nom1[N],nom2[N],recom;
     printf("nom du premier joueur!!\n");
     scanf("%s",&nom1[N]);
     printf("nom du deuxiem jouer\n");
     scanf("%s",&nom2[N]);
     afficherGrille();
 do
 {
     for (i=0;i<6;i++)
     {
        for (j=0;j<7;j++)
        {
             grille[i][j]=' ';
        }
     }

     for(j=0;j<7;j++)
        {
     remplissage[j]=0;/* on initialise remplissage à zéro, car 0 est sa premiere valeur*/
        }
    do
    {
     if (joueur%2==0)// evident
     {
     printf("%s, posez votre pion\n",&nom1[N]);// on rentre son nom
     colonne=saisircoup();
     ligne=remplissage[colonne];//remplissage définit les lignes de la colonne
     grille[ligne][colonne]='O';
     remplissage[colonne]=remplissage[colonne]+1;
     compt1++;
     system("cls");
     afficherGrille();
     if( partieEstGagneeOuPas(colonne,ligne)==1)// si la partie est gagnée
      {
      printf("%s gagne au %deme coup\n",&nom1[N],compt1/2+1);
      }
     }

     if(joueur%2!=0)
     {
     printf("%s, posez votre pion\n",&nom2[N]);
     colonne=saisircoup();
     ligne=remplissage[colonne];
     grille[ligne][colonne]='X';
     remplissage[colonne]=remplissage[colonne]+1;
     compt1++;
     system("cls");// efface
     afficherGrille();
     if( partieEstGagneeOuPas(colonne,ligne)==1)
      {
      printf("%s gagne au %deme coup\n",&nom2[N],compt1/2);
      }

     }

     joueur=joueur+1;//on incremente le joueur


    } while(( !estRemplieOuNon() && !partieEstGagneeOuPas(colonne,ligne) ) );// répéter tant que c'est pas rempli

        printf("le score de %s est %d\n",&nom1[N],score1);
        printf("le score de %s est %d\n",&nom2[N],score2);

      do
        { fflush(stdin);
         printf("\t\tVoulez-vous recommencer ? (o/n) : ");
         scanf("%c",&recom);
        }while(recom!='o' && recom!='n');

        printf("\n");
 }while (recom=='o');

}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

08 décembre 2006 23:47:23 :
j'ai un fichier zip à cette source. alors c'est cool ça.
12 décembre 2006 10:39:29 :
changement du regle du jeu 4 pions au lieu de 5

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DES CARTES par eapaceinfo
PROGRAMME DE JEU DE MPT par KerizGarmm
Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PUISSANCE QUATRE par Passio
Source avec Zip INTERPRETEUR BRAINFUCK par coucou747
Source avec Zip CODE DE HUFFMAN par Ricky_MacElroy
Source avec Zip Source avec une capture AFFICHAGE D'IMAGES JPG AVEC IPICTURE EN C par racpp
Source avec Zip Source avec une capture PUISSANCE 4 EN 2D (C / SDL) par Spypunk

Commentaires et avis

Commentaire de vecchio56 le 09/12/2006 02:08:51 administrateur CS

Un puissance 4 en console c'est bien gentil, mais c'est un peu nul pour jouer quand même.

estRemplieOuNon, partieEstGagneeOuPas
Ce sont des fonctions qui retournent toujours vrai si on en croit leur nom...

Sinon faudra que tu m'expliques comment tu fais pour indenter ton code, ca m'intéresse

C'est con d'avoir mis 6 et 7 en dur, tu connais pas les defines?

Commentaire de vecchio56 le 09/12/2006 02:10:05 administrateur CS

Pourquoi mettre Moussy comme mot-clé?

Commentaire de rrk275 le 09/12/2006 13:14:39

et pourquoi  printf("\t\t********MICK  && MOUSS********\n");

..

parce que mario bross ^^

un puissance 4 .. bon passe encore.. que ca fasse 300 lignes .. ayeayeaye en console (!-!) !!

Commentaire de coucou747 le 11/12/2006 12:46:48 administrateur CS

moi j'aurais plus aimé trouver une IA qu'une interface graphique...

Commentaire de troigee le 12/12/2006 11:43:52

désolé si c'est un peu nul et que ça prend un peu trop de lignes mais c'est mon premier programme alors je fairai mieux la prochaine fois.
et pour moussy c'est juste un p'tit délir lol.

Commentaire de troigee le 12/12/2006 11:45:56

désolé mais je ne connais pas ce que c'est qu'une IA...

Commentaire de coucou747 le 12/12/2006 18:45:05 administrateur CS

intelligence artificielle... pour que l'ordinateur puisse jouer contre un humain (ou un autre ordinateur)

Commentaire de vecchio56 le 12/12/2006 19:19:22 administrateur CS

à ne pas confondre avec la connerie naturelle

Commentaire de danCHESS le 13/12/2006 14:47:30

salut.

Eh bé on peut dire que vous êtes sympas avec les débutants ! vecchio ---> t'es un peu dur , et visiblement tu "touches" en programmation (39 sources postées) , pourquoi tu ne lui explique pas les choses gentiment ? (t'as jamais été débutant ?) tu posterais pas aussi sur france.echecs par hasard ?(le ton là bas est le même que dans tes posts ...) ?
Enfin t'as essayé l'humour au dernier post mais visiblement c'est pas ton truc non plus , continue à programmer...
Troigee , pour savoir ce que c'est que l'IA , rien ne vaut un bon google ! après c'est limpide
a plus !

Commentaire de irmo le 15/12/2006 15:40:31

Si ça vous interesse j'ai fait un puissance 4 sur console avec IA avec plusieurs niveau de difficulté.
Expliquez moi comment poser ma source sur le site et je le ferais.

Commentaire de vecchio56 le 15/12/2006 17:41:54 administrateur CS

danCHESS> Tout a fait d'accord avec toi, mais mon humeur est changeante

irmo> Avec le menu Mon Compte>Mes sources>Ajouter une source

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

création d'un compilateur en langage c [ par fati fleur ] on veut créer un compilateur sous c et on veut le code source du compilateur IDL : spécifications du langage [ par gblade ] tt est ds le titre ;) je voudrais avoir les spécifications du langages IDL compilé avec MIDL de MS Puissance4 en C "HELP" [ par Strange12 ] Je recherche un fichier source en C compatible avec Linux du jeu Puissance 4 si possible relativement simple car je ne suis pas une lumière en program Pb tableaux langage C (Borland) [ par SniPi ] Comment on fait pr faire un tableau avec 10 valeurs, mais que les 10 valeurs ce soit l'utilisateur qui les rentre...??Amicalement...SniPi PROG EN C, C++ ou autre langage... [ par sremy ] salut, je pose mon pb :Imaginons qu'on ai un prog. MS-DOS appelé prog1.exe qui une fois lancé est en attente d'un password dans la ligne de commande. probleme en langage c! [ par matthieub ] Bonjour a tous,Voila g un projet a faire en langage c pour la fin de la semaine et je bloque completement!Je vous donne le lien ou il y a le sujet:htt une matrice de taille quelconque [ par anaisa ] salut tt le monde saurez vous m'aidez à résoudre un petit probleme: je dois programmé la somme, produit de matrices de taille quelconque en langage C projet en langage c [ par mirs ] ce serait au fait pour une sur un projet :clavier alpha numérique à l'aide de 8 touchespour avoir plus de préccision veuillez mze contacter à ce numér helppp [ par LDDL ] Slt a tousVoilà je ne programme pas en C et j'ai dois faire une Dll qui permette de calculer des nombres DOUBLE (ex : 800000000/6.55957) puis de renv image pgm langage c [ par srenaud ] Bonjour,je cherche a modifier l'apparence d'une image pgm. Il faudrait que je trouve comment faire un effet blur (flou), un effet de pixelisation, un


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,702 sec (4)

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