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

Code

 > 

Jeux

 > PUISSANCE QUATRE

PUISSANCE QUATRE


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Classé sous :Puissance4, Puissance, Quatre, PuissanceQuatre, JEU Niveau :Débutant Date de création :27/04/2010 Date de mise à jour :27/04/2010 22:36:17 Vu / téléchargé :3 217 / 120

Auteur : Passio

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

 Description

Cliquez pour voir la capture en taille normale
Le nouveau puissance Quatre ou l'on ne peut pas gagner en diagonale. Cependant, une manière différente de programmer par rapport à celles que j'ai pu voir.

Source

  • #include <stdio.h>
  • #include <stdlib.h>
  • #define RANGEE_COMPLETE 4
  • #define TRUE 1
  • #define FALSE 0
  • #define LARGEUR 7
  • #define HAUTEUR 6
  • void afficherGrille(int grille[HAUTEUR][LARGEUR]);
  • void modifierGrille(int choixColonne, int hauteurColonne[], int grille[HAUTEUR][LARGEUR], int tour, int *pointeurTour);
  • int menu();
  • int definirJoueur(int tour);
  • int tableauRempli(int hauteurColonne[], int *pointeurTour);
  • int verifierGagnant( int grille[HAUTEUR][LARGEUR], int choixColonne, int hauteurColonne[]);
  • void menuPrincipal();
  • void finJeu(int victoire, int tour);
  • int main()
  • {
  • int grille[HAUTEUR][LARGEUR] = {0}; //grille[i][j]
  • int i;
  • int choixColonne = 0;
  • int tour = 1;
  • int victoire = 0;
  • int hauteurColonne[LARGEUR];
  • for(i = 0; i!=LARGEUR; i++){
  • hauteurColonne[i] = 5;}
  • menuPrincipal();
  • do{
  • afficherGrille(grille);
  • tour = definirJoueur(tour);
  • choixColonne = menu();
  • modifierGrille(choixColonne, hauteurColonne, grille, tour, &tour);
  • if(hauteurColonne[choixColonne]>=0){
  • hauteurColonne[choixColonne]--;
  • victoire = verifierGagnant(grille, choixColonne, hauteurColonne);
  • }
  • else{
  • tour++;
  • }}
  • while(!tableauRempli(hauteurColonne, &tour) && !victoire);
  • afficherGrille(grille);
  • finJeu(victoire, tour);
  • return main();
  • }
  • void modifierGrille(int choixColonne, int hauteurColonne[], int grille[HAUTEUR][LARGEUR], int tour, int *pointeurTour)
  • {
  • int i;
  • int j;
  • for(i = 0; i!=6; i++)
  • {
  • for(j = 0; j!=10; j++)
  • {
  • if(choixColonne == j)
  • {
  • if(hauteurColonne[j] >= 0) //éviter le débordement de pions sur le haut [0][j]
  • {
  • if(tour) //boléen 1/0
  • {
  • grille[hauteurColonne[j]][j] = 2; //Pion ?
  • }
  • else
  • {
  • grille[hauteurColonne[j]][j] = 1; //Pions ?
  • }
  • }
  • else if(!i) //Pour implémenter une fois à l'intérieur de la boucle.
  • {
  • *pointeurTour+=0;//on incrémente la variable associé au pointeur //FACULTATIF *ponteurTour+=1; en fonction des modif code;
  • } //pour éviter le décalage du nombre de pion en cas de mauvaise saisie
  • }}}}
  • int menu()
  • {
  • int choix;
  • printf("\nDans quelle colonne souhaitez vous placer un pion ? ");
  • scanf("%ld", &choix);
  • if(choix > LARGEUR || choix < 1)
  • {
  • printf("La valeur doit etre comprise entre 1 et 7.\n");
  • return menu();
  • }
  • return choix-1; // 1 = 0 & Jmin = 0
  • }
  • void afficherGrille(int grille[HAUTEUR][LARGEUR])
  • {
  • int i;
  • int j;
  • for(i = 0; i!=6; i++)
  • {
  • printf(" ");
  • for(j = 0; j!=LARGEUR; j++)
  • {
  • switch(grille[i][j]) {
  • case 2 : printf("%c", 2);
  • break;
  • case 1 : printf("%c", 1);
  • break ;
  • case 3 : printf("%c", 3);
  • break ;
  • case 4 : printf("%c", 4);
  • break ;
  • default : printf(".");
  • break ;
  • }
  • }
  • printf("\n");
  • }
  • }
  • int definirJoueur(int tour)
  • {
  • return (tour+1)%2; //renvoie 0 ou 1
  • }
  • int tableauRempli(int hauteurColonne[], int *pointeurTour)
  • {
  • int resultat = 0;
  • int i;
  • const int limite = -1;
  • for(i = 0; i<LARGEUR; i++)
  • {
  • if(hauteurColonne[i] == limite && hauteurColonne[i+1] == limite && hauteurColonne[i+2] == limite && hauteurColonne[i+3] == limite && hauteurColonne[i+4] == limite && hauteurColonne[i+5] == limite && hauteurColonne[i+6] == limite)
  • {
  • resultat = 1;
  • }
  • }
  • printf("\n");
  • return resultat;
  • }
  • int verifierGagnant( int grille[HAUTEUR][LARGEUR], int choixColonne, int hauteurColonne[])
  • {
  • typedef struct Valeur Valeur;
  • typedef struct NbrPionsIdentiques NbrPionsIdentiques;
  • struct Valeur
  • {
  • int actuelle;
  • int droite;
  • int gauche;
  • int droite2;
  • int gauche2;
  • int hautGauche;
  • int hautDroite;
  • int basGauche;
  • int basDroite;
  • };
  • struct NbrPionsIdentiques
  • {
  • int horizontale;
  • int horizontale2;
  • int verticale;
  • };
  • Valeur position;
  • position.actuelle = grille[hauteurColonne[choixColonne]+1][choixColonne];
  • position.droite = grille[hauteurColonne[choixColonne]+1][choixColonne+1];
  • position.gauche = grille[hauteurColonne[choixColonne]+1][choixColonne-1];
  • position.droite2 = grille[hauteurColonne[choixColonne]+1][choixColonne+2];
  • position.gauche2 = grille[hauteurColonne[choixColonne]+1][choixColonne-2];/*
  • position.hautGauche = grille[hauteurColonne[choixColonne]+2][choixColonne-1];
  • position.hautDroite = grille[hauteurColonne[choixColonne]+2][choixColonne+1];
  • position.basGauche = grille[hauteurColonne[choixColonne]][choixColonne-1];
  • position.basDroite = grille[hauteurColonne[choixColonne]+2][choixColonne+1];*/
  • NbrPionsIdentiques pionsIdentiques;
  • pionsIdentiques.horizontale = 1;
  • pionsIdentiques.horizontale2 = 1;
  • pionsIdentiques.verticale = 1;
  • int i, j;
  • int victoire = FALSE;
  • int limite = 0;
  • int limite2 = 0;
  • if(choixColonne+4 > LARGEUR){
  • limite = 1;
  • }
  • if(choixColonne - 3 < 0){
  • limite2 = 1;
  • }
  • for(i = 2; i<5; i++){
  • if(position.actuelle == grille[hauteurColonne[choixColonne]+i][choixColonne]){
  • pionsIdentiques.verticale+=1;
  • }
  • }
  • for(i = 1; i<4; i++){
  • if(position.actuelle == grille[hauteurColonne[choixColonne]+1][choixColonne+i]){
  • if(!limite){
  • pionsIdentiques.horizontale +=1;
  • }
  • }
  • if(position.actuelle == grille[hauteurColonne[choixColonne]+1][choixColonne-i]){
  • if(!limite2){
  • pionsIdentiques.horizontale2 +=1;
  • }
  • }
  • if( position.actuelle == position.droite && position.actuelle == position.droite2 && position.actuelle == position.gauche){
  • pionsIdentiques.horizontale = RANGEE_COMPLETE ;
  • }
  • if( position.actuelle == position.droite && position.actuelle == position.gauche2 && position.actuelle == position.gauche){
  • pionsIdentiques.horizontale = RANGEE_COMPLETE ;
  • }
  • }
  • if(pionsIdentiques.horizontale == RANGEE_COMPLETE || pionsIdentiques.verticale == RANGEE_COMPLETE || pionsIdentiques.horizontale2 == RANGEE_COMPLETE ){
  • victoire = TRUE;
  • }
  • return victoire;
  • }
  • void menuPrincipal()
  • {
  • printf(" PUISSANCE 4\n\n");
  • printf(" %c Joueur 1\n %c Joueur 2\n", 1, 2);
  • }
  • void finJeu(int victoire, int tour)
  • {
  • if(!victoire){
  • printf("\n VOUS AVEZ REMPLI LA GRILLE\n\n");
  • }
  • else{
  • printf(" Le joueur %ld remporte la partie.\n\n", tour+1);
  • }
  • }
