2 Créer une nouvelle classe représente votre héros et les monstres dans votre " donjon " en utilisant ce code:
classe
CCreature {public: CCreature (): muiAttack (0), muiDefense (0), muiHitPoints (3) { for (unsigned int uiIndex = 0; uiIndex <3 ; + + uiIndex ) { muiAttack = muiAttack + ( rand ()% 34); muiDefense = muiDefense + ( rand ()% 34); muiHitPoints = muiHitPoints + ( rand ()% 10) ;}} vide Attack ( CCreature & qrDefender ) {//Générer un nombre entre 1 et 100unsigned int uiAttack1 = ( rand ()% 100) + 1; unsigned int uiDefense1 = ( rand ()% 100) + 1; unsigned int uiAttack2 = ( rand ()% 100) + 1; unsigned int uiDefense2 = ( rand ()% 100) + 1 ;//Est-ce que l'attaquant ( héros ) hit if ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints ; std :: cout << " ! Hit Monster " << std :: endl; } else { std :: cout << "Monster manquer! " ; << std :: endl; } //Vérifier si le monstre a frappé votre characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints ; std :: cout << " ; Hero Hit "<< std :: endl; } else { std :: cout <<" ! Hero Maladroit "<< std :: endl ;} std :: cout << , "Vos Points de vie: " << muiHitPoints << std :: endl; std :: cout << " Monster Points de vie :" << qrDefender.muiHitPoints << std : : endl; } bool isdead () {return ( muiHitPoints == 0) ; } private : unsigned int muiAttack ; unsigned int muiDefense ; unsigned int muiHitPoints ;} ;
Cette classe initialise les trois attributs : attaque, défense et les points de frapper. Il utilise ensuite un algorithme d'attaque pour déterminer si l'attaque a réussi, les dégâts de l'attaque et les autres hit - points.
3
créer une nouvelle classe qui représente votre " donjon " comme un tableau bi- dimensionnel en utilisant ce code:
classe
CDungeon {public: CDungeon () {//Créer un mazechar caaMaze vide [10] [ 11] = {" ******* *** "," ****** "," ***** "," ** "," ****** "," *** **** "," **** "," **** "," ****** "," ********** " }; for (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) { for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mcaaMaze [ uiRow ] [ uiCol ] = caaMaze [ uiRow ] [ uiCol ] ;}}} caractères GetMazeSquare (unsigned int uiRow , unsigned int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ] ; } private : mcaaMaze char [ 10] [10 ] ;} ;
Vous pouvez changer la façon dont votre " donjon " ressemble en changeant la position des caractères " *"
4
créer la classe qui contrôle le game-play en utilisant ce code: .
classe CRolePlayingGame {public: CRolePlayingGame () { //Initlialize le QTIME de nombres aléatoires de generatortime_t ; temps ( et QTIME ) ; srand ( (unsigned int) QTIME ) ;
//Initialisation de la prison pour être emptyfor (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) { for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0; }} < br >
//Créer un herobool bFoundSpot = false; ( ! bFoundSpot ), tandis que { unsigned int uiRow = 1 + ( rand ()% 8); unsigned int uiCol = 1 + ( rand ()% 8); if ( QueryLocation ( uiRow , uiCol ) == ' ') { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; }} //Création de 10 monstersbFoundSpot = false; unsigned int uiMonster = 0; ! while ( bFoundSpot ) {unsigned int uiRow = 1 + ( rand ()% 8); unsigned int uiCol = 1 + ( rand ()% 8); if ( QueryLocation ( uiRow , uiCol ) == ' ') { mqpaaCreatures [ uiRow ] [ uiCol ] = & ; mqaMonsters [ uiMonster ] ; + + uiMonster ; if ( uiMonster == 10) { bFoundSpot = true; }}}} QueryLocation char ( unsigned int uiRow , unsigned int uiCol ) { for (unsigned int uIndex = 0; uIndex <10 ; + + uIndex ) {if ( mqpaaCreatures [ uiRow ] [ uiCol ] == & ( mqaMonsters [ uIndex ] ) ) {return (char) ('0 ' + uIndex );} } if ( mqpaaCreatures [ uiRow ] [ uiCol ] == & mqHero ) {return 'H' ; } else {return mqDungeon.GetMazeSquare ( uiRow , uiCol );}} bool MoveHero ( kcDirection const char ) {unsigned int uiHeroRow ; unsigned int uiHeroCol ; LocateCreature ( uiHeroRow , uiHeroCol , et ; mqHero ) ; unsigned int uiNextRow = uiHeroRow ; unsigned int uiNextCol = uiHeroCol ; switch ( kcDirection ) {case 'w' : case ' W' : { - uiNextRow ; break; } case ' s': case ' s' : { + + uiNextCol ; cas } ' z' ; break : case ' Z' : { + + uiNextRow ; break; } cas 'a' : case ' a' : { - uiNextCol ; break; } défaut : {return false;} } caractères cNextLoc = QueryLocation ( uiNextRow , uiNextCol ) ; if ( cNextLoc == ' ') { mqpaaCreatures [ uiNextRow ] [ uiNextCol ] = &mqHero; mqpaaCreatures [ uiHeroRow ] [ uiHeroCol ] = 0; return true; } else if ( cNextLoc > = '0 ' && cNextLoc < = '9 ') { mqHero.Attack ( mqaMonsters [ (int) ( cNextLoc - '0 ') ] ) ; return true; } else {return false;} } vide printboard () { using namespace std ; for (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) { for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { cout << QueryLocation ( uiRow , uiCol );} cout << endl; }} bool HeroIsDead () { de mqHero.IsDead de retour (); } RemoveDeadMonsters void () { for (unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ( mqaMonsters [ uiIndex ] isdead ( . ) ) {unsigned int de uiRow ; unsigned int uiCol ; if ( LocateCreature ( uiRow , uiCol , et ( mqaMonsters [ uiIndex ] ) )) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 , std :: cout << " monstre tué! " << std :: endl; }}}} bool AllMonstersDead () { bool bAllDead = true; for (unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] isdead ( ! ). } return bAllDead ; }
privé : LocateCreature bool (unsigned int & uirRow , unsigned int & uirCol , CCreature * qpCreature ) { for (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) { for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) {if ( mqpaaCreatures [ uiRow ] [ uiCol ] == qpCreature ) { uirRow = uiRow ; uirCol = uiCol ; return true; }} } return false;} CDungeon mqDungeon ; CCreature mqHero ; mqaMonsters CCreature [10]; CCreature * mqpaaCreatures [10] [ 10]; }; < br >
Cette classe contrôle les mouvements de votre héros . Vous utilisez " W ", " A", " S" et "Z" pour déplacer votre personnage . Il génère également 10 monstres et votre héros dans votre " donjon " et contrôle les interactions entre eux, tels que les décès et les positions .
5
Créer le programme principal qui appelle les différentes classes et fonctions et interagit avec l'utilisateur. Vous pouvez contrôler divers aspects de votre jeu de ce programme . Utilisez ce code pour créer:
int main () { using namespace std ;//Effacer le dungeonCRolePlayingGame qGame ; bool bGameOver = false; do { qGame.PrintBoard ( ) ;//Obtention de la prochaine movechar CMOVE ; cout << "Utiliser W, A , S ou Z se déplacer : " << endl; std :: cin >> CMOVE ;//Vérifiez si le mouvement est validif ( qGame.MoveHero ( CMOVE ) ) {//Si le héros est deadif ( qGame.HeroIsDead ()) { cout << " Vous êtes morts ! " << endl; bGameOver = true; } else {//Suppression de la mort monstres des gameqGame.RemoveDeadMonsters ( ) ;//Si tous les monstres sont deadif ( qGame.AllMonstersDead ()) { cout << "Dungeon dégagé! " << endl; bGameOver = true; }} } } while ( bGameOver !) ; return 0; }
6
compiler votre nouveau projet et l'exécuter pour tester si cela fonctionne comme prévu. Modifier les différents réglages pour améliorer la jouabilité jusqu'à ce que vous soyez satisfait du résultat.