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

Code

 > 

Jeux

 > PUISSANCE 4 (VISUAL C++)

PUISSANCE 4 (VISUAL C++)


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Jeux Niveau :Débutant Date de création :12/03/2002 Date de mise à jour :04/04/2002 08:50:53 Vu / téléchargé :6 335 / 359

Auteur : Wepawetmose

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

 Description

Encore un jeu? et oui!! Je vous présente mon puissance 4 pour deux, avec une particularité, le jeu ne s'arrête que qand la grille est pleine, et comptabilise le nombre de puissances 4 de chaque joueur. Voili voilou!!...
Prenez le fichier ZIP.
NE FAITES SURTOUT PAS DE COPIER-COLLER!!!

Source

  • #include<iostream.h>
  • #include<conio.h>
  • struct colonne //le jeu est une grille contenant des colonnes
  • {
  • int kaz[8]; //contenant elles-mêmes chacune 8 cases
  • int n; //hauteur des pions dans la colonne
  • };
  • void init(colonne a[])
  • {
  • int i,j;
  • for(i=0;i<10;i++) //la boucle parcourt les 10 colonnes
  • {
  • for(j=0;j<8;j++) a[i].kaz[j]=0;
  • //la valeur de chaque case est initialisée à 0 (=vide)
  • a[i].n=0;
  • //le nombre de pions dans chaque colonne également
  • }
  • }
  • void saisie(colonne a[],int t)
  • {
  • int c;
  • do{
  • cout<<"Joueur "<<t<<", tape la colonne (0-9): ";cin>>c;
  • if(c>9 || c<0 || a[c].n==8)cout<<"colonne invalide!"<<endl;
  • }while(c>9 || c<0 || a[c].n==8);
  • a[c].kaz[a[c].n]=t;
  • //la case prend la valeur du joueur t (1 ou 2)
  • a[c].n++;
  • //le nombre de pions dans la colonne c est incrémenté
  • }
  • int test(colonne a[],int t)
  • //renvoie 1 si 4 pions du même joueur sont alignés, 0 sinon
  • //le jeu est divisé en 4 zones
  • {
  • int i,j;
  • for(i=0;i<10;i++) //pour tester les puissance4 verticaux
  • for(j=0;j<5;j++)
  • if(a[i].kaz[j]==a[i].kaz[j+1] && a[i].kaz[j+1]==a[i].kaz[j+2] && a[i].kaz[j+2]==a[i].kaz[j+3] && a[i].kaz[j+3]==t)
  • {
  • a[i].kaz[j]=-1;a[i].kaz[j+1]=-1;a[i].kaz[j+2]=-1;a[i].kaz[j+3]=-1;
  • return 1;
  • //si puissance 4 il y a, les 4 cases concernées
  • //prennent la valeur -1, on retourne 1
  • }
  • for(i=0;i<7;i++) //pour tester les puissance4 horizontaux
  • for(j=0;j<8;j++)
  • if(a[i].kaz[j]==a[i+1].kaz[j] && a[i+1].kaz[j]==a[i+2].kaz[j] && a[i+2].kaz[j]==a[i+3].kaz[j] && a[i+3].kaz[j]==t)
  • {
  • a[i].kaz[j]=-1;a[i+1].kaz[j]=-1;a[i+2].kaz[j]=-1;a[i+3].kaz[j]=-1;
  • return 1;
  • }
  • for(i=0;i<7;i++) //pour les diagonales orientées Nord-Est
  • for(j=0;j<5;j++)
  • if(a[i].kaz[j]==a[i+1].kaz[j+1] && a[i+1].kaz[j+1]==a[i+2].kaz[j+2] && a[i+2].kaz[j+2]==a[i+3].kaz[j+3] && a[i+3].kaz[j+3]==t)
  • {
  • a[i].kaz[j]=-1;a[i+1].kaz[j+1]=-1;a[i+2].kaz[j+2]=-1;a[i+3].kaz[j+3]=-1;
  • return 1;
  • }
  • for(i=0;i<7;i++) //pour les diagonales orientées Sud-Est
  • for(j=3;j<8;j++)
  • if(a[i].kaz[j]==a[i+1].kaz[j-1] && a[i+1].kaz[j-1]==a[i+2].kaz[j-2] && a[i+2].kaz[j-2]==a[i+3].kaz[j-3] && a[i+3].kaz[j-3]==t)
  • {
  • a[i].kaz[j]=-1;a[i+1].kaz[j-1]=-1;a[i+2].kaz[j-2]=-1;a[i+3].kaz[j-3]=-1;
  • return 1;
  • }
  • return 0;
  • }
  • void affiche(colonne a[])
  • {
  • int i,j;
  • cout<<"__________________________________________________"<<endl;
  • for(i=7;i>=0;i--)
  • {
  • cout<<"\xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3 \xB3"<<endl;
  • for(j=0;j<10;j++)
  • {
  • cout<<"\xB3 ";
  • if(a[j].kaz[i]==1)cout<<"\x01"; //pour joueur 1
  • else if(a[j].kaz[i]==2)cout<<"\x02"; //pour joueur 2
  • else if(a[j].kaz[i]==-1)cout<<"X"; //pour cases "gagnées"
  • else cout<<" "; //pour cases vides
  • cout<<" ";
  • }
  • cout<<"\xB3"<<endl;
  • cout<<"\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3"<<endl;
  • }
  • }
  • void main()
  • {
  • int i,t,score[3],choix;
  • colonne a[10]; //on crée un tableau de 10 colonnes
  • cout<<"Bienvenue dans mon jeu de Puissance 4\n\n";
  • do{
  • cout<<"1. Jouer\n";
  • cout<<"2. Quitter\n";
  • cin>>choix;
  • cout<<endl;
  • if(choix==1)
  • {
  • for(i=0;i<3;i++)score[i]=0;
  • //on initialise les scores à 0 (score[0] ne sert à rien!)
  • init(a);
  • affiche(a);
  • for(i=0;i<80;i++) //il y aura 80 coups (8*10)
  • {
  • if(i%2==0)t=1; //t change de valeur une fois sur deux
  • if(i%2==1)t=2; //représentant le joueur
  • saisie(a,t);
  • score[t]=score[t]+test(a,t);
  • //on incrémente (ou non) le score du joueur t
  • affiche(a);
  • }
  • getch();
  • cout<<"\n_SCORES_"<<endl;
  • cout<<"Joueur 1: "<<score[1]<<endl;
  • cout<<"Joueur 2: "<<score[2]<<endl;
  • if(score[1]>score[2])cout<<"Joueur 1 a gagne!!"<<endl;
  • if(score[2]>score[1])cout<<"Joueur 2 a gagne!!"<<endl;
  • if(score[1]==score[2])cout<<"Match nul..."<<endl;
  • getch();
  • cout<<endl;
  • }
  • }while(choix!=2);
  • }
