Tambem alterei o pointer char *nome; na struct Monstro{}.
Chega de conversa, la vai o source...
/**************************************Programação C++Autor: Adelson InácioCopiado do exemplo 9.4 do site do Agnor,fiz somente uma simples modificação para rodar no linuxLink: http://agnor.gamedev-pt.net/gamedev/cpp/cpp009.htmlData: 18 de Abril de 2012Versão:Desc.: Jogo Hall of Monster Linux version
Para compilar: $ g++ exemplo14.cpp -o exemplo14
para executar : $ ./exemplo14
***************************************/#include#includeusing namespace std;struct Personagem{int hp; //Seus pontos de vidaint mp; // Seus pontos de magiaint max_hp; //usado para recuperar hp do personagemint max_mp; //usado para recuperar mp do personagemint forca; // Força de ataque};struct Monstro{int hp;int forca;char nome[50];};//Variaveis para a criação dos jogadoresPersonagem player = {50, 7, 50, 7, 5}; // {hp, mp, max_hp, max_mp, força}Monstro ORC = { 40, 10, "Orc"}; // {hp, força, nome}Monstro LIZARD = { 60, 10, "Lizard"};Monstro SHADOW = { 100, 23, "Shadow"};Monstro BAHAMUT = { 140, 31, "Bahamut"};Monstro ULTIMA = {1000, 100, "Ultima"};// Escopo das Funçõesint menuJogo();int chamarBatalha(Monstro monstro);int menuBatalha(Monstro monstro);int monstroIA(Monstro monstro);int ganhou();int perdeu();int getRandom (int de, int ate);int main(){menuJogo();cin.get();return 0;}int menuJogo(){int escolha;cout << "\nEscolha um adversario:" << endl;cout << "\n1 - Orc" << endl;cout << "\n2 - Lizard" << endl;cout << "\n3 - Shadow" << endl;cout << "\n4 - Bahamut" << endl;cout << "\n5 - ULTIMA" << endl;cin >> escolha;switch(escolha){case 1:chamarBatalha(ORC);break;case 2:chamarBatalha(LIZARD);break;case 3:chamarBatalha(SHADOW);break;case 4:chamarBatalha(BAHAMUT);break;case 5:chamarBatalha(ULTIMA);break;default:cout << "Comando não recohecido... tente outra vez\n\n" << endl;menuJogo();break;}}int chamarBatalha(Monstro monstro){cout << "\n\nApareceu um " << monstro.nome << endl;menuBatalha(monstro);return 0;}int menuBatalha(Monstro monstro){int escolha;cout << "\n\nSeu HP: " << player.hp << "/" << player.max_hp << endl;cout << "Seu MP: " << player.mp << "/" << player.max_mp << endl;cout << "Escolha um ataque:" << endl;cout << "\n1 - Ataque normal" << endl;cout << "\n2 - Fogo" << endl;cin >> escolha;switch(escolha){case 1:monstro.hp -= player.forca * 7;cout << "\nVocê atacou!" << endl;break;case 2:monstro.hp -= player.forca * 10;player.mp -= 7;cout << "\nVocê usou fogo!" << endl;break;default:cout << "\nComando não reconhecido..." << endl;menuBatalha(monstro);break;}if (monstro.hp <= 0) // como if e else tem somente uma instrução, não é necessario o uso das chavesganhou();elsemonstroIA(monstro);return 0; // este return pertence à função}int monstroIA(Monstro monstro){int random;random = getRandom(1, 4);switch(random){case 1:case 2:case 3:cout << "\n\n" << monstro.nome << "Atacou!" << endl;player.hp -= monstro.forca;break;case 4:cout << "\n\n" << monstro.nome << " usou seu ataque especial" << endl;player.hp -= monstro.forca * 2;break;}if (player.hp <= 0)perdeu();elsemenuBatalha(monstro);return 0;}//random de de 1 a 4int getRandom(int de, int ate){srand(time(NULL));int random = (rand() % ate) + de;cout << random;return random;}int perdeu(){cout << "\nPerdeu... Mais sorte na próxima! :C" << endl;menuJogo();return 0;}int ganhou(){cout << "\n\nGanhou!!! e subiu de nivel" << endl;player.forca += 2; //as modificações para "subir de nivel"player.max_hp += 10;player.max_mp += 7;player.hp = player.max_hp; //recuperar a energiaplayer.mp = player.max_mp;cin.get();menuJogo();return 0;}
Baixe o source e o executavel aqui