2 Opprett en ny klasse som representerer din helt og monstrene i din " dungeon " ved å bruke denne koden : en
klasse CCreature {public : CCreature ( ) : muiAttack ( 0 ) , muiDefense ( 0 ) , muiHitPoints ( 3 ) { for ( usignert int uiIndex = 0; uiIndex < 3; + + uiIndex ) { muiAttack = muiAttack + ( rand ( ) % 34 ) ; muiDefense = muiDefense + ( rand ( ) % 34 ); muiHitPoints = muiHitPoints + ( rand ( ) % 10 ) ;} } void Attack ( CCreature & qrDefender ) { //Generer et tall mellom 1 og 100unsigned int uiAttack1 = ( rand ( ) % 100 ) + 1; usignert int uiDefense1 = ( rand ( ) % 100 ) + 1; usignert int uiAttack2 = ( rand ( ) % 100 ) + 1; usignert int uiDefense2 = ( rand ( ) % 100 ) + 1 ;//Visste angriperen ( helten ) hit if ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints ; std :: cout << " ! Monster Hit " << std :: endl ;} else { std :: cout << " Monster glipp av!" ; << std :: endl ;} //Sjekk om monsterhiten din characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints ; std :: cout << " ; Hero Hit "<< std :: endl ;} else { std :: cout <<" ! Hero Missed "<< std :: endl ;} std :: cout << ; " Dine helsepoeng : " << muiHitPoints << std :: endl; std :: cout << "Monster helsepoeng : " << qrDefender.muiHitPoints << std : : endl ; } bool IsDead ( ) {return ( muiHitPoints == 0 ) ;} private: usignert int muiAttack ; usignert int muiDefense ; usignerte int muiHitPoints ;} ;
Denne klassen initialiserer tre attributter : angrep, forsvar og traff -poeng . Deretter bruker et angrep algoritme for å avgjøre om angrepet var vellykket , skade av angrepet og de resterende hit -poeng .
3
Opprett en ny klasse som representerer " dungeon " som en bi- dimensjonal array ved hjelp av denne koden : en
klasse CDungeon {public : CDungeon ( ) { //Opprett en tom mazechar caaMaze [ 10 ] [ 11 ] = { " ******* *** "," ****** " , " ***** "," ** "," ****** " , " *** **** "," **** "," **** "," ****** " , " ********** " }; for ( usignert int uiRow = 0; uiRow < 10; + + uiRow ) { for ( usignert int uiCol = 0; uiCol < 10; + + uiCol ) { mcaaMaze [ uiRow ] [ uiCol ] = caaMaze [ uiRow ] [ uiCol ]; } } } røye GetMazeSquare ( usignert int uiRow , usignert int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ]; } privat : røye mcaaMaze [ 10 ] [ 10 ]; };
Du kan endre måten " dungeon " ser ut ved å endre plasseringen av " * " tegn
4
Lag klassen som styrer selve spillingen ved å bruke denne koden : .
klasse CRolePlayingGame {public : CRolePlayingGame ( ) { //Initlialize tilfeldige tall generatortime_t qTime ; tid (& qTime ) ; srand ( ( unsigned int ) qTime ) ;
//Initialiser dungeon å være emptyfor ( usignert int uiRow = 0; uiRow < 10; + + uiRow ) { for ( usignert int uiCol = 0; uiCol < 10; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ;} }
//Lag en herobool bFoundSpot = false; ( ! bFoundSpot ) mens { usignert int uiRow = 1 + ( rand ( ) % 8 ) ; usignert int uiCol = 1 + ( rand ( ) % 8 ), hvis ( QueryLocation ( uiRow , uiCol ) == '' ) { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; } } //Lag 10 monstersbFoundSpot = false; usignert int uiMonster = 0; ! while ( bFoundSpot ) { usignert int uiRow = 1 + ( rand ( ) % 8 ) ; usignert int uiCol = 1 + ( rand ( ) % 8 ), hvis ( QueryLocation ( uiRow , uiCol ) == '' ) { mqpaaCreatures [ uiRow ] [ uiCol ] = & ; mqaMonsters [ uiMonster ]; + + uiMonster ; if ( uiMonster == 10 ) { bFoundSpot = true; } } } } røye QueryLocation ( usignert int uiRow , usignert int uiCol ) { for ( usignert int uIndex = 0; uIndex < 10 ; + + uIndex ) { if ( mqpaaCreatures [ uiRow ] [ uiCol ] == & ( mqaMonsters [ uIndex ] ) ) {return ( røye ) ( '0 ' + uIndex ); } } if ( mqpaaCreatures [ uiRow ] [ uiCol ] == & mqHero ) {return ' H '; } else {return mqDungeon.GetMazeSquare ( uiRow , uiCol ); } } bool MoveHero ( const char kcDirection ) { usignert int uiHeroRow ; usignert int uiHeroCol ; LocateCreature ( uiHeroRow , uiHeroCol , og ; mqHero ) ; usignert int uiNextRow = uiHeroRow ; usignert int uiNextCol = uiHeroCol ; switch ( kcDirection ) {case 'w ' : case 'W ': { - uiNextRow ; break ;} case ' s' : case ' s ': { + + uiNextCol ; break ;} case ' z ' : case ' Z ': { + + uiNextRow ; break ;} tilfellet 'a' : case 'A ': { - uiNextCol ; break ;} standard : {return false; } } røye cNextLoc = QueryLocation ( uiNextRow , uiNextCol ), hvis ( 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; } } void PrintBoard ( ) { bruker namespace std; for ( usignert int uiRow = 0; uiRow < 10; + + uiRow ) { for ( usignert int uiCol = 0; uiCol < 10; + + uiCol ) {domstol << QueryLocation ( uiRow , uiCol ) ;} cout << endl ;} } bool HeroIsDead ( ) {return mqHero.IsDead (); } void RemoveDeadMonsters () { for ( usignert int uiIndex = 0; uiIndex < 10; + + uiIndex ) { if ( mqaMonsters [ uiIndex ] IsDead ( . ) ) { usignert int uiRow ; usignert int uiCol ; if ( LocateCreature ( uiRow , uiCol , og ( mqaMonsters [ uiIndex ] ) ) ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ; std :: cout << " Monster Drept ! " << std :: endl ;} } } } bool AllMonstersDead ( ) { bool bAllDead = true; for ( usignert int uiIndex = 0 ; uiIndex < 10 , + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] IsDead ( ! ). } retur bAllDead ;}
private: bool LocateCreature ( usignert int & uirRow , usignert int & uirCol , CCreature * qpCreature ) { for ( usignert int uiRow = 0; uiRow < 10; + + uiRow ) { for ( usignert 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 ]; };
Denne klassen styrer helten din bevegelse. Du bruker " W ", " A ", " S" og " Z " for å bevege figuren din . Den gyter også 10 monstre og helten inni " dungeon " og styrer samspillet mellom dem , for eksempel dødsfall og posisjoner.
5
Lag hovedprogrammet som kaller de ulike klasser og funksjoner og samhandler med brukeren. Du kan kontrollere ulike aspekter av spillet fra dette programmet . Bruk denne koden for å lage det : en
int main ( ) { bruker namespace std ;//Fjern dungeonCRolePlayingGame qGame ; bool bGameOver = false; do { qGame.PrintBoard ( ) ;//Få neste movechar cMove ; cout << " bruk W , A , S eller Z for å flytte : " << endl; std :: cin >> cMove ;//Sjekk om farten er validif ( qGame.MoveHero ( cMove ) ) { //Hvis helten er deadif ( qGame.HeroIsDead ( ) ) {domstol << " Du har dødd ! " << endl; bGameOver = true; } else { //Fjern døde monstre fra gameqGame.RemoveDeadMonsters () ;//Hvis alle monstrene er deadif ( qGame.AllMonstersDead ( ) ) {domstol << "Dungeon Slettet ! " << endl; bGameOver = true ; } } } } while ( bGameOver ! ), tilbake 0 ;}
6
Kompiler nytt prosjekt og kjøre den for å teste om det fungerer som du forventer. Endre forskjellige innstillinger for å forbedre game-play til du er fornøyd med resultatet.