Jeu_de_role

Contenu du snippet

C'est un prjet sur un jeu de role qu'on doit faire en bts 1° année
j'aimerais quelques aides dessus
comme l'affichage an dos application d'image importées
merci d'avance!!!

Source / Exemple :


#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#define nbjoueur 3
#define nbmonstre 23
randomize();
void srand(
   unsigned int seed 
);
//variables***********************************************************************************************************************************************************************************
int indice,choixtyperso,maxchoix;
char typarm[5][20]={"une mithdague","un arc","une hache","un baton beni","une galaxias"};//on initialise les armes
char typequip[6][20]={"un chapopointu","un gilet de mithril","des desert boots","une robe gaia","une chevaliere","un turban"};//on initialise l'equipement dans un tableau
char type[5][20]={"le mage","le guerrier","l'elfe","le nain","l'orque"};//on initialise le tableau des types de personnages
char Tlieu[8][20]={"la clairiere","le bois","la campagne","la colline","le sous-sol","la montagne","le ciel","le passage secret"};
int tabmaximonstr[9];//pour savoir combien il y a de monstres dans chaque lieu
int max[nbjoueur];//le classement des joueurs
//structures de données***********************************************************************************************************************************************************************
struct monstr//structure d'un monstre
{
	char nommonstr[20];
	int nummonstre,ptvie,ptattak,ptgagn,pointinit,nbfoisrencontre;
};
monstr tabmonstres[30];
struct person//structure d'un personnage
{
    int victoire,pointvie,nbmonstrtu,pontarm,pontlieu,tabnummonstretues[30],PointTotal;
    char nom[20],typers[20],arme[20],equipment[20],tabmonstretues[30][20],tablieurencontre[30][20];
};
person tabjoueur[nbjoueur];//tableau des joueurs de "person" comme type
struct lieu//structure d'un lieu 
{
	char nomlieu[20];
	int numlieu;
	monstr tabmonstr[6];//tableau avec une structure de données de type monstre
};
lieu tablieu[9];//tableau de 9 lieux avec toutes les données de lieu
struct chances//structure pour donner un peu de chance au joueur
{
    char nom[20];
    int nb;
};
chances tabchance[9];
struct arm
{
	char nom[20];
	int ptplus,ptat;//chaque arme a un statut diferent
};
arm tabarm[5];//tableau des armes
struct gagn
{
	int num,point;
};
gagn tabgagn[nbjoueur];
//procedures d'inialisation*******************************************************************************************************************************************************************
void ar(int j,char nom[20],int pointarm,int point)//procedure de remplissage
{
	strcpy(tabarm[j].nom,nom);
	tabarm[j].ptat=pointarm;
	tabarm[j].ptplus=point;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void remparm()//pour initialiser les differentes armes
{
	ar(0,typarm[0],20,1);
	ar(1,typarm[1],18,3);
	ar(2,typarm[2],25,-1);
	ar(3,typarm[3],16,5);
	ar(4,typarm[4],19,2);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void chan(int I,char mcan[20],int ptplus)//procedure de remplissage
{
    strcpy(tabchance[I].nom,mcan);
    tabchance[I].nb=ptplus;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void chanceux()//on initialise les differentes types de chance
{
   chan(0,"rien",0);
   chan(1,"rien",0);
   chan(2,"une potion",10);
   chan(3,"rien",0);
   chan(4,"rien",0);
   chan(5,"rien",0);
   chan(6,"une super-potion",20);
   chan(7,"rien",0);
   chan(8,"rien",0);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void affichtitre()//pour presenter le jeu
{
	cout<<"\n****************************ROLE FANTASY****************************************\n";
	cout<<"**************** **Jeu de role massivement multijoueur!!************************\n";
	cout<<"*************** **************BIENVENUE*****************************************\n";
	cout<<"************** ***_____________________________________*** *********************\n";
	cout<<"************** ***|   ---              ^--^           |*** *********************\n";
	cout<<"************** ***|  |o o|           <(o)(o)>         |*** *********************\n";
	cout<<"************** ***|   (-)             ( öö )          |*** *********************\n";
	cout<<"************** ***| - | | -            (^^)           |*** *********************\n";
	cout<<"**************** *|___v_v_______________ww____________|* ***********************\n";
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void GameOver()//quand on aura perdu
{
	cout<<"oooooooooooooooooooooooooooooGAME OVERoooooooooooooooooooooooooooooooooooooooooo\n";
	cout<<"oooooooooooooooooooooooDommage vous avez perdu!!oooooooooooooooooooooooooooooooo\n";
	cout<<"o                     o         ô ô             o                              o\n";
	cout<<"o                     o          ¨              o                              o\n";
	cout<<"o                     o         ---             o                              o\n";
	cout<<"oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo\n";
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void remplimonstr(int K,int I,int J,char mo[20],int nbV,int nbA,int nbG,int PtIni)//procédure pour remplir les données des monstres
{
	strcpy(tablieu[I].tabmonstr[J].nommonstr,mo);
	tablieu[I].tabmonstr[J].ptvie=nbV;
	tablieu[I].tabmonstr[J].ptattak=nbA;
	tablieu[I].tabmonstr[J].ptgagn=nbG;
	tablieu[I].tabmonstr[J].pointinit=PtIni;
	tablieu[I].tabmonstr[J].nummonstre=K;
	tablieu[I].tabmonstr[J].nbfoisrencontre=0;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void rempmonstr()//remplissage des données sur les monstres
{
	remplimonstr(0,0,0,"un loup",10,4,4,10);
	remplimonstr(1,0,1,"un renard",9,3,3,9);
	remplimonstr(2,0,2,"une fouine",5,2,2,5);
	remplimonstr(3,0,3,"un blaireau",13,6,6,13);
	tabmaximonstr[0]=4;//premier lieu
	remplimonstr(4,1,0,"un ogre",20,6,6,20);
	remplimonstr(5,1,1,"un loup-garou",18,5,5,18);
	remplimonstr(6,1,2,"une chauve-souris",5,2,2,5);
	remplimonstr(7,1,3,"un gobelin",6,3,3,6);
 	tabmaximonstr[1]=4;// deuxieme lieu
	remplimonstr(8,2,0,"une grenouille",6,2,2,6);
	remplimonstr(9,2,1,"une abeille",5,2,2,5);
	remplimonstr(10,2,2,"un serpent",4,3,3,4);
	remplimonstr(11,2,3,"une araignée",4,2,2,4);
	tabmaximonstr[2]=4;//troisieme lieu
	remplimonstr(12,3,0,"une succube",15,8,8,15);
	remplimonstr(13,3,1,"un yeti",30,14,14,30);
	remplimonstr(14,3,2,"un ours",25,10,10,25);
	tabmaximonstr[3]=3;//quatrieme lieu
	remplimonstr(15,4,0,"une licorne",99999,99999,0,99999);
	tabmaximonstr[4]=1;//cinquieme lieu
	remplimonstr(16,5,0,"une stalacite",40,20,20,40);
	remplimonstr(17,5,1,"un hermite",20,30,30,20);
	remplimonstr(18,5,2,"un glassos",10,8,8,10);
	remplimonstr(19,5,3,"un loup des neiges",9,8,8,9);
	tabmaximonstr[5]=4;//sixieme lieu
	remplimonstr(20,6,0,"un phenix",99,99,50,99);
	tabmaximonstr[6]=1;//septieme lieu
	remplimonstr(21,7,0,"l'HYDRE",70,15,70,70);
	remplimonstr(22,7,1,"un alligator",25,10,10,25);
	tabmaximonstr[7]=2;//huitieme lieu
}
//********************************************************************************************************************************************************************************************
void personnage(int M)//procédure  qui saisit le nom d'un personnage
{
    cout<<"Entrez le nom de votre personnage"<<"\n";
    cin>>tabjoueur[M].nom;//on remplie le tableau avec les noms
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int ressai(int CHOIXT,int MAXI)//fonction qui va renvoyer le choix des qu'il sera bon
{
	while((CHOIXT>MAXI)||(CHOIXT<1))
	{
		cout<<"\nEntrez une valeur possible!\n";
		cin>>CHOIXT;
	}
	return(CHOIXT);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void typers_(int Q)//procedure pour choisir un type de personnage
{
    cout<<"PERSONNAGE: Vous avez le choix entre (tapez le numero correspondant):\n 1)Un mage\n 2)Un guerrier\n 3)Un elfe\n 4)un nain\n 5)un orque\n ";
    maxchoix=5;
	cin>>choixtyperso;
	choixtyperso=ressai(choixtyperso,maxchoix);//on recupere la valeu de la fonction qui verifie si la saisie est bonne
    cout<<"\nVous prenez "<<type[choixtyperso-1]<<"\n\n";//car on commence a 0 en c++(idem pour les autres saisies de materiel)
    strcpy(tabjoueur[Q].typers,type[choixtyperso-1]);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void typequip_(int S)//procedure pour choisir son equipement
{
    int choixequip,maxi;
    cout<<"EQUIPEMENT: Vous avez le choix entre (tapez le numero correspondant):\n 1)Un chapopointu\n 2)Un gilet en mithril\n 3)Des desert boots\n 4)une robe gaia\n 5)une chevalière\n 6)un turban";
    maxi=6;//pour fixer la limite
	cin>>choixequip;
	choixequip=ressai(choixequip,maxi);//on verifie si la saisie est bonne
    cout<<"\nVous prenez "<<typequip[choixequip-1]<<"\n\n";//pour eviter un selon
    strcpy(tabjoueur[S].equipment,typequip[choixequip-1]);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void typarm_(int F)//procedure pour choisir son arme
{
	remparm();
    int choixtypersoarm,maxi;
    cout<<"ARME: Vous pouvez choisir entre (tapez le numero correspondant):\n1)Une mithdague\n2)Un arc\n3)Une hache\n4)Un baton benie\n5)Une galaxias\n\n";
    maxi=5;//le maximum d'equipements
	cin>>choixtypersoarm;//selon le choix du personnage, on incremente la valeur
	choixtypersoarm=ressai(choixtypersoarm,maxi);//on verifie si la saisie est bonne
	strcpy(tabjoueur[F].arme,tabarm[choixtypersoarm-1].nom);//(-1) car l'adresse du tableau commence a zero
	tabjoueur[F].pontarm=(choixtypersoarm-1);//pour savoir l'arme qu'il a choisi, on recupere l'indice
    cout<<"\n Vous prenez "<<typarm[choixtypersoarm-1]<<"\n";
	cout<<"Avec cette arme,vous tapez avec un maximum de "<<tabarm[choixtypersoarm-1].ptat<<"\net vous avez ";
	if(tabarm[choixtypersoarm-1].ptplus>0)
		cout<<tabarm[choixtypersoarm-1].ptplus<<" de bonus\n\n";
	else
		cout<<tabarm[choixtypersoarm-1].ptplus<<" de malus\n\n";	
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void typeperso(int D)//procedure de sous-menu du choix d'un personnage
{
    int j;
    for(j=1;j<=3;j++)//par choix
    {
		switch(j)//(j) : pour qu'il choississe d'abord le 1 ds le menu, puis 2 , puis 3
        {
          case 1:cout<<"\n Choix de votre personnage "<<"\n";typers_(D);break;                        
          case 2:cout<<"\n Choix de votre equipement\n";typequip_(D);break;
          case 3:cout<<"\n Choix de votre arme\n\n";typarm_(D);break;
        }
    }       
}
//menu 1:choix des personnages et de leurs caracteristiques***********************************************************************************************************************************
void choixperso()//procédure de choix d'un personnage
{
	int i,k;
    for (i=0;i<=(nbjoueur-1);i++)//par personnage
    {
		for(k=1;k<=2;k++)
	    {
	         switch(k)//pour obliger a suivre un deroulement de saisies
	         {
				case 1:cout<<"1: CHOIX DU NOM DU PERSONNAGE\njoueur "<<(i+1)<<"\n";personnage(i);break;
				case 2:cout<<"2: CHOIX DU TYPE DE PERSONNAGE\n";typeperso(i);break;//prevoir un autre menu
	         }    
        }       
	}
}
//menu 2:verification des personnages*********************************************************************************************************************************************************
void verifperso()//Montre le resultat de la saisie
{
	int k;
	char boul[1];
	for(k=0;k<=(nbjoueur-1);k++)//pour chaque joueur, on fait l'application
	{
		cout<<"\nJoueur "<<(k+1)<<" vous vous appelez "<<tabjoueur[k].nom;
		cout<<"\nVous etes "<<tabjoueur[k].typers;
		cout<<"\nVous avez pris  "<<tabjoueur[k].arme;
		cout<<"\nEt vous portez "<<tabjoueur[k].equipment<<"\n";	
	}
	cout<<"\nVoulez-vous garder cette configuration?(o/n) ";
	cin>>boul;
	if(strcmp(boul,"o")==0)
		cout<<"Fin de verification\n\n";//s'il n'y a plus de joueur alors on arrete la verification
	else
	{
		cout<<"Retour au choix du personnage\n";//l'inconvenient est que le choix se fera encore pour les 2 personnages
		choixperso();//on rappelle la procedure de choix des personnages
	}
	cout<<"\n\n";
}
//menu 3:les regles***************************************************************************************************************************************************************************
void regles()//ce sont les regles du jeu
{ 
	int touche;
	cout<<"\nREGLES DU JEU\n";
	cout<<"Votre quotas de points de vie s'initialise au debut d'une partie a 50 points\n";
	cout<<"Tant que vous n'etes pas mort vous pouvez continuer :o)!\nSi vous etes mort vos points de combats s'enregistrent\n";
	cout<<"Vos points de combats gagnes changent selon le monstre rencontre\n";
	cout<<"Essayer de decouvrir le passage secret qui mene au boss final!!\n";
	cout<<"\nAppuyez sur un chiffre pour continuer\n";
	cin>>touche;
	cout<<"Vous devez tuez tous les monstres\nOu vous avez la possibilite de vous arreter a tout moment\nUn boss peut survenir a tout moment, meme avant la fin du jeu!!!\n..Mefiez-vous!!\n";
	cout<<"Par combat, vous avez 60 secondes\nEt par joueur vous avez 20 minutes\n";
	cout<<"2 monstres speciaux peuvent apparaitre devant vous :\n l'un vous portera chance, l'autre....\n\n";
	cout<<"Le gagnant est celui qui a le plus de points\n";
	cout<<"Un bonus sera donné pour celui qui tuera un maximum de monstres\n\n";
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void endroit()//procedure d'enregistrement des lieux
{
	int i;
	for(i=0;i<=8;i++)
	{
		strcpy(tablieu[i].nomlieu,Tlieu[i]);//pour initialiser les noms des lieux
		tablieu[i].numlieu=i;
	}
}
//****************************************les 3 procedures suivantes sont celles du jeu*******************************************************************************************************
void jeuinterne(int J,int HASARDL,int HASARDM)//procedure de jeu interne(le corps du jeu)
{
	chanceux();
	remparm();
    int coup,tapej,tapem,pas,chA,aa;
    cout<<"\nA vous de jouer!!! "<<tabjoueur[J].nom;
    cout<<"\nAppuyez sur un chiffre pour tapez ";
    cin>>coup;
	aa=tabjoueur[J].pontarm;//pour eviter d'ecrire toute cette variable , on la place dans une autre, c'est plus court
	tapej=(rand()%tabarm[aa].ptat)+1;//le nombre de points que le joueur puet enlever au monstre
    cout<<"\nVous lui enlevez "<<tapej<<" points de vie";
    tablieu[HASARDL].tabmonstr[HASARDM].ptvie=tablieu[HASARDL].tabmonstr[HASARDM].ptvie-tapej;//on enleve un nombre egal au nbre de coup
    cout<<"\nLe monstre vous attaque!!";
	pas=tablieu[HASARDL].tabmonstr[HASARDM].ptattak;//le maximum que le monstre peut taper
    tapem=(rand()%pas)+1;
    cout<<"\nIl vous enleve "<<tapem<<" points de vie";
    tabjoueur[J].pointvie=tabjoueur[J].pointvie-tapem;
    cout<<"\nVos points de vie sont de "<<tabjoueur[J].pointvie<<"\nCeux du monstre sont de "<<tablieu[HASARDL].tabmonstr[HASARDM].ptvie;//on réaffiche les 2 valeurs   
	chA=(rand()%7)+1;//on recupere une valeur pour la chance
	cout<<"\nVous trouvez "<<tabchance[chA].nom;//on indique s'il a trouvé une potion
	if((chA==2)||(chA==6))
	{
		cout<<"\nVous recuperez "<<tabchance[chA].nb<<"\n";//le joueur augmente un peu sa vie
		tabjoueur[J].pointvie=tabjoueur[J].pointvie+tabchance[chA].nb;
		cout<<"\nVos points de vie passent a "<<tabjoueur[J].pointvie<<"\n";
	}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void pointgagn(int K,int Hl,int Hm,int montreseconde)//pour afficher les points du joueur et faire jouer le joueur
{
	while((tablieu[Hl].tabmonstr[Hm].ptvie>0)&&(montreseconde>0)&&(tabjoueur[K].pointvie>0))
        jeuinterne(K,Hl,Hm);// on appelle la procédure du jeu interne
	if(tablieu[Hl].tabmonstr[Hm].ptvie<=0)
	{
		cout<<"\nVous l'avez tuez!!Bravo!!";
		tabjoueur[K].nbmonstrtu++;//on incremente le nombre de monstres tués
		cout<<"\nVous gagnez "<<tablieu[Hl].tabmonstr[Hm].ptgagn<<" points!!";
		tabjoueur[K].victoire=tablieu[Hl].tabmonstr[Hm].ptgagn+tabjoueur[K].victoire;//on incremente le nombre de points
		cout<<"\nVous rejouez!!\n";   
	}
	else
	{
		if(montreseconde==0)//si pendant un combat il ne lui reste plus de temps
			cout<<"\nIl ne vous reste plus de temps!!\n";
	}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void jeu()//procédure de jeu
{
	int j,hasmonstr,haslieu,un,montremin,montresec,l,m;
    endroit();
    rempmonstr();
    for(j=0;j<=(nbjoueur-1);j++)//même jeu pour tous les joueurs
    {
		l=0;
		m=0;
		tabjoueur[j].nbmonstrtu=0;//on part de 0 pour les monstres qui ont été tués
		tabjoueur[j].victoire=0;//on initialise les points de jeu du joueur
        tabjoueur[j].pointvie=50;//le nombre de points du joueur
        haslieu =1;//on part dans le campagne
		montremin=20;//temps pour chaque joueur
        cout<<"\nVous vous debutez dans "<<tablieu[haslieu].nomlieu;//on indique quel lieu
        cout<<"\nappuyez sur un chiffre";
        cin>>un;//pour faire une pause et pouvoir lire toute la suite
       while(tabjoueur[j].pointvie>0 && montremin >0)//pour un joueur
        {
			montresec=60;//si le joueur ne tue pas le monstre rapidement, il a un chrono qui joue contre lui
            hasmonstr=(rand()%tabmaximonstr[haslieu]);//on recupere un monstre au hasard pour un lieu
			if(tabmaximonstr[haslieu]==1)
				hasmonstr=0;//il y a certains lieux qui n'ont qu'une valeur
            cout<<"\nVous rencontrez "<<tablieu[haslieu].tabmonstr[hasmonstr].nommonstr;//le nom du monstre
            montresec--;//on incremente montresec
			if(montresec<=10)//pour stresser le joueur
				cout<<"\nIl ne vous reste plus que "<<montresec<<" secondes\n";
			switch(haslieu)//selon le lieu : il y en a certains qui ont des propriétés differentes
            {
                case 4:cout<<"\nVous etes mort!! Dommage...\n\n";tabjoueur[j].pointvie=0;break;//c'est la fin pour ce joueur-ci
                case 7:cout<<"\nVoici le boss!! Preparez-vous....et bonne chance!\n";
								pointgagn(j,haslieu,hasmonstr,montresec);break;
                default :pointgagn(j,haslieu,hasmonstr,montresec);break;//pour un combat contre un monstre dans un lieu
             }
			strcpy(tabjoueur[j].tabmonstretues[l],tablieu[haslieu].tabmonstr[hasmonstr].nommonstr);//on incremente le nom du monstre tué
			tabjoueur[j].tabnummonstretues[l]=tablieu[haslieu].tabmonstr[hasmonstr].nummonstre;
			tabmonstres[tablieu[haslieu].tabmonstr[hasmonstr].nummonstre].nbfoisrencontre++;//on incremente son numéro
			strcpy(tabmonstres[tablieu[haslieu].tabmonstr[hasmonstr].nummonstre].nommonstr,tablieu[haslieu].tabmonstr[hasmonstr].nommonstr);//on incrémente le nom du monstre(indepandemment du lieu)
			l++;//pour avancer dans le tableau des monstres tués par le joueur
			tablieu[haslieu].tabmonstr[hasmonstr].ptvie=tablieu[haslieu].tabmonstr[hasmonstr].pointinit;//on reinitialise les points de vie du monstre si au prochain tour on retombe dessus
			if(tabjoueur[j].pointvie>0)
			{
				strcpy(tabjoueur[j].tablieurencontre[m],tablieu[haslieu].nomlieu);
				tabjoueur[j].pontlieu++;//pour compter le nom de lieux rencontrés
				haslieu =(rand()%7)+1;//pour le prochain tour de jeu
				cout<<"\nVous partez vers "<<tablieu[haslieu].nomlieu;//on indique quel lieu
				cout<<"\nappuyez sur un chiffre";
				cin>>un;//pour que le jeu soit un peu plus interactif
				cout<<"\nIl vous reste "<<montremin<<" minutes\n";
				montremin--;
				m++;
			}
        }
		montresec=60;//on reinitialise la montre
        if ((tabjoueur[j].pointvie<=0)||(montremin==0))
        {
			GameOver(); //on appelle la procedure qui lui montre qu'il a perdu
			cout<<"\nVous avez obtenu "<<tabjoueur[j].victoire<<" points\n\n";
			cout<<"\nVous avez pris "<<tabarm[tabjoueur[j].pontarm].nom<<"\n";
			cout<<"Ce qui vous fait au final "<<(tabarm[tabjoueur[j].pontarm].ptplus+tabjoueur[j].victoire)<<" points\n";
			tabjoueur[j].victoire=tabjoueur[j].victoire+tabarm[tabjoueur[j].pontarm].ptplus;
			if(j<(nbjoueur-1))
				cout<<"Joueur s'appelant "<<tabjoueur[j+1].nom<<" a vous de jouer!!\n\n";
        }	
    }
}
//********************************************************************************************************************************************************************************************
void Nbmonstretu()//pour indique combien de monstres ont ete tues
{
	int b,h;
	for(b=0;b<=(nbjoueur-1);b++)
	{
		cout<<"\nJoueur "<<(b+1)<<" vous avez tue "<<tabjoueur[b].nbmonstrtu<<" monstres\n";
		for(h=0;h<=(tabjoueur[b].nbmonstrtu-1);h++)//on indique le nom de tous les monstres qu'il a tué
			cout<<"\nVous avez tue "<<tabjoueur[b].tabmonstretues[h]<<"\n";
		cout<<"\n";
	}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void Nbpointpers()//pour indiquer combien de points chaque joueur a gagne
{
	int i;
	for(i=0;i<=(nbjoueur-1);i++)
		cout<<"\nJoueur sus-nomme "<<tabjoueur[i].nom<<" vous avez obtenu "<<tabjoueur[i].victoire<<" points au combat\n";
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void lieurencontre()//on affiche tous les lieux par personne
{
	int i,m;
	for(i=0;i<=(nbjoueur-1);i++)
	{
		cout<<"\nJoueur "<<i+1;
		for(m=0;m<=(tabjoueur[i].pontlieu-1);m++)
			cout<<" vous etes alles dans "<<tabjoueur[i].tablieurencontre[m]<<"\n";
	}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
int le_gagnant(int I,int maxi)//fonction qui renvoie le resultat du meilleur joueur
{
	int j;
	tabgagn[I].point=0;
	for(j=0;j<=(nbjoueur-1);j++)
	{
		if((tabjoueur[j].victoire>tabgagn[I].point)&&(tabjoueur[j].victoire<maxi))//si le nombre de point est supérieur a l'ancien et inferieur au maximum(le meilleur)
		{																		  //pour faire le classement
			tabgagn[I].point=tabjoueur[j].victoire;
			tabgagn[I].num=j;
		}
	}
	return(tabgagn[I].num);
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void PersonnageQuiALePlusDeVictoire()//procedure pour classer les personnes
{
	int i,max=1000;
	char tabvainc[3][20]={"premier","deuxieme","troisieme"};
	for(i=0;i<=(nbjoueur-1);i++)//pour les trois premiers joueurs
	{
		cout<<"\nle "<<tabvainc[i]<<" joueur est "<<tabjoueur[le_gagnant(i,max)].nom<<" avec "<<tabjoueur[le_gagnant(i,max)].victoire<<" points\n";
		max=tabgagn[i].point;
	}
	
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void monstretutu()// on affiche pour chaque monstre le nombre de fois qu'il a été rencontré
{
	int k;
	cout<<"\n";
	for(k=0;k<=(nbmonstre-1);k++)//on regarde tous les monstres
	{
		if(tabmonstres[k].nbfoisrencontre>0)//s'il a été rencontré
			cout<<"Le monstre s'appelant "<<tabmonstres[k].nommonstr<<"\na ete rencontre "<<tabmonstres[k].nbfoisrencontre<<" fois\n";
	}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void classfinal()
{
	int i,max=tabjoueur[0].PointTotal;
	char tabvainc[3][20]={"premier","deuxieme","troisieme"};
	for(i=0;i<=(nbjoueur-1);i++)
		tabjoueur[i].PointTotal=tabjoueur[i].nbmonstrtu+tabjoueur[i].victoire;
	for(i=0;i<=(nbjoueur-1);i++)//pour les trois premiers joueurs
	{
		cout<<"\nLe "<<tabvainc[i]<<" joueur est "<<tabjoueur[le_gagnant(i,max)].nom<<" avec "<<tabjoueur[le_gagnant(i,max)].victoire<<" points\n";
		max=tabgagn[i].point;
	}
}
//menu 5:statistiques*************************************************************************************************************************************************************************
void statmenu(int STA)
{
	switch(STA)
	{
		case 1:Nbmonstretu();break;
		case 2:Nbpointpers();break;
		case 3:lieurencontre();break;
		case 4:PersonnageQuiALePlusDeVictoire();break;
		case 5:classfinal();break;
		case 6:monstretutu();break;
		case 0:cout<<"\nretour au MENU\n\n";break;
		default:cout<<"\nEntrez une valeur possible, SVP!\n";
	}
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void stat()//menu des statistiques
{
	int choixstat;
	do
	{
		cout<<"\n1:Nombre de monstres tues par personne\n";
		cout<<"2:Nombre de points pour chaque personnage\n";
		cout<<"3:Combien de lieux ont ete rencontres pour chaque personnage\n";
		cout<<"4:Classement provisoire\n";
		cout<<"5:Classement final\n";
		cout<<"6:Monstres les plus rencontres\n";
		cout<<"0:quitter\n";
		cin>>choixstat;
		statmenu(choixstat);
	}while(choixstat!=0);
}
//********************************************************************************************************************************************************************************************
void choixmenu_(int CHOIXMEN)//procédure de choix de menu
{
    switch(CHOIXMEN)
	{
		case 1:choixperso();indice=1;break;//indice=1 pour prouver qu'on a deja saisi les valeurs, pour le 2°choix du menu
		case 2:if(indice==1)
				   verifperso();
			   else
				   cout<<"\nVeuillez choisir votre personnage, SVP\n\n";break;//si l'indice est different de 1 alors on retourne dans le menu
		case 3:regles();break;//peut etre appeler a n'importe quel moment
		case 4:if(indice==1)
			   {
                  jeu();
				  indice=5;//indicateur pour les statistiques
			   }
               else
                  cout<<"\nVous pourrez jouez quand vous aurez choisi vos perso!\n\n";break;
		case 5:if(indice==5)
				   stat();
				else
					cout<<"\nJouez d'abord!!\n\n";break;
		case 0:cout<<"Merci d'avoir jouer a ce jeu!\n";break;
		default:cout<<"\nErreur de saisie!!\n\n";
	}
}
//procedure principale************************************************************************************************************************************************************************
void main(void)//menu principal
{
	int choixmenu;
	indice=0;//preuve qu'on a ou non agit sur une procedure
	affichtitre();"\n";
    do	
	{
		cout<<"MENU\n";
		cout<<"1: Choix de votre personnage\n";//prevoir un sous-menu
		cout<<"2: Verification des personnages\n";//deroulement du tableau
		cout<<"3: Afficher les regles du jeu\n";//possibilités d'appel à n'importe quel moment
		cout<<"4: A vous de jouer!!\n";//lancement de la procedure jeu
		cout<<"5: Statistiques du jeu\n";//prevoir un sous-menu
		cout<<"0: Quitter le jeu\n";
		cin>>choixmenu;
		choixmenu_(choixmenu);//procedure de choix pour le menu
    }while(choixmenu!=0);
}

Conclusion :


POur amélioration....
il est exécuté sous dos(interpréteur de commande)

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.