Accueil > Forum > > > > Puissance 4
Puissance 4
dimanche 14 décembre 2008 à 13:35:19 |
Puissance 4

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 au lieu de jouer l'un àprès l'autre, c'est le premier joueur qui joue tout le temps et aprés qu'il a gagné c'est le deuxième joueur qui joue. SVP de l'aide
|
|
dimanche 14 décembre 2008 à 13:56:31 |
Re : Puissance 4

Lemng
|
C'est probablement un problème de boucle mais tu devrais nous montrer ton code source
bonne journée
|
|
dimanche 14 décembre 2008 à 14:22:53 |
Re : Puissance 4

ziad91
|
#include <stdio.h> #include <stdlib.h> #include <time.h> /* Début du programme principal */ int main() {/*Déclaration des variables */ char tab[6][6]; char X='X'; char O='O'; int i,j,C1,C2,L0,L1,L2; int L3,L4,L5,gagn1,gagn2; char choix=0; printf("Veuillez choisir un mode de jeux entre:\n"); printf("Deux joueurs: Joueur 1 Vs Joueur 2 -> 1"); printf("\nUn joueur: Joueur 1 Vs Ordi --------> 2\n"); choix=getchar(); switch(choix) { case '1' :{ char J1[20], J2[20]; /*Saisie des noms des deux joueurs: */ printf("Vous avez choisi de jouer a deux joueurs"); printf("\nEntrez le nom du joueur 1: "); scanf("%s",&J1); printf("\nEntrez le nom du joueur 2: "); scanf("%s",&J2); printf("\nLe combat oppose %s Vs %s",J1,J2); {/* Initialisation du tableau toutes les cases affichent des espaces*/ for (i = 0; i < 6; i++) for (j = 0; j < 6; j++) tab[i][j] = ' '; { /*Affichage du plateau de jeu vide*/ printf("| 0 | 1 | 2 | 3 | 4 | 5 |\n"); printf("| | | | | | |\n"); } { for(j=0;j<6;j++) for(i=0;i<6;i++) printf("| %c ",tab[i][j]); { printf("|\n"); printf("| | | | | | |\n"); } printf("\n| 0 | 1 | 2 | 3 | 4 | 5 |\n\n"); } } do { /*Le 1er joueur joue*/ do { L0=0;L1=0;L2=0;L3=0;L4=0;L5=0; printf("A vous de jouer %s, donner un numero de colonne (de 0 à 5):\n",J1); scanf("%d",&C1); /*Test sur la hauteur des colonnes, si elle sont remplies ou non*/ if((C1==0 && L0>5)|| (C1==1 && L1>5) || (C1==2 && L2>5) || (C1==3 && L3>5) || (C1==4 && L4>5) || (C1==5 && L5>5)) { printf("\nDesole %s mais, la colonne %d est pleine, veuillez donner un autre numero de colone\n",J1,C1); C1=-1; } } while(C1<0 || C1>5); /*Donne le caractère X à la case jouée par le 1er joueur*/ { if(C1==0) tab[C1][L0]='X'; if(C1==1) tab[C1][L1]='X'; if(C1==2) tab[C1][L2]='X'; if(C1==3) tab[C1][L3]='X'; if(C1==4) tab[C1][L4]='X'; if(C1==5) tab[C1][L5]='X'; } /*Vérification horizontale pour savoir si le joueur a gagné: on balaye toutes les lignes de 0 à 5 en vérifiant 4 cases à chaque fois Si 4 cases qui se suivent sont à X alors gagne prend pour valeur 1*/ for(i=0;i<3;i++) { for(j=0;j<6;j++) { if(tab[i][j]=='X' && tab[i+1][j]=='X' && tab[i+2][j]=='X' && tab[i+3][j]=='X') gagn1=1; } } /*Même chose mais verticalement maintenant*/ for(i=0;i<6;i++) { for(j=0;j<3;j++) { if(tab[i][j]=='X' && tab[i][j+1]=='X' && tab[i][j+2]=='X' && tab[i][j+3]=='X') gagn1=1; } } /*Et diagonale bas gauche vers haut droit*/ for(i=0;i<6;i++) { for(j=0;j<6;j++) { if(tab[i][j]=='X' && tab[i+1][j+1]=='X' && tab[i+2][j+2]=='X' && tab[i+3][j+3]=='X') gagn1=1; } } /*Même chose pour les diagonales bas droite vers haut gauche*/ for(j=0;j<3;j++) { for(i=5;i>=0;i--) { if(tab[i][j]=='X' && tab[i-1][j+1]=='X' && tab[i-2][j+2]=='X' && tab[i-3][j+3]=='X') gagn1=1; } } /* Affichage de la grille */ printf("| 0 | 1 | 2 | 3 | 4 | 5 |\n"); printf("| | | | | | |\n"); for(j=5;j>=0;j--) { for(i=0;i<6;i++) { printf("| %c ",tab[i][j]); } printf("|\n"); printf("| | | | | | |\n"); } printf("\n| 0 | 1 | 2 | 3 | 4 | 5 |\n\n"); /* On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:*/ if(C1==0) tab[C1][L0++]; if(C1==1) tab[C1][L1++]; if(C1==2) tab[C1][L2++]; if(C1==3) tab[C1][L3++]; if(C1==4) tab[C1][L4++]; if(C1==5) tab[C1][L5++]; /*Test pour savoir si le joueur 1 a gagné, si c'est le cas alors arret de la boucle*/ if(gagn1==1) { printf("Le gagnant est %s!!!\n",J1); break; } } while(tab[i][j]==' '); /*On recommence pour le joueur 2*/ do { /*Le 2eme joueur joue*/ do { L0=0;L1=0;L2=0;L3=0;L4=0;L5=0; printf("A vous de jouer %s, donner un numero de colonne (de 0 à 5):\n",J2); scanf("%d",&C2); /*Test sur la hauteur des colonnes, si elle sont remplies ou non*/ if((C2==0 && L0>5)|| (C2==1 && L1>5) || (C2==2 && L2>5) || (C2==3 && L3>5) || (C2==4 && L4>5) || (C2==5 && L5>5)) { printf("\nDesole %s mais, la colonne %d est pleine, veuillez donner un autre numero de colone\n",J2,C2); C2=-1; } } while(C2<0 || C2>5); /*Donne le caractère O à la case jouée par le 2eme joueur*/ if(C2==0) tab[C2][L0]='O'; if(C2==1) tab[C2][L1]='O'; if(C2==2) tab[C2][L2]='O'; if(C2==3) tab[C2][L3]='O'; if(C2==4) tab[C2][L4]='O'; if(C2==5) tab[C2][L5]='O'; /*Vérification horizontale pour savoir si le joueur a gagné: on balaye toutes les lignes de 0 à 5 en vérifiant 4 cases à chaque fois Si 4 cases qui se suivent sont à O alors gagn2 prend pour valeur 1*/ for(i=0;i<3;i++) { for(j=0;j<6;j++) { if(tab[i][j]=='O' && tab[i+1][j]=='O' && tab[i+2][j]=='O' && tab[i+3][j]=='O') gagn2=1; } } /*Même chose mais verticalement maintenant*/ for(i=0;i<6;i++) { for(j=0;j<3;j++) { if(tab[i][j]=='O' && tab[i][j+1]=='O' && tab[i][j+2]=='O' && tab[i][j+3]=='O') gagn2=1; } } /*Et diagonale bas gauche vers haut droit*/ for(i=0;i<6;i++) { for(j=0;j<6;j++) { if(tab[i][j]=='O' && tab[i+1][j+1]=='O' && tab[i+2][j+2]=='O' && tab[i+3][j+3]=='O') gagn2=1; } } /*Même chose pour les diagonales bas droite vers haut gauche*/ for(j=0;j<3;j++) { for(i=5;i>=0;i--) { if(tab[i][j]=='O' && tab[i-1][j+1]=='O' && tab[i-2][j+2]=='O' && tab[i-3][j+3]=='O') gagn2=1; } } /* Affichage de la grille */ printf("| 0 | 1 | 2 | 3 | 4 | 5 |\n"); printf("| | | | | | |\n"); for(j=5;j>=0;j--) { for(i=0;i<6;i++) { printf("| %c ",tab[i][j]); } printf("|\n"); printf("| | | | | | |\n"); } printf("\n| 0 | 1 | 2 | 3 | 4 | 5 |\n\n"); /* On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:*/ if(C2==0) tab[C2][L0++]; if(C2==1) tab[C2][L1++]; if(C2==2) tab[C2][L2++]; if(C2==3) tab[C2][L3++]; if(C2==4) tab[C2][L4++]; if(C2==5) tab[C2][L5++]; /*Test pour savoir si le joueur 1 a gagné, si c'est le cas alors arret de la boucle*/ if(gagn2==1) { printf("Le gagnant est %s!!!\n",J2); break; } } while(tab[i][j]==' '); break; } default : printf("Erreur de saisie du choix!"); } return 0; }
|
|
dimanche 14 décembre 2008 à 23:55:02 |
MAJ code source