#include<iostream.h>
#include<conio.h>

struct colonne //le jeu est une grille contenant des colonnes
{
	int kaz[8]; //contenant elles-mêmes chacune 8 cases
	int n; //hauteur des pions dans la colonne
};

void init(colonne a[])
{
	int i,j;
	for(i=0;i<10;i++) //la boucle parcourt les 10 colonnes
	{
		for(j=0;j<8;j++) a[i].kaz[j]=0;
		//la valeur de chaque case est initialisée à 0 (=vide)
		a[i].n=0;
		//le nombre de pions dans chaque colonne également
	}
}

void saisie(colonne a[],int t)
{
	int c;
	do{
		cout<<"Joueur "<<t<<", tape la colonne (0-9): ";cin>>c;
		if(c>9 || c<0 || a[c].n==8)cout<<"colonne invalide!"<<endl;
	}while(c>9 || c<0 || a[c].n==8);
	a[c].kaz[a[c].n]=t;
	//la case prend la valeur du joueur t (1 ou 2)
	a[c].n++;
	//le nombre de pions dans la colonne c est incrémenté
}

int test(colonne a[],int t)
//renvoie 1 si 4 pions du même joueur sont alignés, 0 sinon
//le jeu est divisé en 4 zones
{
	int i,j;
	for(i=0;i<10;i++) //pour tester les puissance4 verticaux
		for(j=0;j<5;j++)
			if(a[i].kaz[j]==a[i].kaz[j+1] && a[i].kaz[j+1]==a[i].kaz[j+2] && a[i].kaz[j+2]==a[i].kaz[j+3] && a[i].kaz[j+3]==t)
			{
				a[i].kaz[j]=-1;a[i].kaz[j+1]=-1;a[i].kaz[j+2]=-1;a[i].kaz[j+3]=-1;
				return 1;
				//si puissance 4 il y a, les 4 cases concernées
				//prennent la valeur -1, on retourne 1
			}
	for(i=0;i<7;i++) //pour tester les puissance4 horizontaux
		for(j=0;j<8;j++)
			if(a[i].kaz[j]==a[i+1].kaz[j] && a[i+1].kaz[j]==a[i+2].kaz[j] && a[i+2].kaz[j]==a[i+3].kaz[j] && a[i+3].kaz[j]==t)
			{
				a[i].kaz[j]=-1;a[i+1].kaz[j]=-1;a[i+2].kaz[j]=-1;a[i+3].kaz[j]=-1;
				return 1;
			}
	for(i=0;i<7;i++) //pour les diagonales orientées Nord-Est
		for(j=0;j<5;j++)
			if(a[i].kaz[j]==a[i+1].kaz[j+1] && a[i+1].kaz[j+1]==a[i+2].kaz[j+2] && a[i+2].kaz[j+2]==a[i+3].kaz[j+3] && a[i+3].kaz[j+3]==t)
			{
				a[i].kaz[j]=-1;a[i+1].kaz[j+1]=-1;a[i+2].kaz[j+2]=-1;a[i+3].kaz[j+3]=-1;
				return 1;
			}
	for(i=0;i<7;i++) //pour les diagonales orientées Sud-Est
		for(j=3;j<8;j++)
			if(a[i].kaz[j]==a[i+1].kaz[j-1] && a[i+1].kaz[j-1]==a[i+2].kaz[j-2] && a[i+2].kaz[j-2]==a[i+3].kaz[j-3] && a[i+3].kaz[j-3]==t)
			{
				a[i].kaz[j]=-1;a[i+1].kaz[j-1]=-1;a[i+2].kaz[j-2]=-1;a[i+3].kaz[j-3]=-1;
				return 1;
			}
	return 0;
}

