Programação  
 
Conhecimento computador >> Programação >> C /C + + programação >> 
Como fazer um jogo de RPG em C + +
Ao jogar um jogo de role -playing, ou RPG, você assume o papel de um personagem imaginário e experimentar suas aventuras. Estes jogos podem ser muito complexos e envolvem gráficos pesados ​​. Os desenvolvedores geralmente trabalham vários meses em codificação e teste o jogo. No entanto, você pode criar um simples jogo de RPG em C + +. Além disso, você só precisa entender os conceitos básicos de programação C + + . Você pode criar um jogo simples RPG usando uma matriz bidimensional como o mapa e algumas aulas para controlar o seu personagem, os personagens inimigos eo jogo-jogo. Instruções
1

Abra seu editor favorito C + + e iniciar um novo projeto . Incluir o " iostream " e bibliotecas " ctime " usando este código:

# include # include
2

Crie uma nova classe que representa o seu herói e os monstros em seu " calabouço " , usando este código:

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) ;}} Ataque void ( CCreature & qrDefender ) {//Gera um número entre 1 e 100unsigned int uiAttack1 = ( rand ()% 100) + 1; unsigned int uiDefense1 = ( rand ()% 100) + 1; unsigned int uiAttack2 = ( rand ()% 100) + 1; unsigned int uiDefense2 = ( rand () % 100 ) + 1 ;//Será que o atacante ( herói ) bateu if ( uiAttack1 < muiAttack && uiDefense1 > qrDefender ? . " monstro perder" - muiDefense ) {. qrDefender muiHitPoints ; ; std :: cout << " monstro Hit" << std :: endl } else { std :: cout << ; << std :: endl; } //Verifique se o monstro acertar seu characterif ( uiAttack2 < qrDefender.muiAttack && uiDefense1 > muiDefense ) { - muiHitPoints ; std :: cout << " , herói Hit " << std :: endl; } else { std :: cout <<" ! herói perder " << std :: endl; } std :: cout << , "Seus hitpoints: " << muiHitPoints << std :: endl; std :: cout << " pontos de vida do monstro: " << qrDefender.muiHitPoints << std : : endl; } bool IsDead () {return ( muiHitPoints == 0 );} private : unsigned int muiAttack ; unsigned int muiDefense ; muiHitPoints int sem sinal ;} ;

Esta classe inicializa os três atributos: ataque, defesa e bater - pontos. Em seguida, ele usa um algoritmo de ataque para determinar se o ataque foi bem sucedido , o dano do ataque e os restantes pontos atingidos .
3

Crie uma nova classe que representa o seu " calabouço " como uma matriz bi- dimensional usando este código:

classe CDungeon {public: CDungeon () {//Criar uma mazechar vazio 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 ] ;}}} caractere GetMazeSquare (unsigned int uiRow , unsigned int uiCol ) {return mcaaMaze [ uiRow ] [ uiCol ] ;} private : char mcaaMaze [10] [ 10]; };

Você pode mudar a forma como o " calabouço " parece , alterando a posição dos caracteres "*"
4

Crie a classe que controla o jogo-jogo usando este código: .

CRolePlayingGame classe {public: CRolePlayingGame ( ) {//Initlialize o número aleatório generatortime_t QTime , o tempo ( e QTime ); srand ( ( unsigned int ) QTime );

//Inicializar o calabouço para ser emptyfor (unsigned int uiRow = 0; uiRow < 10; + + uiRow ) {for (unsigned int uiCol = 0; uiCol < 10; + + uiCol ) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 ;}} < br >

//Cria um herobool bFoundSpot = false; while ( bFoundSpot !) { unsigned int uiRow = 1 + ( rand ()% 8); unsigned int uiCol = 1 + ( rand ()% 8); if ( QueryLocation ( uiRow , uiCol ) == ' ') { bFoundSpot = true; mqpaaCreatures [ uiRow ] [ uiCol ] = &mqHero; }} //Cria 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; }}}} caractere 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 ( char const 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; } case ' a': case ' a' : { - uiNextCol ; break; } default: {return false; } } carbonizar 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; }} vazio 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 () {return mqHero.IsDead ();} RemoveDeadMonsters void ( ) {for (unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ( mqaMonsters [ uiIndex ] IsDead ( . )) { int uiRow não assinado ; unsigned int uiCol ; if ( LocateCreature ( uiRow , uiCol , & ( mqaMonsters [ uiIndex ] ) )) { mqpaaCreatures [ uiRow ] [ uiCol ] = 0 , std :: cout << "Monster matou ! " << std :: endl; }}}} bool AllMonstersDead () { bool bAllDead = true; for ( unsigned int uiIndex = 0; uiIndex < 10; + + uiIndex ) {if ) { bAllDead = false; } ( mqaMonsters [ uiIndex ] IsDead ( ! ). } retornar bAllDead ;}

privado : 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]; }; < br >

Esta classe controla o movimento do seu herói. Você usa "W ", "A", "S" e "Z" para mover o seu personagem . Ele também gera 10 monstros e seu herói dentro de sua " masmorra " e controla as interações entre eles , como mortes e posições.
5

Criar o programa principal que chama as várias classes e funções e interage com o utilizador . Você pode controlar vários aspectos de seu jogo a partir deste programa . Use este código para criá-lo :

int main () { using namespace std ;//Limpar o dungeonCRolePlayingGame qGame ; bool bGameOver = false; do { qGame.PrintBoard () ;//Pega o próximo moveChar cMove ; cout << " Use W, A , S ou Z para mover : " << endl; std :: cin >> cMove ;//Verifique se o movimento é validif ( qGame.MoveHero ( cMove )) { //Se o herói é deadif ( qGame.HeroIsDead ()) { cout << " Você morreu! " << endl; bGameOver = true; } else {//remover os mortos monstros da gameqGame.RemoveDeadMonsters () ;//Se todos os monstros são deadif ( qGame.AllMonstersDead ()) { cout << "Dungeon Cancelado ! " << endl; bGameOver = true; }} }} while ( bGameOver !) ; return 0; }
6

Compilar seu novo projeto e executá-lo para testar se funciona como o esperado. Alterar diversas configurações para melhorar o jogo-jogo até que esteja satisfeito com o resultado.

Anterior :

Próximo : No
  Os artigos relacionados
·Malloc Função 
·Como calcular o número de linhas em um arquivo usando …
·Como exibir as porcentagens em C + + 
·Objetivo Questionamento em C Programação 
·Como escrever um programa C + + computador que calcula …
·Como fazer um projeto SDL no Código Blocos 
·Funções Iomanip 
·Como executar um script CGI CPP na Web 
·Como obter a Perspectiva C em Eclipse 
·Projetos ASP.NET e Codificação em C 
  Artigos em destaque
·Como fazer um padrão em C + + Código 
·Como corrigir C + erro + R6002 
·Como Calcular Integral Com C + + 
·Como fazer Gráfico Quadrantes em C + + 
·Exibindo uma Imagem Box PGM em C + + 
·Como escrever um programa C + + computador que calcula …
·O que é uma interface CPP 
·Como executar um script CGI CPP na Web 
·Como Animar em XNA 
·Como usar um ponteiro de função no Array Inteiros 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados