Puissance 4

Soyez le premier à donner votre avis sur cette source.

Vue 8 528 fois - Téléchargée 616 fois

Description

jeu du puissance 4 pour 2 joueurs

Source / Exemple :



  • Déclaration des différentes librairies utilisées:
notamment iostream pour "cout" , "cin", ... stdio pour "gets"
  • /
#include<iostream.h> #include<stdio.h> void main() { // Déclaration des differentes variables utilisées pour le programme : char nom1[20], nom2[20] ; int i,j,num; int h0,h1,h2,h3,h4,h5,h6,h7,h8,h9,num1; int jeu[10][10]; int gagne , gagne2; //initialisation de certaines variables: gagne=0;gagne2=0; h0=0;h1=0;h2=0;h3=0;h4=0;h5=0;h6=0;h7=0;h8=0;h9=0; //Affichage de la premiere page: cout<<" \02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\n"; cout<<" \02 \02\n"; cout<<" \02 \02\n"; cout<<" \02 BIENVENUE DANS LE PUISSANCE 4 \02\n"; cout<<" \02 \02\n"; cout<<" \02 DE LA FAB's COMPAGNIE \02\n"; cout<<" \02 \02\n"; cout<<" \02 !!!!!!!!!!!!!!!! \02\n"; cout<<" \02 \02\n"; cout<<" \02 \02\n"; cout<<" \02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\n"; //Saisie des noms des deux joueurs: cout<<"\n\n\n\nQuel est votre nom?\n"; gets (nom1); cout<<"Quel est votre nom?\n"; gets (nom2); //initialisation du tableau, toutes les cases ont pour valeur 0, soit cases vides for(i=0;i<10;i++) { for(j=0;j<10;j++) { jeu[i][j]=0; } } //Affichage du plateau de jeu vide cout<<"0 1 2 3 4 5 6 7 8 9\n\n"; for(j=9;j>=0;j--) { for(i=0;i<10;i++) { cout<<jeu[i][j]<<" "; } cout<<"\n"; } cout<<"\n0 1 2 3 4 5 6 7 8 9\n"; //Tant qu' un joueur n'a pas gagné le pgm demande de jouer do { do { //Saisie de la colonne à jouer: cout<<"a vous de jouer "<<nom1<<",donner un numero de colonne (de 0 a 9):"; cin>> num; cout<<"\n"; //Test sur la hauteur des colonnes , si elles sont remplioes ou non: if(( num==0 && h0>9 )|| (num==1 && h1>9) || (num==2 && h2>9) || (num==3 && h3>9) || (num==4 && h4>9 )||( num==5 && h5>9) || (num==6 && h6>9 )|| (num==7 && h7>9 )|| (num==8 && h8>9 )||( num==9 && h9>9) ) { cout<<"la colonne "<<num<<" est pleine, "<<nom1<<" donner un numero de colone autre que "<<num<<"\n"; //Dans le cas ou la colonne est pleine, numvaut -1 ainsi retour à la demande grace aux " do while" num = -1; } // Test sur valeur donnée par le joueur, demande de rejouer si la valeur est inférieure à 0: }while(num<0 || num>9); //Donne la valeur 1 à la case jouée par le joueur 1: if(num==0) jeu[num][h0]=1; if(num==1) jeu[num][h1]=1; if(num==2) jeu[num][h2]=1; if(num==3) jeu[num][h3]=1; if(num==4) jeu[num][h4]=1; if(num==5) jeu[num][h5]=1; if(num==6) jeu[num][h6]=1; if(num==7) jeu[num][h7]=1; if(num==8) jeu[num][h8]=1; if(num==9) jeu[num][h9]=1; //Vérification horizontale pour savoir si le joueur a gagné: //On balaye toutes les lignes de 0 à 9 en vérifiant 4 cases à chaque fois //Si 4 cases qui se suivent valent 1 alors gagne vaut 1 for(i=0;i<7;i++) { for(j=0;j<10;j++) { if(jeu[i][j]==1 && jeu[i+1][j]==1 && jeu[i+2][j]==1 && jeu[i+3][j]==1) gagne=1; } } //Vérification verticale pour savoir si le joueur a gagné: //On balaye toutes les colonnes de 0 à 9 en vérifiant 4 cases à chaque fois //Si 4 cases qui se suivent valent 1 alors gagne vaut 1 for(i=0;i<10;i++) { for(j=0;j<7;j++) { if(jeu[i][j]==1 && jeu[i][j+1]==1 && jeu[i][j+2]==1 && jeu[i][j+3]==1) gagne=1; } } //Vérification diagonale (en bas à gauche vers en haut à droite) pour savoir si le joueur a gagné: //On balaye toutes les diagonales de cette direction en vérifiant 4 cases à chaque fois //Si 4 cases qui se suivent valent 1 alors gagne vaut 1 for(i=0;i<10;i++) { for(j=0;j<10;j++) { if(jeu[i][j]==1 && jeu[i+1][j+1]==1 && jeu[i+2][j+2]==1 && jeu[i+3][j+3]==1) gagne=1; } } //Vérification diagonale (en bas à droite vers en haut à gauche) pour savoir si le joueur a gagné: //On balaye toutes les diagonales de cette direction en vérifiant 4 cases à chaque fois //Si 4 cases qui se suivent valent 1 alors gagne vaut 1 for(j=0;j<10;j++) { for(i=9;i>=0;i--) { if(jeu[i][j]==1 && jeu[i-1][j+1]==1 && jeu[i-2][j+2]==1 && jeu[i-3][j+3]==1) gagne=1; } } //Affichage: cout<<"0 1 2 3 4 5 6 7 8 9\n\n"; for(j=9;j>=0;j--) { for(i=0;i<10;i++) { cout<<jeu[i][j]<<" "; } cout<<"\n"; } cout<<"\n0 1 2 3 4 5 6 7 8 9\n"; //on incrémente la hauteur d'une colonne à chaque fois que celle si est jouée: if(num==0) jeu[num][h0++]; if(num==1) jeu[num][h1++]; if(num==2) jeu[num][h2++]; if(num==3) jeu[num][h3++]; if(num==4) jeu[num][h4++]; if(num==5) jeu[num][h5++]; if(num==6) jeu[num][h6++]; if(num==7) jeu[num][h7++]; if(num==8) jeu[num][h8++]; if(num==9) jeu[num][h9++]; //test pour savoir si le joueur 1 a gagné , si c est le cas alors arret du pgm grace au break: if(gagne==1) { cout<<"\01"<<nom1<<" a gagne!!!\01\n"; break; } do { cout<<"a vous de jouer "<<nom2<<",donner un numero de colonne (de 0 a 9):"; cin>> num1; cout<<"\n"; if(( num==0 && h0>9 )|| (num==1 && h1>9) || (num==2 && h2>9) || (num==3 && h3>9) || (num==4 && h4>9 )||( num==5 && h5>9) || (num==6 && h6>9 )|| (num==7 && h7>9 )|| (num==8 && h8>9 )||( num==9 && h9>9) ) { cout<<"la colonne "<<num<<" est pleine, "<<nom2<<" donner un numero de colone autre que "<<num<<"\n"; num=-1; } }while(num<0 || num>9 ); if(num1==0) jeu[num1][h0]=2; if(num1==1) jeu[num1][h1]=2; if(num1==2) jeu[num1][h2]=2; if(num1==3) jeu[num1][h3]=2; if(num1==4) jeu[num1][h4]=2; if(num1==5) jeu[num1][h5]=2; if(num1==6) jeu[num1][h6]=2; if(num1==7) jeu[num1][h7]=2; if(num1==8) jeu[num1][h8]=2; if(num1==9) jeu[num1][h9]=2; for(i=0;i<7;i++) { for(j=0;j<10;j++) { if(jeu[i][j]==2 && jeu[i+1][j]==2 && jeu[i+2][j]==2 && jeu[i+3][j]==2) gagne2=2; } } for(i=0;i<10;i++) { for(j=0;j<7;j++) { if(jeu[i][j]==2 && jeu[i][j+1]==2 && jeu[i][j+2]==2 && jeu[i][j+3]==2) gagne2=2; } } for(i=0;i<10;i++) { for(j=0;j<10;j++) { if(jeu[i][j]==2 && jeu[i+1][j+1]==2 && jeu[i+2][j+2]==2 && jeu[i+3][j+3]==2) gagne2=2; } } for(j=0;j<10;j++) { for(i=9;i>=0;i--) { if(jeu[i][j]==2 && jeu[i-1][j+1]==2 && jeu[i-2][j+2]==2 && jeu[i-3][j+3]==2) gagne2=2; } } cout<<"0 1 2 3 4 5 6 7 8 9\n\n"; for(j=9;j>=0;j--) { for(i=0;i<10;i++) { cout<<jeu[i][j]<<" "; } cout<<"\n"; } cout<<"\n0 1 2 3 4 5 6 7 8 9\n"; if(gagne2==2) { cout<<"\01"<<nom2<<" a gagne!!!\01\n"; break; } if(num1==0) jeu[num1][h0++]; if(num1==1) jeu[num1][h1++]; if(num1==2) jeu[num1][h2++]; if(num1==3) jeu[num1][h3++]; if(num1==4) jeu[num1][h4++]; if(num1==5) jeu[num1][h5++]; if(num1==6) jeu[num1][h6++]; if(num1==7) jeu[num1][h7++]; if(num1==8) jeu[num1][h8++]; if(num1==9) jeu[num1][h9++]; //le programme s arrete qd un des deux joueur à gagner: }while(gagne!=1 || gagne2!=2); }