ziad91
|
#include <stdio.h> #include <stdlib.h> #include <time.h> //Début du programme principal int main() {//Déclaration des variables char tab[8][6]; char X='X'; char O='O'; int i,j,C1,C2,L0,L1,L2,L3,L4,L5; int gagn1=0; int gagn2=0; int jeux=0; char L,x; char choix=0; printf("Veuillez choisir un mode de jeux entre:\n"); printf("Deux joueurs: Joueur 1 Vs Joueur 2 -> 1"); printf("\nUn joueur: Joueur 1 Vs Ordi --------> 2\n"); choix=getchar(); switch(choix) { case '1' :{ char J1[20], J2[20]; //Saisie des noms des deux joueurs: printf("Vous avez choisi de jouer a deux joueurs"); printf("\nEntrez le nom du joueur 1: "); scanf("%s",&J1); printf("\nEntrez le nom du joueur 2: "); scanf("%s",&J2); printf("\nLe combat oppose %s Vs %s\n",J1,J2); {//Initialisation du tableau toutes les cases affichent des espaces for (i = 0; i < 8; i++) for (j = 0; j < 6; j++) tab[i][j] = ' '; { //Affichage du plateau de jeu vide printf("| | 0 | 1 | 2 | 3 | 4 | 5 | |\n"); printf("---------------------------------\n"); printf("| a | | | | | | | a |\n"); printf("---------------------------------\n"); printf("| b | | | | | | | b |\n"); printf("---------------------------------\n"); printf("| c | | | | | | | c |\n"); printf("---------------------------------\n"); printf("| d | | | | | | | d |\n"); printf("---------------------------------\n"); printf("| e | | | | | | | e |\n"); printf("---------------------------------\n"); printf("| f | | | | | | | f |\n"); printf("---------------------------------"); } { for(i=0;i<8;i++) for(j=0;j<6;j++) { if(j=0) x='a'; if(j=1) x='b'; if(j=2) x='c'; if(j=3) x='d'; if(j=4) x='e'; if(j=5) x='f'; } printf("| %c |",tab[i][j]); printf("| | 0 | 1 | 2 | 3 | 4 | 5 | |\n"); printf("---------------------------------\n"); } } do { //Le 1er joueur joue do { L0=0;L1=0;L2=0;L3=0;L4=0;L5=0; printf("A vous de jouer %s, donner une lettre de ligne (de a à f) et un numero de colonne (de 1 à 6):\n",J1); scanf("&c%d",&L,&C1); //Test sur la hauteur des colonnes, si elle sont remplies ou non if((C1==1 && L0>5)|| (C1==2 && L1>5) || (C1==3 && L2>5) || (C1==4 && L3>5) || (C1==5 && L4>5) || (C1==6 && L5>5)) { printf("\nDesole %s mais, la colonne %d est pleine, veuillez donner un autre numero de colone\n",J1,C1); C1=-1; } } while((C1<1 || C1>6)); //Donne le caractère X à la case jouée par le 1er joueur { if(C1==1) tab[C1][L0]='X'; if(C1==2) tab[C1][L1]='X'; if(C1==3) tab[C1][L2]='X'; if(C1==4) tab[C1][L3]='X'; if(C1==5) tab[C1][L4]='X'; if(C1==6) tab[C1][L5]='X'; } //On incremente la hauteur d'une colonne à chaque fois que celle si est jouée: if(C1==1) tab[C1][L0++]; if(C1==2) tab[C1][L1++]; if(C1==3) tab[C1][L2++]; if(C1==4) tab[C1][L3++]; if(C1==5) tab[C1][L4++]; if(C1==6) tab[C1][L5++]; //Affichage de la grille printf("| | 0 | 1 | 2 | 3 | 4 | 5 | |\n"); for(j=5;j>=0;j--) { for(i=0;i<8;i++) { tab[0][5]=tab[7][5]='a'; tab[0][4]=tab[7][4]='b'; tab[0][3]=tab[7][3]='c'; tab[0][2]=tab[7][2]='d'; tab[0][1]=tab[7][1]='e'; tab[0][0]=tab[7][0]='f'; printf("| %c ",tab[i][j]); } printf("|\n"); } printf("| | 0 | 1 | 2 | 3 | 4 | 5 | |\n\n"); /*Vérification horizontale pour savoir si le joueur a gagné: on balaye toutes les lignes de 0 à 5 en vérifiant 4 cases à chaque fois Si 4 cases qui se suivent sont à X alors gagne prend pour valeur 1*/ for(i=1;i<4;i++) { for(j=0;j<6;j++) { if(tab[i][j]=='X' && tab[i+1][j]=='X' && tab[i+2][j]=='X' && tab[i+3][j]=='X') gagn1=1; } } //Même chose mais verticalement maintenant for(i=1;i<7;i++) { for(j=0;j<3;j++) { if(tab[i][j]=='X' && tab[i][j+1]=='X' && tab[i][j+2]=='X' && tab[i][j+3]=='X') gagn1=1; } } //Et diagonale bas gauche vers haut droit for(i=1;i<4;i++) { for(j=0;j<3;j++) { if(tab[i][j]=='X' && tab[i+1][j+1]=='X' && tab[i+2][j+2]=='X' && tab[i+3][j+3]=='X') gagn1=1; } } //Même chose pour les diagonales bas droite vers haut gauche for(j=0;j<3;j++) { for(i=6;i>3;i--) { if(tab[i][j]=='X' && tab[i-1][j+1]=='X' && tab[i-2][j+2]=='X' && tab[i-3][j+3]=='X') gagn1=1; } } //Test pour savoir si le joueur 1 a gagné, si c'est le cas alors arret de la boucle if(gagn1==1) { printf("Le gagnant est %s!!!\n",J1); break; } //On recommence pour le joueur 2 //Le 2eme joueur joue do { L0=0;L1=0;L2=0;L3=0;L4=0;L5=0; printf("A vous de jouer %s, donner une lettre de ligne (de a à f) et un numero de colonne (de 1 à 6):\n",J2); scanf("&c%d",&L,&C2); //Test sur la hauteur des colonnes, si elle sont remplies ou non if((C2==0 && L0>5)|| (C2==1 && L1>5) || (C2==2 && L2>5) || (C2==3 && L3>5) || (C2==4 && L4>5) || (C2==5 && L5>5)) { printf("\nDesole %s mais, la colonne %d est pleine, veuillez donner un autre numero de colone\n",J2,C2); C2=-1; } } while(C2<1 || C2>6); //Donne le caractère O à la case jouée par le 2eme joueur if(C2==0) tab[C2][L0]='O'; if(C2==1) tab[C2][L1]='O'; if(C2==2) tab[C2][L2]='O'; if(C2==3) tab[C2][L3]='O'; if(C2==4) tab[C2][L4]='O'; if(C2==5) tab[C2][L5]='O'; /* On incremente la hauteur d'une colonne à chaque fois que celle si est jouée:*/ if(C2==0) tab[C2][L0++]; if(C2==1) tab[C2][L1++]; if(C2==2) tab[C2][L2++]; if(C2==3) tab[C2][L3++]; if(C2==4) tab[C2][L4++]; if(C2==5) tab[C2][L5++]; /* Affichage de la grille */ printf("| 0 | 1 | 2 | 3 | 4 | 5 |\n"); printf("| | | | | | |\n"); for(j=5;j>=0;j--) { for(i=0;i<6;i++) { printf("| %c ",tab[i][j]); } printf("|\n"); printf("| | | | | | |\n"); } printf("\n| 0 | 1 | 2 | 3 | 4 | 5 |\n\n"); /*Vérification horizontale pour savoir si le joueur a gagné: on balaye toutes les lignes de 0 à 5 en vérifiant 4 cases à chaque fois Si 4 cases qui se suivent sont à O alors gagn2 prend pour valeur 1*/ for(i=0;i<3;i++) { for(j=0;j<6;j++) { if(tab[i][j]=='O' && tab[i+1][j]=='O' && tab[i+2][j]=='O' && tab[i+3][j]=='O') gagn2=1; } } /*Même chose mais verticalement maintenant*/ for(i=0;i<6;i++) { for(j=0;j<3;j++) { if(tab[i][j]=='O' && tab[i][j+1]=='O' && tab[i][j+2]=='O' && tab[i][j+3]=='O') gagn2=1; } } /*Et diagonale bas gauche vers haut droit*/ for(i=0;i<6;i++) { for(j=0;j<6;j++) { if(tab[i][j]=='O' && tab[i+1][j+1]=='O' && tab[i+2][j+2]=='O' && tab[i+3][j+3]=='O') gagn2=1; } } /*Même chose pour les diagonales bas droite vers haut gauche*/ for(j=0;j<3;j++) { for(i=5;i>=0;i--) { if(tab[i][j]=='O' && tab[i-1][j+1]=='O' && tab[i-2][j+2]=='O' && tab[i-3][j+3]=='O') gagn2=2; } } /*Test pour savoir si le joueur 2 a gagné, si c'est le cas alors arret de la boucle*/ if(gagn2==2) { printf("Le gagnant est %s!!!\n",J2); break; } } while(gagn1!=1 || gagn2!=2); break; }
|
|
Cette discussion est classée dans : joueur, jouer, joueurs, puissance, joue
Répondre à ce message
Sujets en rapport avec ce message
je suis desespere... je cherche un puissance 4 en mode 1 joueur IA [ par scorpiwolf ]
Si quelqu'un a un puissance 4 avec intelligence artificielle donc mode 1 joueur, j'aimerai l'avoir come exemple, je vous remercie...
Pb de gestion de nom des joueur [ par sebclick ]
Slt,je debute en c++....je suis en train de créer un petit jeu de pendu....pour vous quel est la meilleure façon pour récuperer le nom des joueurs, sa
Programmation Réseau en c : help ! [ par bubbless ]
Bonjour ! Dans le cadre d'un projet, je souhaiterais creer un système client/serveur en flux simple. Le but est en fait de permettre aux utilisateu
THREAD BLOQUE [ par lillie69 ]
Bonjour, nous sommes en train de coder un jeu en réseau(pour 2 joueurs) et notre problème est qu'on voudrait qu'une fois que le 1er joueur ait joué il
Encore une... "Erreur de segmantation" !! [ par TriFidEly ]
Bonjour,Je suis en train de coder mon premier -vrai- programme, un Othello pour ma L2... mais j'ai un problème à l'exécution : "Une violation d'accès
Comment jouer contre un ordinateur [ par boubou45 ]
Bonjour,J'ai un projet à faire, du moins 2. Je dois ecrire un prog pour le jeu du Puissance 4 et du domino. Le Puissance 4 est bientot fini mais je ne
Puissance 4 - Déterminer le gagnant... [ par mast ]
Bonjour!Je termine un petit jeu de puissance 4 à deux joueurs (pas d'IA). Tout fonctionne à merveille pour l'instant (chaque joueur joue son tour jusq
K_CLOCK [ par sy3ns ]
je voudrais pouvoir afficher le temps que met un joueur pour jouerj'elabore un petit jeule temps commence a défiler(et jaimerais le voir voir avancer)
jouer de l'audio [ par rakyouna ]
Bonjour à tous,J'ai une application dans laquelle je veux ajouter qlq animations audio, par exemple on écoute du son lorsqu'on clique sur un bouton. J
Bataille Navale en réseau avec Thread [ par lillie69 ]
Bonjour,je dois programmer une bataille navale en réseau en utilisant des threads(sous Unix)!J'ai crée les fonctions de ma bataille navale ainsi que m
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|