Accueil > > > JEU_DE_ROLE
JEU_DE_ROLE
Information sur la source
Description
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
- #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);
- }
-
-
-
-
-
-
-
#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)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Jeu motus [ par marinkaout ]
Bonjour à tous ! Nous avons comme projet de réaliser un jeu motus en turbo pascal, nous avons effectuer tout l'algorithme mais le pricipal manque. Nou
jeu tic tac toé [ par b52ab ]
on nous a donné un projet de faire le jeu tic tac toé dns notre cours des matrices en c , en utilisons la souris pour cela c un programme que j ai pas
Graphiques pour le Jeu Backgammon en C [ par choupettuz ]
Je souhaite bien avoir les codes pour bouger mon dee et les pions sur Turbo C pour le jeu backgammon. Le zip que j'ai telecharger pour le jeu backgamm
Jeu de backgammon en C [ par choupettuz ]
Bonjour,Je vous remercie de m'avoir repondu et d'avoir pris ma question en consideration. J'ai telecharger un zip pour le jeu backgammon sur le lien s
probleme de jeu en reseau [ par charara88 ]
spv j'ai un code source de jeu en reseau avec le programme executable mais il ne peut pas fonctionner il me dit que "SDL.dll est introuvable"svp que p
probleme avec des conditions [ par crawhawks21 ]
Bonjour,je rencontre un petit problème avec une idée de créer un jeu de question reponse en mode console pour commencer, je suis assez débutant et j'a
Besoin d'aide pour un programme [ par milka77 ]
Bonjour,je joue actuellement a un jeu nommé "Dofus", où des montres apparaissent sur différentes cartes du jeu.Mais j'aimerais savoir si il serait pos
comment fair (bataille naval) [ par nangette ]
bonjour tout le monde s'il vous plait j'ai une demande , j'ai un mini projet a fair qui consiste a fair un jeu de bataille naval avec turbo C et j'ar
probleme pour créer une gestion aleatoire [ par crawhawks21 ]
Bonsoir, je viens par ce message demander de l'aide, voilà je crée un petit jeu actuellement sans aucune prétention, le jeu est basé sur l'indix (jeu
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|