void affiche(colonne a[])
{
	int i,j;
	cout<<"__________________________________________________"<<endl;
	for(i=7;i>=0;i--)
	{
		cout<<"\xB3     \xB3     \xB3     \xB3     \xB3     \xB3     \xB3     \xB3     \xB3     \xB3     \xB3"<<endl;
		for(j=0;j<10;j++)
		{
			cout<<"\xB3  ";
			if(a[j].kaz[i]==1)cout<<"\x01"; //pour joueur 1
			else if(a[j].kaz[i]==2)cout<<"\x02"; //pour joueur 2
			else if(a[j].kaz[i]==-1)cout<<"X"; //pour cases "gagnées"
			else cout<<" "; //pour cases vides
			cout<<"  ";
		}
		cout<<"\xB3"<<endl;
		cout<<"\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3_____\xB3"<<endl;
	}
}

void main()
{
	int i,t,score[3],choix;
	colonne a[10]; //on crée un tableau de 10 colonnes
	cout<<"Bienvenue dans mon jeu de Puissance 4\n\n";
	do{
		cout<<"1. Jouer\n";
		cout<<"2. Quitter\n";
		cin>>choix;
		cout<<endl;
		if(choix==1)
		{
			for(i=0;i<3;i++)score[i]=0;
			//on initialise les scores à 0 (score[0] ne sert à rien!)
			init(a);
			affiche(a);
			for(i=0;i<80;i++) //il y aura 80 coups (8*10)
			{
				if(i%2==0)t=1; //t change de valeur une fois sur deux
				if(i%2==1)t=2; //représentant le joueur
				saisie(a,t);
				score[t]=score[t]+test(a,t);
				//on incrémente (ou non) le score du joueur t
				affiche(a);
			}
			getch();
			cout<<"\n_SCORES_"<<endl;
			cout<<"Joueur 1: "<<score[1]<<endl;
			cout<<"Joueur 2: "<<score[2]<<endl;
			if(score[1]>score[2])cout<<"Joueur 1 a gagne!!"<<endl;
			if(score[2]>score[1])cout<<"Joueur 2 a gagne!!"<<endl;
			if(score[1]==score[2])cout<<"Match nul..."<<endl;
			getch();
			cout<<endl;
		}
	}while(choix!=2);
}
    

 Conclusion

La coutume... venez tous voir mon site pour retrouver des cours et sources qui ouvrira fin avril 2002... http://lambda.man.free.fr
biz à tous!    

 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


 Sources du même auteur

Source avec Zip COMMANDES MS-DOS (VISUAL C++)
Source avec Zip YAHTZEE (JEU DE DÉS TRÈS COMPLET!) (VISUAL C++)
CORRECTION DE LA FONCTION STRCMP(...) (VISUAL C++)
QUEL JOUR SOMMES-NOUS?? (VISUAL C++)
Source avec Zip ECHECS (VISUAL C++)

 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

Commentaires et avis

Commentaire de Mekatech le 15/03/2002 13:16:24

C'est sympa ton puissance 4 mais comptes-tu le rendre encore plus puissant??
Et encore bravo!!

Commentaire de djmacou le 07/05/2002 11:02:59

Pas mal ton puissance 4, d'ailleur j'en ai fait un aussi que tu trouvera égelement dans la catégorie jeux...dis moi ce que tu en pensse ;-)
bon couarge pour la suite....

 Ajouter un commentaire




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

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