2 Erstellen Sie eine neue Klasse, die stellt Ihre Helden und die Monster in deinem " Dungeon " mithilfe dieses Codes :
Klasse 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) ;}} Leere Attack ( CCreature & qrDefender ) {//erzeugen eine Zahlen zwischen 1 und 100unsigned int uiAttack1 = ( rand ()% 100) + 1; unsigned int uiDefense1 = ( rand ()% 100) + 1; unsigned int uiAttack2 = ( rand ()% 100) + 1; unsigned int uiDefense2 = ( rand ()% 100 ) + 1 ;//Hat der Angreifer ( Held ) hit if ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints ; std :: cout << " ! Monster Hit " << std :: endl; } else { std :: cout << "Monster verschossen ! " ; << std :: endl; } //prüfen, ob das Monster treffen Sie Ihre characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints ; std :: cout << " ; Held Hit "<< std :: endl; } else { std :: cout <<" ! Held verschossen "<< std :: endl; ! } std :: cout << ; "Ihre Trefferpunkte: " << muiHitPoints << std :: endl; std :: cout << "Monster Trefferpunkte: " << qrDefender.muiHitPoints << std : : endl; } bool IsDead ( ) {return ( muiHitPoints == 0) ;} private: unsigned int muiAttack ; unsigned int muiDefense ; unsigned int muiHitPoints ; };
Diese Klasse initialisiert die drei Attribute : Angriff, Verteidigung und traf -Punkten. Es verwendet dann einen Angriff Algorithmus zu bestimmen, ob der Angriff erfolgreich war , Erstellen der Schaden des Angriffs und den verbleibenden Hitpoints .
3
eine neue Klasse , die Ihre " Kerker " steht als zweidimensionale Arrays mithilfe dieses Codes :
Klasse CDungeon {public: CDungeon () { //erstellen Sie eine leere mazechar caaMaze [10] [ 11] = {" ******* *** "," ****** "," ***** "," ** "," ****** "," *** **** "," **** "," **** "," ****** "," ********** " }; for ( unsigned int uiRow = 0; uiRow < 10; + + uiRow ) {for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mcaaMaze [ uiRow ] [ uiCol ] = caaMaze [ uiRow ] [ uiCol ] ; }}} char GetMazeSquare (unsigned int uiRow , unsigned int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ] ;} private: char mcaaMaze [10] [ 10]; };
Sie können die Art und Weise Ihre " Dungeon " aussieht , indem die Position der "*" Zeichen
4
erstellen Sie die Klasse, die das Gameplay steuert mithilfe dieses Codes : .
Klasse CRolePlayingGame {public: CRolePlayingGame () { //Initlialize den Zufallszahlengenerator generatortime_t QTIME ; Zeit ( & QTIME ); srand ( (unsigned int) QTIME );
//initialisieren das Verlies zu sein emptyfor (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) {for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0; }}
//Ein herobool bFoundSpot = false; ( ! bFoundSpot ), während {unsigned int uiRow = 1 + ( rand ()% 8); unsigned int uiCol = 1 + ( rand ()% 8); if ( QueryLocation ( uiRow , uiCol ) == ' ') { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; }} //Erstelle 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; }}}} char QueryLocation (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 (const char kcDirection ) {unsigned int uiHeroRow ; unsigned int uiHeroCol ; LocateCreature ( uiHeroRow , uiHeroCol & ; mqHero ); unsigned int uiNextRow = uiHeroRow ; unsigned int uiNextCol = uiHeroCol ; Schalter ( kcDirection ) {case 'w' : case 'W' : { - uiNextRow ; break;} case ' s' : case 'S' : { + + uiNextCol break; } case 'z' : case 'Z' : { + + uiNextRow break; } case 'a' : case 'A' : { - uiNextCol break; } default : { return false; } } char 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; }} nichtig Printplatte () { 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 () {return mqHero.IsDead ();} nichtig RemoveDeadMonsters () {for (unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ( mqaMonsters [ uiIndex ] IsDead (.)) {unsigned int uiRow ; unsigned int uiCol ; if ( LocateCreature ( uiRow , uiCol , & ( mqaMonsters [ uiIndex ] ))) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ; std :: cout << " Monster ! " << std :: endl; }}}} bool AllMonstersDead () { bool bAllDead = true; for ( unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] IsDead ( ! ). } return bAllDead ;}
private: bool LocateCreature (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 ; CCreature mqaMonsters [10]; CCreature * mqpaaCreatures [10] [ 10]; };
Diese Klasse steuert Ihre Helden Bewegung . Mit "W ", " A", " S" und "Z" , um deinen Charakter zu bewegen. Außerdem laicht 10 Monster und Ihren Helden in Ihrem " Dungeon " und steuert die Wechselwirkungen zwischen ihnen, wie Todesfälle und Positionen.
5
erstellen das Hauptprogramm , die die verschiedenen Klassen und Funktionen aufruft und interagiert mit dem Benutzer. Sie können verschiedene Aspekte des Spiels aus diesem Programm . Code verwenden, um es zu schaffen :
int main () { using namespace std ;//Deaktivieren Sie das dungeonCRolePlayingGame qGame ; bool bGameOver = false; do { qGame.PrintBoard () ;//Hier die nächsten movechar CMOVE ; cout << "Use W, A , S oder Z zu bewegen : " << endl; std :: cin >> CMOVE ;//Prüfen, ob der Umzug ist validif ( qGame.MoveHero ( CMOVE ) ) {//Wenn der Held deadif ( qGame.HeroIsDead ()) ist { cout << " Du bist tot ! " << endl; bGameOver = true; } else {//Entfernen der toten Monster aus den gameqGame.RemoveDeadMonsters () ;//Wenn alle Monster sind deadif ( qGame.AllMonstersDead ()) { cout << "Dungeon geschafft! " << endl; bGameOver = true; }} } } while ( bGameOver ! ); return 0; }
6
Kompilieren Ihr neues Projekt und führen Sie es zu testen, ob es wie erwartet funktioniert. Ändern Sie verschiedene Einstellungen Gameplay verbessern, bis Sie mit dem Ergebnis zufrieden sind.