#include <stdio.h>
#include <stdlib.h>
#define RANGEE_COMPLETE 4
#define TRUE 1
#define FALSE 0
#define LARGEUR 7
#define HAUTEUR 6


void afficherGrille(int grille[HAUTEUR][LARGEUR]);
void modifierGrille(int choixColonne, int hauteurColonne[], int grille[HAUTEUR][LARGEUR], int tour, int *pointeurTour);
int menu();
int definirJoueur(int tour);
int tableauRempli(int hauteurColonne[], int *pointeurTour);
int verifierGagnant( int grille[HAUTEUR][LARGEUR], int choixColonne, int hauteurColonne[]);
void menuPrincipal();
void finJeu(int victoire, int tour);

int main()
{
    int grille[HAUTEUR][LARGEUR] = {0};     //grille[i][j]
    int i;
    int choixColonne = 0;
    int tour = 1;
    int victoire = 0;
    int hauteurColonne[LARGEUR];
    for(i = 0; i!=LARGEUR; i++){
    hauteurColonne[i] = 5;}

        menuPrincipal();
do{
    afficherGrille(grille);
    tour = definirJoueur(tour);
    choixColonne = menu();
    modifierGrille(choixColonne, hauteurColonne, grille, tour, &tour);
    if(hauteurColonne[choixColonne]>=0){
    hauteurColonne[choixColonne]--;
    victoire = verifierGagnant(grille, choixColonne, hauteurColonne);
    }
    else{
    tour++;
    }}
    while(!tableauRempli(hauteurColonne, &tour) && !victoire);

    afficherGrille(grille);
    finJeu(victoire, tour);

    return main();
}