Conclusion :


desolé pas de fonctions!!!!
mais ya un peu de commentaires!!! ;)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Fabi1
Messages postés
8
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
8 juin 2005

jeu[num1][h2] = jeu[num1][h2+1]...
cs_Arnotic
Messages postés
936
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012

"jeu[num1][h2++] est équivalente à jeu[num1][h2 +1]" : FAUX !

jeu[num1][h2++] dans ce cas on travail sur jeu[num1][h2] et après on incrémente de 1 h2
jeu[num1][h2 +1] dans ce cas on travail bien sur l'index h2+1 mais h2 ne sera jamais incrémenté
cs_Fabi1
Messages postés
8
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
8 juin 2005

Salut,

Ce code date...il est vraiment très perfectible!!!

Cette instruction jeu[num1][h2++] est équivalente à jeu[num1][h2 +1], c'est juste une incrémentation de 1. On peut également faire ++variable!

Si tu as du temps tu devrais découper ce programme en fonction, ajouter de l'objet, permettre de jouer en réseau et ajouter de l'IA!!! ;)

Bonne continuation!
cppmaster93
Messages postés
4
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
23 mai 2008

Salut,

un petit problème que j'ai avec la comprehension de ton code source par contre (ça fait plus d'une heure que je l'analyse sous tous les angles et je n'arrive toujours pas à comprendre ce que fait cette ligne, je sais que j'ai encore beaucoup à apprendre :-/) :

jeu[num1][h2++];

A quoi ça correspond exactement ?
Merci d'avance ;-) ;-) ;-)
cppmaster93
Messages postés
4
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
23 mai 2008

Bonjour,

un jeu excellent qui vient de nous procurer à moi et à mes amis des heures de plaisir fou :-)
Bravo pour cette source, il y a bien deux ou trois choses à améliorer mais pour un programme aussi complexe ce n'est pas étonnant.
Tu devrais ajouter un lien paypal pour faire un don à la Fab's Compagnie, au moins on saurait que notre argent est dépensé à bon escient ;-)

Encore merci, tu as illuminé ma soirée.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.