2 Crear una nueva clase que representa a su héroe y los monstruos en su " calabozo " mediante el uso de este código:
clase
CCreature {public : CCreature (): muiAttack ( 0 ) , muiDefense ( 0 ) , muiHitPoints ( 3 ) {for (unsigned uiIndex int = 0 ; uiIndex < 3 ; + + uiIndex ) { muiAttack = muiAttack + ( rand ()% 34 ) ; muiDefense = muiDefense + ( rand ()% 34 ) ; muiHitPoints = muiHitPoints + ( rand ()% 10 ) ;} } void Attack ( CCreature y qrDefender ) {//Generar un número entre 1 y 100unsigned int uiAttack1 = ( rand ()% 100 ) + 1 ; unsigned int uiDefense1 = ( rand ()% 100 ) + 1 ; unsigned int uiAttack2 = ( rand ()% 100 ) + 1 ; unsigned int uiDefense2 = ( rand ()% 100 ) + 1 ;//¿El golpe atacante ( héroe ) if ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . muiDefense ) { - . qrDefender muiHitPoints ; std :: cout << " ! Hit Monster" << std :: endl ;} else { std :: cout << "Monster perder! " ; << std :: endl ;} //Comprobar si el monstruo golpeó su characterif ( uiAttack2 < && qrDefender.muiAttack uiDefense1 > muiDefense ) { - muiHitPoints ; std :: cout << " ; Hit Hero " << std :: endl ;} else { std :: cout <<" ! héroe perder " << std :: endl ;} std :: cout << , "Tus Hitpoints :" << muiHitPoints << std :: endl ; std :: cout << " Puntos de ataque del monstruo :" << qrDefender.muiHitPoints << std : : endl ;} bool IsDead () {return ( muiHitPoints == 0 ) ;} privada: muiAttack unsigned int ; muiDefense int sin firmar ; muiHitPoints int sin firmar ;} ;
Esta clase inicializa los tres atributos : ataque, defensa y los puntos de golpe . A continuación, utiliza un algoritmo de ataque para determinar si el ataque fue un éxito, el daño de los restantes puntos de golpe y ataque .
3
Crear una nueva clase que representa el " calabozo " como una matriz bidimensional utilizando este código:
clase
CDungeon {public : CDungeon () {//Crear caaMaze mazechar vacío [ 10 ] [ 11 ] = {" ******* *** " , " ****** " , " ***** " , " ** " , " ****** " , " *** **** " , " **** " , " **** " , " ****** " , " ********** " } , porque (unsigned int uiRow = 0 ; uiRow < 10 ; + + uiRow ) {for (unsigned int uiCol = 0 ; uiCol < 10 ; + + uiCol ) { mcaaMaze [ uiRow ] [ uiCol ] = caaMaze [ uiRow ] [ uiCol ] ;} } } caracteres GetMazeSquare (unsigned int uiRow , unsigned int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ] ;} privada: mcaaMaze char [ 10 ] [ 10 ] ;} ;
puede cambiar la forma en que su " calabozo " se parece al cambiar la posición de los caracteres "*"
4
Crear la clase que controla el juego-juego utilizando este código: .
clase CRolePlayingGame {public : CRolePlayingGame () {//Initlialize la QTIME números aleatorios generatortime_t , el tiempo ( y QTIME ), srand ( (unsigned int) QTIME ) ;
//Inicializar el calabozo para ser emptyfor (unsigned int uiRow = 0 ; uiRow < 10 ; + + uiRow ) {for (unsigned int uiCol = 0 ; uiCol < 10 ; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ;} } < br >
//Crear un herobool bFoundSpot = false; (! bFoundSpot ), mientras que { unsigned int uiRow = 1 + ( rand ()% 8 ) ; unsigned int uiCol = 1 + ( rand ()% 8 ) ; if ( QueryLocation ( uiRow , uiCol ) == "" ) { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; } } //Crear 10 monstersbFoundSpot = false; uiMonster unsigned int = 0 ; ! while ( bFoundSpot ) { sin firmar 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 ( uiRow unsigned int , unsigned int uiCol ) {for (unsigned int uIndex = 0 ; uIndex < 10 ; + + uIndex ) { if ( mqpaaCreatures [ uiRow ] [ uiCol ] == y ( mqaMonsters [ uIndex ])) {return (char ) ('0 '+ uIndex ) ;} } if ( mqpaaCreatures [ uiRow ] [ uiCol ] == y mqHero ) {return ' H' ; } else {return mqDungeon.GetMazeSquare ( uiRow , uiCol ) ;} } bool MoveHero ( kcDirection const char ) { unsigned int uiHeroRow ; unsigned int uiHeroCol ; LocateCreature ( uiHeroRow , uiHeroCol , y ; 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; } caso ' a': case ' a' : { - uiNextCol ; break; } default : {return false;} } caracteres 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;} } void printboard () {using namespace std ; para (unsigned int uiRow = 0 ; uiRow < 10 ; + + uiRow ) {for (unsigned int uiCol = 0 ; uiCol < 10 ; + + uiCol ) { cout << QueryLocation ( uiRow , uiCol ) ;} cout << endl ;} } HeroIsDead bool () { mqHero.IsDead return ( ) ; } RemoveDeadMonsters void () {for ( int sin signo uiIndex = 0 ; uiIndex < 10 ; + + uiIndex ) { if ( mqaMonsters [ uiIndex ] IsDead ( . )) { uiRow int sin firmar ; unsigned int uiCol ; if ( LocateCreature ( uiRow , uiCol , y ( mqaMonsters [ uiIndex ])) ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ; std :: cout << " monstruo muerto ! " << std :: endl ;} } } } bool AllMonstersDead () { bool bAllDead = true; para (unsigned int uiIndex = 0 ; uiIndex < 10 ; + + uiIndex ) {if ) { bAllDead = false ;} ( mqaMonsters [ uiIndex ] IsDead (! ). bAllDead } return ;}
privada: LocateCreature bool (unsigned int & uirRow , sin firmar 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 >
Esta clase controla el movimiento de su héroe. Utilice " W ", " A", " S " y "Z " para mover a tu personaje . También genera 10 monstruos y el héroe dentro de la " mazmorra " y controla las interacciones entre ellos , tales como las muertes y posiciones.
5
Crear el programa principal que llama a las distintas clases y funciones e interactúa con el usuario . Puede controlar varios aspectos de su juego de este programa. Usa este código para crearlo:
int main () { using namespace std ;//Borrar la dungeonCRolePlayingGame qGame ; bool bGameOver = false; do { qGame.PrintBoard () ;//Obtener la próxima moveChar cMove ; cout << "Use W , A, S o Z para mover :" << endl ; std :: cin >> cMove ;//Comprobar si el movimiento es validif ( qGame.MoveHero ( cMove )) { //Si el héroe es deadif ( qGame.HeroIsDead ()) { cout << " Usted ha muerto ! " << endl ; bGameOver = true ;} else { //Eliminar los muertos monstruos de los gameqGame.RemoveDeadMonsters () ;//Si todos los monstruos son deadif ( qGame.AllMonstersDead ()) { cout << "Dungeon liquidado! " << endl ; bGameOver = true ;} } } } while ( bGameOver !) ; return 0 ;}
6
Compile su nuevo proyecto y ejecutarlo para probar si funciona como se espera . Cambiar varios ajustes para mejorar la jugabilidad hasta que esté satisfecho con el resultado.