void modifierGrille(int choixColonne, int hauteurColonne[], int grille[HAUTEUR][LARGEUR], int tour, int *pointeurTour)
{
    int i;
    int j;

    for(i = 0; i!=6; i++)
    {
        for(j = 0; j!=10; j++)
        {
            if(choixColonne == j)
            {
                if(hauteurColonne[j] >= 0)           //éviter le débordement de pions sur le haut [0][j]
                {
                if(tour) //boléen 1/0
                {
                grille[hauteurColonne[j]][j] = 2; //Pion ?
                }
                else
                {
                    grille[hauteurColonne[j]][j] = 1; //Pions ?
                }
                }
                else if(!i)            //Pour implémenter une fois à l'intérieur de la boucle.
                    {
                    *pointeurTour+=0;//on incrémente la variable associé au pointeur  //FACULTATIF *ponteurTour+=1; en fonction des modif code;
                    }                         //pour éviter le décalage du nombre de pion en cas de mauvaise saisie
}}}}

int menu()
{
    int choix;
    printf("\nDans quelle colonne souhaitez vous placer un pion ?       ");
    scanf("%ld", &choix);
    if(choix > LARGEUR || choix < 1)
    {
        printf("La valeur doit etre comprise entre 1 et 7.\n");
        return menu();
    }
    return choix-1; // 1 = 0 & Jmin = 0
}

void afficherGrille(int grille[HAUTEUR][LARGEUR])
{
    int i;
    int j;

    for(i = 0; i!=6; i++)
    {
        printf("                       ");
        for(j = 0; j!=LARGEUR; j++)
        {
            switch(grille[i][j]) {
		case 2 :  printf("%c", 2);
		    break;
		case 1 :  printf("%c", 1);
		    break ;
        case 3 :  printf("%c", 3);
		    break ;
        case 4 :  printf("%c", 4);
		    break ;
		default : printf(".");
		    break ;
	    }
        }
        printf("\n");
    }
}

