2 Opret en ny klasse, repræsenterer din helt og monstrene i din " dungeon " ved hjælp af denne kode : Hej
class CCreature { public: CCreature (): muiAttack (0), muiDefense (0), muiHitPoints (3 ) { for (usignerede int uiIndex = 0; uiIndex <3 , + + uiIndex ) { muiAttack = muiAttack + ( rand ( ) % 34 ), muiDefense = muiDefense + ( rand ( ) % 34 ), muiHitPoints = muiHitPoints + ( rand ( ) % 10 ) ;}} void Attack ( CCreature & qrDefender ) {//Generer et tal mellem 1 og 100unsigned int uiAttack1 = ( rand ( ) % 100) + 1 , unsigned int uiDefense1 = ( rand ( ) % 100) + 1 , unsigned int uiAttack2 = ( rand ( ) % 100) + 1 , unsigned int uiDefense2 = ( rand ( ) % 100) + 1 ;//Gjorde angriberen ( helten ) hit , hvis ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints , std :: cout << " ! Monster Hit " << std :: endl; } else { std :: cout << "Monster Missed ! " , << std :: endl; } //Tjek om uhyret ramme din characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints , std :: cout << " , Hero Hit "<< std :: endl; } else { std :: cout <<" ! Hero Mistede "<< std :: endl; ! } std :: cout << ; "Dine livspoints : " << muiHitPoints << std :: endl; std :: cout << " Monster livspoints : " << qrDefender.muiHitPoints << std : : endl; } bool IsDead () {return ( muiHitPoints == 0 );} private : unsigned int muiAttack , unsigned int muiDefense , unsigned int muiHitPoints ;} ;
Denne klasse initialiserer de tre attributter : angreb, forsvar og hit- points . Derefter bruger et angreb algoritme til at afgøre, om angrebet var en succes , beskadigelse af angrebet , og de resterende hit -points .
3
Opret en ny klasse , der repræsenterer din " dungeon " som en bi- dimensionelle array ved hjælp af denne kode : Hej
class CDungeon { public: CDungeon () { //Opret en tom 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 (usignerede int uiRow , unsigned int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ] ;} private : char mcaaMaze [10] [10] };
p Du kan ændre den måde, din " dungeon " ligner ved at ændre placeringen af de " *" tegn
4
Opret klasse, der styrer spillet -play ved at bruge denne kode: .
class CRolePlayingGame { public: CRolePlayingGame () { //Initlialize tilfældige tal generatortime_t QTime , tid (& QTime ), srand ( ( unsigned int ) QTime )
//Initialiser fangekælder at være emptyfor (usignerede int uiRow = 0; uiRow < 10; + + uiRow ) { for ( unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ;}} < br >
//Opret en herobool bFoundSpot = false; ( ! bFoundSpot ), mens { unsigned int uiRow = 1 + ( rand ( ) % 8) unsigned int uiCol = 1 + ( rand ( ) % 8 ), hvis ( QueryLocation ( uiRow , uiCol ) == ' ) { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; }} //Opret 10 monstersbFoundSpot = false; unsigned int uiMonster = 0; ! while ( bFoundSpot ) { usigneret int uiRow = 1 + ( rand ( ) % 8) unsigned int uiCol = 1 + ( rand ( ) % 8 ), hvis ( QueryLocation ( uiRow , uiCol ) == ' ) { mqpaaCreatures [ uiRow ] [ uiCol ] = & ; mqaMonsters [ uiMonster ] + + uiMonster , hvis ( uiMonster == 10 ) { bFoundSpot = true ;} }}} char QueryLocation (usignerede 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 { tilbage 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 , switch ( kcDirection ) { case ' w' : case ' W' : { - uiNextRow , break; } case ' s ' : case ' S ': { + + uiNextCol , break; } case ' z' : case ' Z' : { + + uiNextRow , break; } tilfælde 'a' : case 'A' : { - uiNextCol , break; } default: { return false ;} } char cNextLoc = QueryLocation ( uiNextRow , uiNextCol ), hvis ( cNextLoc == '' ) { mqpaaCreatures [ uiNextRow ] [ uiNextCol ] = &mqHero; mqpaaCreatures [ uiHeroRow ] [ uiHeroCol ] = 0; returnere sandt ;} else if ( cNextLoc > = '0 ' && cNextLoc <= '9' ) { mqHero.Attack ( mqaMonsters [( int ) ( cNextLoc - '0 ' ) ]) returnere sandt ;} else { return false ;}} void printpladen () { 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 (); } void RemoveDeadMonsters () { for ( unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) { if ( mqaMonsters [ uiIndex ] IsDead ( . )) { unsigned int uiRow , unsigned int uiCol , hvis ( LocateCreature ( uiRow , uiCol , & ( mqaMonsters [ uiIndex ] ))) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 , std :: cout << "Monster Killed ! " << std :: endl; }} }} bool AllMonstersDead () { bool bAllDead = true; for ( unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] IsDead ( ! ). } tilbagevenden bAllDead ;}
privat : bool LocateCreature (usignerede 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 , returnere sandt ;} }} return false ;} CDungeon mqDungeon , CCreature mqHero , CCreature mqaMonsters [10] CCreature * mqpaaCreatures [10 ] [10] ;} ; < br >
Denne klasse styrer din helts bevægelser. Du bruger "W ", " A ", " S " og " Z" til at flytte din karakter. Det er også gyder 10 monstre og din hero inde i din " dungeon " og styrer samspillet mellem dem , såsom dødsfald og holdninger .
5.
Opret hovedprogrammet , der kalder de forskellige klasser og funktioner , og interagerer med brugeren . Du kan styre forskellige aspekter af dit spil fra dette program. Brug denne kode til at oprette den : Hej
int main () { using namespace std ;//Ryd dungeonCRolePlayingGame qGame , bool bGameOver = false; do { qGame.PrintBoard () ;//Hent næste movechar cMove ; cout << " Brug W, A , S eller Z for at flytte : " << endl; std :: cin >> cMove ;//Tjek om flytningen er validif ( qGame.MoveHero ( cMove )) { //Hvis helten er deadif ( qGame.HeroIsDead ( )) { cout << " Du har Died ! " << endl; bGameOver = true ;} else { //Fjern døde monstre fra gameqGame.RemoveDeadMonsters () ;//Hvis alle monstre er deadif ( qGame.AllMonstersDead ( )) { cout << " Dungeon ryddet! " << endl; bGameOver = true ;}} }} while ( bGameOver ! ) return 0 ;}
6
Kompiler dit nye projekt og køre det for at teste om det virker som du forventer. Ændre forskellige indstillinger for at forbedre game -play , indtil du er tilfreds med resultatet.