int definirJoueur(int tour)
{
    return (tour+1)%2; //renvoie 0 ou 1
}

int tableauRempli(int hauteurColonne[], int *pointeurTour)
{
    int resultat = 0;
    int i;
    const int limite = -1;


    for(i = 0; i<LARGEUR; i++)
    {
        if(hauteurColonne[i] == limite && hauteurColonne[i+1] == limite && hauteurColonne[i+2] == limite && hauteurColonne[i+3] == limite && hauteurColonne[i+4] == limite && hauteurColonne[i+5] == limite && hauteurColonne[i+6] == limite)
        {
            resultat = 1;
        }
    }
    printf("\n");
    return resultat;
}

int verifierGagnant( int grille[HAUTEUR][LARGEUR], int choixColonne, int hauteurColonne[])
{
    typedef struct  Valeur Valeur;
    typedef struct NbrPionsIdentiques NbrPionsIdentiques;
    struct Valeur
{
    int actuelle;
    int droite;
    int gauche;
    int droite2;
    int gauche2;

    int hautGauche;
    int hautDroite;
    int basGauche;
    int basDroite;
};

    struct NbrPionsIdentiques
    {
        int horizontale;
        int horizontale2;
        int verticale;
    };

    Valeur position;
    position.actuelle = grille[hauteurColonne[choixColonne]+1][choixColonne];
    position.droite = grille[hauteurColonne[choixColonne]+1][choixColonne+1];
    position.gauche = grille[hauteurColonne[choixColonne]+1][choixColonne-1];
    position.droite2 = grille[hauteurColonne[choixColonne]+1][choixColonne+2];
    position.gauche2 = grille[hauteurColonne[choixColonne]+1][choixColonne-2];/*
    position.hautGauche =  grille[hauteurColonne[choixColonne]+2][choixColonne-1];
    position.hautDroite =  grille[hauteurColonne[choixColonne]+2][choixColonne+1];
    position.basGauche =  grille[hauteurColonne[choixColonne]][choixColonne-1];
    position.basDroite =  grille[hauteurColonne[choixColonne]+2][choixColonne+1];*/

    NbrPionsIdentiques pionsIdentiques;
    pionsIdentiques.horizontale = 1;
    pionsIdentiques.horizontale2 = 1;
    pionsIdentiques.verticale = 1;

    int i, j;
    int victoire = FALSE;
    int limite = 0;
    int limite2 = 0;

                if(choixColonne+4 > LARGEUR){
                   limite = 1;
                }
                if(choixColonne - 3 < 0){
                   limite2 = 1;
                }

       for(i = 2; i<5; i++){
           if(position.actuelle == grille[hauteurColonne[choixColonne]+i][choixColonne]){
               pionsIdentiques.verticale+=1;
           }
       }

        for(i = 1; i<4; i++){
           if(position.actuelle == grille[hauteurColonne[choixColonne]+1][choixColonne+i]){
               if(!limite){
               pionsIdentiques.horizontale +=1;
               }
           }
           if(position.actuelle == grille[hauteurColonne[choixColonne]+1][choixColonne-i]){
                              if(!limite2){
               pionsIdentiques.horizontale2 +=1;
               }
           }
           if( position.actuelle == position.droite && position.actuelle == position.droite2 && position.actuelle == position.gauche){
               pionsIdentiques.horizontale = RANGEE_COMPLETE ;
           }
           if( position.actuelle == position.droite && position.actuelle == position.gauche2 && position.actuelle == position.gauche){
               pionsIdentiques.horizontale = RANGEE_COMPLETE ;
           }
           }

       if(pionsIdentiques.horizontale == RANGEE_COMPLETE  || pionsIdentiques.verticale == RANGEE_COMPLETE || pionsIdentiques.horizontale2 == RANGEE_COMPLETE ){
       victoire = TRUE;
   }
   return victoire;
}

void menuPrincipal()
{
    printf("                      PUISSANCE 4\n\n");
    printf("                                      %c  Joueur 1\n                                      %c  Joueur 2\n", 1, 2);
}

void finJeu(int victoire, int tour)
    {
        if(!victoire){
        printf("\n                                            VOUS AVEZ REMPLI LA GRILLE\n\n");
    }
    else{
        printf("                                               Le joueur %ld remporte la partie.\n\n", tour+1);
    }
    }

 Conclusion

Compliqué.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   puissanceQuatre
    •   bin
      •   Debug
        • puissanceQuatre(exe)Télécharger ce fichier [Réservé aux membres club]26 060 octets
    •   obj
      •   Debug
        • main.oTélécharger ce fichier [Réservé aux membres club]10 454 octets
    • main.cTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 430 octets
    • main.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 416 octets
    • puissanceQuatre.cbpTélécharger ce fichier [Réservé aux membres club]1 084 octets
    • puissanceQuatre.dependTélécharger ce fichier [Réservé aux membres club]126 octets
    • puissanceQuatre.layoutTélécharger ce fichier [Réservé aux membres club]239 octets
    • puissanceQuatre.layout.backupTélécharger ce fichier [Réservé aux membres club]241 octets

Télécharger le zip


 Historique

27 avril 2010 22:36:17 :
Oublie.

 Sources du même auteur

Source avec Zip Source avec une capture JEU : ATTRAPE MOI !

 Sources de la même categorie

Source avec Zip [VBA] TOWER BATTLE 4 par Softmama
Source avec Zip Source avec une capture [VBA] TOWER BATTLE 3 par Softmama
Source avec Zip Source avec une capture Source .NET (Dotnet) XBOXLIVE AVATAR DOWNLOAD par quentinix
Source avec Zip Source avec une capture Source .NET (Dotnet) GÉNÉRATEUR DE GRILLES DE MOTS MÉLÉS par ardeliner
Source avec Zip HUTOWERS JEU DE CARTES SIMILAIRE AU VIEIL ADATOWERS QUI NE M... par roudoudou2708

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SOKOBAN EN C POUR DÉBUTANT (VERSION AMÉLIORÉE BASÉE SUR LE T... par eustatika
Source avec Zip Source avec une capture PUISSANCE 4 OPENGGL AVEC IA MIN_MAX ET ALPHA-BETA par _Jonathan
Source avec Zip Source avec une capture PUISSANCE 4 EN 2D (C / SDL) par Spypunk
Source avec Zip PUISSANCE 4 par professeurr
PUISSANCE 4 [BC++, DEV-C++] par ManDeq59

Commentaires et avis

Commentaire de yrt007 le 29/04/2010 18:58:24

code sympa pour apprendre !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

puissance4 en POO [ par pomette ] quelqu'un pourrait il m'aider ou me dire ou je peux m' inspirer d'un puissance 4 en Prog Orientee Objet?En faisant des classes...mais un puissance 4 t Puissance 4 [ par SaucisseLili ] je dois programmer un puissance 4, et je dois commencer par réaliser une classe pion représentant un pion et le temps auquel il a été placé dans la gr Quarto [ par heydoux ] Bonjour! Ce serais juste pour savoir si quelqu'un ici aurais par hasard le code source du jeu quarto ou une partie!Je suis a la recherche du code de c jeu "chiffre exact" [ par zkenpachi ] salut tout le monde j'aimerais bien que vous m'aidiez a  réalisé  un projet il s'agit du jeu "chiffre exact" je sais même pas de quoi je vais commence jeu [ par aperezgo ] cherche personne sachant programmer pour creer un jeu en ligne mercitout ce qui savent programmer son inviter Calcul d'une puissance en C avec pow() [ par Smallstones2 ] Bonjour, pourriez vous m'aider. Voici mon programme mais celui ci ne marche pas: #include #include main () { float x, y,z; printf ("Entrez x : " Appel d'une fonction langage c [ par BenoitGironde ] Excusez-moi j'ai oublié de poster mon travail. <font Découlement de secondes [ par nine1710 ] J'ai besoin d'aide s'il vous plait.Je crée un jeu pour mes études en C++ .Mon jeu correspond à des questions auxquelles il faut répondre.Je souhaitera Puissance 4 [ par ziad91 ] Bonjour,jedoit réalisé un puissance 4 avec le choix de jouer a 2 joueurs ou contre une IA. J'ai bientot fini le 2 joueurs mais le problème c'est que a


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,608 sec (3)

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