Vasigap 0 #1 Postado 18 Janeiro, 2008 Bom,venho aqui postar o primeiro jogo feito por mim... Sim,nao fiz 100% , mas usei uma pequena base....e estou adicionando novas coisas =] Coisas adicionadas por mim > Xp,level,skills,skill de magia, level de skills , etc =] ae vai o link http://rapidshare.de/files/38330668/Primeiro_jogo.cpp.html Logo logo eu atualizo ele com as coisas novas q eu estou fazendo =] Deem suas opinioes,levando em consideração que comecei a programa hoje Oo hahuahuha Compartilhar este post Link para o post Compartilhar em outros sites
Flamingo 0 #2 Postado 21 Janeiro, 2008 Eu sei que não parece educado Mas você conhece o "Agnor"? Compartilhar este post Link para o post Compartilhar em outros sites
Baxnie2 0 #3 Postado 29 Janeiro, 2008 ja usei essa base a 1 ano atras... ta bom o jogo sim tenta fazer classes, novos arquivos, nao deixar tudo no mesmo e depois usa opengl/allegro/sdl pra por 1 visual nisso Compartilhar este post Link para o post Compartilhar em outros sites
Tunico 0 #4 Postado 29 Janeiro, 2008 Nao gostei muito. mais como e seu primeiro jogo tem uns creditos. joguei um poco mais nao fez muito meu estilo.; =') Compartilhar este post Link para o post Compartilhar em outros sites
Thuor 0 #5 Postado 29 Janeiro, 2008 Muito bom, baixei e joguei. Rox. Compartilhar este post Link para o post Compartilhar em outros sites
Macrok 0 #6 Postado 29 Janeiro, 2008 Pow,eu so nb msm... Queria saber como eu jogo... Pq ele é .cpp Como eu abro um arkivo .cpp??? PS:Eu so nb msm,nunka mexi com programação,só tava aki pra ver um treco,e me interesei pelo nome... //Macrok Compartilhar este post Link para o post Compartilhar em outros sites
Vasigap 0 #7 Postado 2 Fevereiro, 2008 Eu sei que não parece educado Mas você conhece o "Agnor"? Conheço.....mais vc n queh compara meu joiguinho feito em 10 minutos com o agnor neh ? husduhsdu pelo amor de deus ! =] Pow,eu so nb msm...Queria saber como eu jogo... Pq ele é .cpp Como eu abro um arkivo .cpp??? PS:Eu so nb msm,nunka mexi com programação,só tava aki pra ver um treco,e me interesei pelo nome... //Macrok Tem que compilar....eu compilo e posto depois....vo posta as coisas novas q eu fiz no jogo =] tah legalzinho até... =] Compartilhar este post Link para o post Compartilhar em outros sites
Chê. 1 #8 Postado 2 Fevereiro, 2008 Não gostei, tenta invoar mais. Os graficos e talz, poderia inovar. Mas pra primeiro jogo tá bom, aprovado. Compartilhar este post Link para o post Compartilhar em outros sites
vdzz 15 #9 Postado 2 Fevereiro, 2008 hmm, ta legalzin ja que é o primeiro jogo que voce criou. Só tente inovar mais na relação grafica do jogo, mudar um pouco mais o visual do game. Compartilhar este post Link para o post Compartilhar em outros sites
Vasigap 0 #10 Postado 6 Fevereiro, 2008 Eh...por enquanto eu vou trabalhar soh com o jogo pelo prompt mesmo....já que acho que muitos de vocÊs nao sabem o trabalho que é para transformar tudo isso em gráfico... hoje posto a nova "atualização" do jogo =] abraços e valeu pelos elogios =] Compartilhar este post Link para o post Compartilhar em outros sites
Pedro Vincenzo 0 #11 Postado 8 Fevereiro, 2008 Cara, você conheçe classes e hierarquias? Ahoy, você fez esse programa em C++ e não em C. Usa OpenGL, SDL você passa raiva (pareçe bom mais depois não presta). Compartilhar este post Link para o post Compartilhar em outros sites
sipmann 0 #12 Postado 14 Fevereiro, 2008 pra primeiro jogo ta bom... agora soh vai incrementando mais o source e depois sim parte pro visual... muitos querem comessar afobados por visual e dai na hora do source fica fraco! vlw Compartilhar este post Link para o post Compartilhar em outros sites
picanha 0 #13 Postado 10 Abril, 2008 Achei um bom passatempo ... Ajeitei uma coisa: case 2: if (player.mp >= 7 ){ monstro.hp -= player.magiaskill * 10; player.magiaxp += 2; player.mp -= 7; cout << "\nVoce usou o fogo!" << endl;} else if (player.mp <= 6 ){ cout << "\nVoce nao tem mana..."; goto ataque;} break; Quando vc usava mana... a mana ia ficando negativa, mas mesmo assim afetava... Agora ele te proibi de usar Atke de fogo tantas vezes seguidas... xD Flws, nathbort! xD Edit: Adicionei tbm o comando do windows: system("cls"); Que apaga toda aquela poluição visual... xD Flws.... Compartilhar este post Link para o post Compartilhar em outros sites
Vasigap 0 #14 Postado 14 Abril, 2008 Nossa...eu tinha chegado a trabalha no jogo tava bem avançado até...eu jah tinha arrumado o bug da mana, tinha feito um design bom(sem esse comando que eu nao sabia da existencia dele...vlw por me informar =] ) e tava tentando coloca um sistema de save... mais agora fui procura no meu pc e n to axando =/ caso eu axe eu posto aki como fico =] vlws pelos comentários e sugestões de todos ! =] Compartilhar este post Link para o post Compartilhar em outros sites
mos 0 #15 Postado 14 Abril, 2008 Sem a sua autorização, fiz pequenas mudanças, pensei em colocar gold também, pois criei um curandeiro e ia aproveitar e criar uma loja para comprar itens e seria bom ter gold pra controlar essa cura e venda/compra, mas já que o jogo é seu, num quis alterar demais. /* * Exemplo 9.4 - Hall of Monsters * Propriedade de [url]http://agnor.gamedev-pt.net[/url] * * Autor : João Portela aka Agnor * Modificações : Vasigap;Matheus Jacob * Data : 20/02/2004 a 21/02/2004 * Desc : Hall of Monsters - jogo-tutorial * */ #include <iostream> #include <stdlib.h.> #include <windows.h> //para usar o GetTickCount(); using namespace std; /************************************ **************ESTRUTURAS************* ************************************/ struct Personagem { int hp; //os pontos de vida int mp; //Pontos de Mana int max_hp; // vai ser usada para recuperar o personagem no fim de cada partida int max_mp; // como dito em cima..... int forcaskill; int forcaxp; int forcamaxp; int magiaskill; int magiaxp; int magiamaxp; int xp; // a experiencia do personagem int maxp; // max xp int level; // level do personagem }; struct Monstro { int hp; // HP do monstro int forca; //forca do monstro //monstros não necessitam de MP char *nome; // necessário para podermos alterar o valor do nome sempre que quisermos... //será explicado na aula 11 - referências e apontadores }; ///////////////////////////////////// ///////////Variáveis///////////////// ///////////////////////////////////// Personagem player = {50, 7, 50, 7, 1, 0, 10, 1, 0, 10, 0, 10, 1}; Monstro ORC = { 40, 10, "Orc" }; Monstro LIZARD = { 60, 15, "Lizard" }; Monstro SHADOW = { 100, 23, "Shadow" }; Monstro BAHAMUT = { 140, 31, "Bahamut" }; Monstro ULTIMA = { 1000, 100, "Ultima" }; Monstro Vasigap = { 100, 100, "vasigap" }; // tentem matar este /* * Declarações das funções * */ int exp; int chamarCurandeiro(); int menuJogo(); int chamarStatus(); int chamarBatalha(Monstro monstro); int menuBatalha(Monstro monstro); int MonstroIA(Monstro monstro); int ganhou(); int perdeu(); int getRandom(int de, int ate); int checkXP(); int checkmagiaxp(); int checkforcaxp(); //que main pequeno não é? int main() { menuJogo(); cin.get(); return 0; } /* chamarBatalha(monstro); Desc: chama uma Batalha para um determinado monstro ( ex: chamarBatalha(SHADOW); ) */ int chamarBatalha (Monstro monstro) { system("cls"); cout << "\nApareceu um " << monstro.nome << endl; menuBatalha(monstro); return 0; } /* Cria o menu de Batalha ( utilizada por chamarBatalha(monstro); ) */ int chamarStatus() { system("cls"); cout << "\nSeu level : " << player.level << endl; cout << "Sua atual xp :" <<player.xp << "/" << player.maxp << endl; cout << "\n\nSeu HP: " << player.hp << '/' << player.max_hp << endl; cout << "Seu MP: " << player.mp << '/' << player.max_mp << endl; cout << "\nSeu level de skill de forca : " << player.forcaskill << endl; cout << "Sua xp de skill de forca : " << player.forcaxp << "/" << player.forcamaxp << endl; cout << "\nSeu level de magia : " << player.magiaskill; cout << "\nSua xp de Magia : " << player.magiaxp << "/" << player.magiamaxp << endl; cout << "\n\nPara voltar ao menu: " << endl; system("pause"); system("cls"); menuJogo(); return 0 ;} int chamarCurandeiro() { int escolha; system("cls"); cout << "\nOla aventureiro, se voce estiver ferido, posso lhe curar. Desejas ser curado?" << endl; cout << "1 - Curar e voltar ao menu" << endl; cout << "2 - Sair e voltar ao menu" << endl; cin >> escolha; switch (escolha) { case 1: system("cls"); player.hp=player.max_hp; player.mp=player.max_mp; menuJogo(); break; case 2: system("cls"); menuJogo(); break; default: system("cls"); cout << "Comando nao conhecido.... tente outra vez" << endl; chamarCurandeiro(); break; } return 0 ;} int menuBatalha (Monstro monstro) { int escolha; cout << "\nSeu HP: " << player.hp << '/' << player.max_hp << endl; cout << "Seu MP: " << player.mp << '/' << player.max_mp << endl; cout << "Seu level : " << player.level << endl; cout << "Sua atual xp :" <<player.xp << "/" << player.maxp << endl; cout << "\nSeu level de skill de forca : " << player.forcaskill << endl; cout << "Sua xp de skill de forca : " << player.forcaxp << "/" << player.forcamaxp << endl; cout << "\nSeu level de magia : " << player.magiaskill; cout << "\nSua xp de Magia : " << player.magiaxp << "/" << player.magiamaxp << endl; cout << "Escolha um ataque:" << endl; cout << "\n1 - Ataque normal" << endl; cout << "2 - Fogo" << endl; cin >> escolha; system("cls"); switch (escolha) { case 1: int num; srand(time(NULL)); num=rand()%20; monstro.hp -= player.forcaskill*7+num; player.forcaxp += 2; cout << "\nVoce atacou e tirou "<< player.forcaskill*7 << "+" << num << endl; break; case 2: if (player.mp >= 7 ){ srand(time(NULL)); num=rand()%10; monstro.hp -= player.magiaskill*10+num; player.magiaxp += 2; player.mp -= 7; cout << "\nVoce usou o fogo e tirou "<< player.magiaskill*10 << "+" << num << endl; break;} else{ cout << "\nSem mana para usar fogo..."; menuBatalha(monstro);} default: system("cls"); cout << "\nComando nao conhecido..." << endl; menuBatalha(monstro); //estamos a utilizar recursividade nas funções: o menu vai ser chamado de novo break; } if ( monstro.hp <= 0 ) ganhou(); //se só tiver uma instrução, um if não precisa de ter chavetas { ... } else MonstroIA(monstro); return 0; } // A intelegência artificial do Monstro. Para dar mais hipoteses aos jogadores // só há 25% do Monstro utilizar o ataque especial int MonstroIA(Monstro monstro) { exp = monstro.forca/4; int random; random = getRandom(1, 4); switch (random) { case 1: case 2: case 3: int num; srand(time(NULL)); num=rand()%20; cout << "\n" << monstro.nome << " atacou e tirou " << monstro.forca << "+" << num << endl; player.hp -= monstro.forca+num; break; case 4: srand(time(NULL)); num=rand()%10; cout << "\n" << monstro.nome << " usou o seu ataque especial e tirou " << monstro.forca*2 << "+" << num << endl; player.hp -= monstro.forca*2+num; break; } if (player.hp <= 0) perdeu(); else menuBatalha(monstro); return 0; } //a popular função getRandom int getRandom(int de, int ate) { srand(GetTickCount()); int random = ( rand() % ate ) + de; return random; } // perdeu (((( int perdeu() { cout << "\nPerdeu... Na proxima vez vais ter mais sorte :(" << endl; player.hp = player.max_hp; if (player.xp >= player.maxp) checkXP(); if (player.forcaxp >= player.forcamaxp) checkforcaxp(); if (player.magiaxp >= player.magiamaxp) checkmagiaxp(); menuJogo(); return 0; } //ganhou... e também subiu de nível :PPPP int ganhou() { int num; srand(time(NULL)); num=rand()%10; player.xp +=num+exp; cout << "\n\nWee ganhou!! Ganhou " << num << "+" << exp << " xp" << endl; cout << "Atual xp " << player.xp << "/" << player.maxp << endl; if (player.xp >= player.maxp) checkXP(); if (player.forcaxp >= player.forcamaxp) checkforcaxp(); if (player.magiaxp >= player.magiamaxp) checkmagiaxp(); //esperar..... cin.get(); menuJogo(); return 0; } // CheckXP int checkXP() { if (player.xp > player.maxp) cout << "[!] Voce Subiu de level ! Status recuperado. " << endl; player.max_hp += 10; player.max_mp += 7; player.hp = player.max_hp; //recuperar a energia player.mp = player.max_mp; player.maxp += player.level*10; player.level += 1; } // Checkforcaxp int checkforcaxp() { cout << "[!] Voce subiu no Skill Forca ! " << endl; player.forcaskill += 1; player.forcamaxp += player.forcaskill *10; } // Checkmagiaxp int checkmagiaxp() { cout << "[!] Voce subiu no Skill de Magia ! " << endl; player.magiaskill += 1; player.magiamaxp += player.magiaskill *10; } // o menu do jogo int menuJogo() { int escolha; cout << "\n1 - Orc HP:40 ATK:10" << endl; cout << "\n2 - Lizard HP:60 ATK:15" << endl; cout << "\n3 - Shadow HP:100 ATK:23" << endl; cout << "\n4 - Bahamut HP:140 ATK:31" << endl; cout << "\n5 - ULTIMA HP:1000 ATK:100" << endl; cout << "\n6 - Vasigap HP:100 ATK:100" << endl; cout << "\n7 - Ir ao Curandeiro" << endl; cout << "\n8 - Veja seu Status!" << endl; cout << "\nEscolha uma opcao:" << 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; case 6 : chamarBatalha(Vasigap); break; case 7 : chamarCurandeiro(); break; case 8 : chamarStatus(); break; default: system("cls"); cout << "Comando nao conhecido.... tente outra vez" << endl; menuJogo(); break; } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Vasigap 0 #16 Postado 14 Abril, 2008 Sem a sua autorização, fiz pequenas mudanças, pensei em colocar gold também, pois criei um curandeiro e ia aproveitar e criar uma loja para comprar itens e seria bom ter gold pra controlar essa cura e venda/compra, mas já que o jogo é seu, num quis alterar demais. /* * Exemplo 9.4 - Hall of Monsters * Propriedade de [url]http://agnor.gamedev-pt.net[/url] * * Autor : João Portela aka Agnor * Modificações : Vasigap;Matheus Jacob * Data : 20/02/2004 a 21/02/2004 * Desc : Hall of Monsters - jogo-tutorial * */ #include <iostream> #include <stdlib.h.> #include <windows.h> //para usar o GetTickCount(); using namespace std; /************************************ **************ESTRUTURAS************* ************************************/ struct Personagem { int hp; //os pontos de vida int mp; //Pontos de Mana int max_hp; // vai ser usada para recuperar o personagem no fim de cada partida int max_mp; // como dito em cima..... int forcaskill; int forcaxp; int forcamaxp; int magiaskill; int magiaxp; int magiamaxp; int xp; // a experiencia do personagem int maxp; // max xp int level; // level do personagem }; struct Monstro { int hp; // HP do monstro int forca; //forca do monstro //monstros não necessitam de MP char *nome; // necessário para podermos alterar o valor do nome sempre que quisermos... //será explicado na aula 11 - referências e apontadores }; ///////////////////////////////////// ///////////Variáveis///////////////// ///////////////////////////////////// Personagem player = {50, 7, 50, 7, 1, 0, 10, 1, 0, 10, 0, 10, 1}; Monstro ORC = { 40, 10, "Orc" }; Monstro LIZARD = { 60, 15, "Lizard" }; Monstro SHADOW = { 100, 23, "Shadow" }; Monstro BAHAMUT = { 140, 31, "Bahamut" }; Monstro ULTIMA = { 1000, 100, "Ultima" }; Monstro Vasigap = { 100, 100, "vasigap" }; // tentem matar este /* * Declarações das funções * */ int exp; int chamarCurandeiro(); int menuJogo(); int chamarStatus(); int chamarBatalha(Monstro monstro); int menuBatalha(Monstro monstro); int MonstroIA(Monstro monstro); int ganhou(); int perdeu(); int getRandom(int de, int ate); int checkXP(); int checkmagiaxp(); int checkforcaxp(); //que main pequeno não é? int main() { menuJogo(); cin.get(); return 0; } /* chamarBatalha(monstro); Desc: chama uma Batalha para um determinado monstro ( ex: chamarBatalha(SHADOW); ) */ int chamarBatalha (Monstro monstro) { system("cls"); cout << "\nApareceu um " << monstro.nome << endl; menuBatalha(monstro); return 0; } /* Cria o menu de Batalha ( utilizada por chamarBatalha(monstro); ) */ int chamarStatus() { system("cls"); cout << "\nSeu level : " << player.level << endl; cout << "Sua atual xp :" <<player.xp << "/" << player.maxp << endl; cout << "\n\nSeu HP: " << player.hp << '/' << player.max_hp << endl; cout << "Seu MP: " << player.mp << '/' << player.max_mp << endl; cout << "\nSeu level de skill de forca : " << player.forcaskill << endl; cout << "Sua xp de skill de forca : " << player.forcaxp << "/" << player.forcamaxp << endl; cout << "\nSeu level de magia : " << player.magiaskill; cout << "\nSua xp de Magia : " << player.magiaxp << "/" << player.magiamaxp << endl; cout << "\n\nPara voltar ao menu: " << endl; system("pause"); system("cls"); menuJogo(); return 0 ;} int chamarCurandeiro() { int escolha; system("cls"); cout << "\nOla aventureiro, se voce estiver ferido, posso lhe curar. Desejas ser curado?" << endl; cout << "1 - Curar e voltar ao menu" << endl; cout << "2 - Sair e voltar ao menu" << endl; cin >> escolha; switch (escolha) { case 1: system("cls"); player.hp=player.max_hp; player.mp=player.max_mp; menuJogo(); break; case 2: system("cls"); menuJogo(); break; default: system("cls"); cout << "Comando nao conhecido.... tente outra vez" << endl; chamarCurandeiro(); break; } return 0 ;} int menuBatalha (Monstro monstro) { int escolha; cout << "\nSeu HP: " << player.hp << '/' << player.max_hp << endl; cout << "Seu MP: " << player.mp << '/' << player.max_mp << endl; cout << "Seu level : " << player.level << endl; cout << "Sua atual xp :" <<player.xp << "/" << player.maxp << endl; cout << "\nSeu level de skill de forca : " << player.forcaskill << endl; cout << "Sua xp de skill de forca : " << player.forcaxp << "/" << player.forcamaxp << endl; cout << "\nSeu level de magia : " << player.magiaskill; cout << "\nSua xp de Magia : " << player.magiaxp << "/" << player.magiamaxp << endl; cout << "Escolha um ataque:" << endl; cout << "\n1 - Ataque normal" << endl; cout << "2 - Fogo" << endl; cin >> escolha; system("cls"); switch (escolha) { case 1: int num; srand(time(NULL)); num=rand()%20; monstro.hp -= player.forcaskill*7+num; player.forcaxp += 2; cout << "\nVoce atacou e tirou "<< player.forcaskill*7 << "+" << num << endl; break; case 2: if (player.mp >= 7 ){ srand(time(NULL)); num=rand()%10; monstro.hp -= player.magiaskill*10+num; player.magiaxp += 2; player.mp -= 7; cout << "\nVoce usou o fogo e tirou "<< player.magiaskill*10 << "+" << num << endl; break;} else{ cout << "\nSem mana para usar fogo..."; menuBatalha(monstro);} default: system("cls"); cout << "\nComando nao conhecido..." << endl; menuBatalha(monstro); //estamos a utilizar recursividade nas funções: o menu vai ser chamado de novo break; } if ( monstro.hp <= 0 ) ganhou(); //se só tiver uma instrução, um if não precisa de ter chavetas { ... } else MonstroIA(monstro); return 0; } // A intelegência artificial do Monstro. Para dar mais hipoteses aos jogadores // só há 25% do Monstro utilizar o ataque especial int MonstroIA(Monstro monstro) { exp = monstro.forca/4; int random; random = getRandom(1, 4); switch (random) { case 1: case 2: case 3: int num; srand(time(NULL)); num=rand()%20; cout << "\n" << monstro.nome << " atacou e tirou " << monstro.forca << "+" << num << endl; player.hp -= monstro.forca+num; break; case 4: srand(time(NULL)); num=rand()%10; cout << "\n" << monstro.nome << " usou o seu ataque especial e tirou " << monstro.forca*2 << "+" << num << endl; player.hp -= monstro.forca*2+num; break; } if (player.hp <= 0) perdeu(); else menuBatalha(monstro); return 0; } //a popular função getRandom int getRandom(int de, int ate) { srand(GetTickCount()); int random = ( rand() % ate ) + de; return random; } // perdeu (((( int perdeu() { cout << "\nPerdeu... Na proxima vez vais ter mais sorte :(" << endl; player.hp = player.max_hp; if (player.xp >= player.maxp) checkXP(); if (player.forcaxp >= player.forcamaxp) checkforcaxp(); if (player.magiaxp >= player.magiamaxp) checkmagiaxp(); menuJogo(); return 0; } //ganhou... e também subiu de nível :PPPP int ganhou() { int num; srand(time(NULL)); num=rand()%10; player.xp +=num+exp; cout << "\n\nWee ganhou!! Ganhou " << num << "+" << exp << " xp" << endl; cout << "Atual xp " << player.xp << "/" << player.maxp << endl; if (player.xp >= player.maxp) checkXP(); if (player.forcaxp >= player.forcamaxp) checkforcaxp(); if (player.magiaxp >= player.magiamaxp) checkmagiaxp(); //esperar..... cin.get(); menuJogo(); return 0; } // CheckXP int checkXP() { if (player.xp > player.maxp) cout << "[!] Voce Subiu de level ! Status recuperado. " << endl; player.max_hp += 10; player.max_mp += 7; player.hp = player.max_hp; //recuperar a energia player.mp = player.max_mp; player.maxp += player.level*10; player.level += 1; } // Checkforcaxp int checkforcaxp() { cout << "[!] Voce subiu no Skill Forca ! " << endl; player.forcaskill += 1; player.forcamaxp += player.forcaskill *10; } // Checkmagiaxp int checkmagiaxp() { cout << "[!] Voce subiu no Skill de Magia ! " << endl; player.magiaskill += 1; player.magiamaxp += player.magiaskill *10; } // o menu do jogo int menuJogo() { int escolha; cout << "\n1 - Orc HP:40 ATK:10" << endl; cout << "\n2 - Lizard HP:60 ATK:15" << endl; cout << "\n3 - Shadow HP:100 ATK:23" << endl; cout << "\n4 - Bahamut HP:140 ATK:31" << endl; cout << "\n5 - ULTIMA HP:1000 ATK:100" << endl; cout << "\n6 - Vasigap HP:100 ATK:100" << endl; cout << "\n7 - Ir ao Curandeiro" << endl; cout << "\n8 - Veja seu Status!" << endl; cout << "\nEscolha uma opcao:" << 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; case 6 : chamarBatalha(Vasigap); break; case 7 : chamarCurandeiro(); break; case 8 : chamarStatus(); break; default: system("cls"); cout << "Comando nao conhecido.... tente outra vez" << endl; menuJogo(); break; } return 0; } Que isso ! Modifique o quanto você quiser....o jogo nao eh meu....eu peguei uma base e apenas modifiquei,igual a você... =] Poxa ficou muito bom parabens =] Agora dah até pra brinca po... =] A razões deste jogo eh todos ajudarem a implementar, e servir de estudos a outras pessoas... por exemplo eu nao entendi 2 coisas que você colocou : srand(time(NULL)); num=rand()%20; pra q serve esse time null ? e como voce colocou rand apenas botando esse %20 ? Oo como que funciona isso ? =] sou bem iniciante ^^ abraços e parabens= ] Compartilhar este post Link para o post Compartilhar em outros sites
mos 0 #17 Postado 15 Abril, 2008 No jogo já tinha a função rand() usando o GetTickCount, eu só fiz mudá-la. Ela serve pra criar um número aleatório de 0 a x, onde x é você quem determina. No exemplo abaixo ele vai de 0 a 20, ou seja, é como se rolasse 1d20 (um dado de 20 faces). srand(time(NULL)); num=rand()%20; E aqui está a parte do código que já tinha a função: "//a popular função getRandom int getRandom(int de, int ate) { srand(GetTickCount()); int random = ( rand() % ate ) + de; return random; }" O time null é pra fazer sem esperar tempo algum, ou seja, tempo nulo. Se eu entendi bem, o jogo não é seu, mas o nome do tópico é "meu primeiro jogo"... Como assim? Não entendi essa hehe... Compartilhar este post Link para o post Compartilhar em outros sites
Vasigap 0 #18 Postado 15 Abril, 2008 No jogo já tinha a função rand() usando o GetTickCount, eu só fiz mudá-la. Ela serve pra criar um número aleatório de 0 a x, onde x é você quem determina. No exemplo abaixo ele vai de 0 a 20, ou seja, é como se rolasse 1d20 (um dado de 20 faces). srand(time(NULL)); num=rand()%20; E aqui está a parte do código que já tinha a função: "//a popular função getRandom int getRandom(int de, int ate) { srand(GetTickCount()); int random = ( rand() % ate ) + de; return random; }" O time null é pra fazer sem esperar tempo algum, ou seja, tempo nulo. Se eu entendi bem, o jogo não é seu, mas o nome do tópico é "meu primeiro jogo"... Como assim? Não entendi essa hehe... Eh só q eu n sabia q dava pra simplifica tanto assim o rand...eu fazia de outro jeito =] Bom, eu peguei o jogo, mais tava BEM esqueleto...e eu incrementei... Eu botei meu primeiro jogo, pois nao fica bom colocar : minha primeira modificação ¬¬ hahah abraços Edit: Como você pode ver no próprio jogo : xemplo 9.4 - Hall of Monsters * Propriedade de http://agnor.gamedev-pt.net * * Autor : João Portela aka Agnor * Modificações : Vasigap;Matheus Jacob * Data : 20/02/2004 a 21/02/2004 * Desc : Hall of Monsters - jogo-tutorial Compartilhar este post Link para o post Compartilhar em outros sites
mos 0 #19 Postado 15 Abril, 2008 Segue a versão 9.5, com algumas modificações e agora coloquei no arquivo a data da última modificação, logo no início. Se eu tiver tempo alguma dia, acho que implemento itens. Algumas modificações: Fiz uma proporção nos monstros, agora o HP deles são 2x o do anterior enquanto o ATK é 1,5x o do anterior, coloquei level limite para certos monstros, pois senão ficava muito fácil upar, criei gold que servirá tanto para ser curado, quanto para treinar skills e também é uma penalidade quando morre, perde metade do gold e antes, quando morria, não acontecia nada demais. Como já disse, criei um lugar para treino, com probabilidade de 25% de ter um treino excelente e 75% um treino moderado, modifiquei um monstro, tirei o vasigap e coloquei o guardian (desculpe se num gostou), coloquei algumas cores no jogo, apenas para dar um constrate maior, criei algumas variavéis para funcionar certas coisas e o resto você descobre jogando. É só copiar o código abaixo no compilador e compilar. /* * Exemplo 9.5 - Hall of Monsters * Propriedade de [url]http://agnor.gamedev-pt.net[/url] * * Autor : João Portela aka Agnor * Modificações : Vasigap;Matheus Jacob; mos * Data : 20/02/2004 a 21/02/2004 * Última modificação: 15/04/2008 * Desc : Hall of Monsters - jogo-tutorial * */ #include <iostream> #include <stdlib.h.> #include <windows.h> //para usar o GetTickCount(); using namespace std; /************************************ **************ESTRUTURAS************* ************************************/ struct Personagem { int hp; //os pontos de vida int mp; //Pontos de Mana int max_hp; // vai ser usada para recuperar o personagem no fim de cada partida int max_mp; // como dito em cima..... int forcaskill; int forcaxp; int forcamaxp; int magiaskill; int magiaxp; int magiamaxp; int xp; // a experiencia do personagem int maxp; // max xp int level; // level do personagem }; struct Monstro { int hp; // HP do monstro int forca; //forca do monstro //monstros não necessitam de MP char *nome; // necessário para podermos alterar o valor do nome sempre que quisermos... //será explicado na aula 11 - referências e apontadores }; ///////////////////////////////////// ///////////Variáveis///////////////// ///////////////////////////////////// Personagem player = {50, 7, 50, 7, 1, 0, 10, 1, 0, 10, 0, 10, 1}; Monstro ORC = { 40, 10, "Orc" }; Monstro LIZARD = { 80, 15, "Lizard" }; Monstro SHADOW = { 160, 23, "Shadow" }; Monstro BAHAMUT = { 320, 35, "Bahamut" }; Monstro ULTIMA = { 1280, 78, "Ultima" }; Monstro Guardian = { 640, 53, "Guardian" }; // tentem matar este /* * Declarações das funções * */ int exp,cura,gold=0; int chamarCurandeiro(); int menuJogo(); int chamarStatus(); int chamarBatalha(Monstro monstro); int menuBatalha(Monstro monstro); int MonstroIA(Monstro monstro); int ganhou(); int perdeu(); int getRandom(int de, int ate); int checkXP(); int checkmagiaxp(); int checkforcaxp(); //que main pequeno não é? int main() { menuJogo(); cin.get(); return 0; } /* chamarBatalha(monstro); Desc: chama uma Batalha para um determinado monstro ( ex: chamarBatalha(SHADOW); ) */ int chamarBatalha (Monstro monstro) { system("cls"); cout << "\nApareceu um " << monstro.nome << endl; menuBatalha(monstro); return 0; } /* Cria o menu de Batalha ( utilizada por chamarBatalha(monstro); ) */ int chamarStatus() { system("cls"); cout << "\nSeu level : " << player.level << endl; cout << "Sua atual xp :" <<player.xp << "/" << player.maxp << endl; cout << "Seu gold : " << gold << endl; cout << "\n\nSeu HP: " << player.hp << '/' << player.max_hp << endl; cout << "Seu MP: " << player.mp << '/' << player.max_mp << endl; cout << "\nSeu level de skill de forca : " << player.forcaskill << endl; cout << "Sua xp de skill de forca : " << player.forcaxp << "/" << player.forcamaxp << endl; cout << "\nSeu level de magia : " << player.magiaskill; cout << "\nSua xp de Magia : " << player.magiaxp << "/" << player.magiamaxp << endl; cout << "\n\nPara voltar ao menu: " << endl; system("pause"); system("cls"); menuJogo(); return 0 ;} int chamarCurandeiro() { int escolha; system("cls"); cura = player.level*10; cout << "Ola aventureiro, se voce estiver ferido, posso lhe curar por " << cura << " gold." << endl; cout << "Voce tem " << gold << " gold e seu HP atual eh " << player.hp << '/' << player.max_hp << "." << endl; cout << "1 - Curar e voltar ao menu" << endl; cout << "2 - Sair e voltar ao menu" << endl; cin >> escolha; switch (escolha) { case 1: if (gold >= cura && player.hp != player.max_hp){ cout << "\nVoce foi totalmente curado. Volte sempre." << endl; system("pause"); system("cls"); player.hp=player.max_hp; player.mp=player.max_mp; gold -= cura; menuJogo(); break;} else if (player.hp == player.max_hp){ cout << "\nVoce nao esta ferido." << endl; system("pause"); system("cls"); menuJogo(); break;} else{ cout << "\nVoce nao tem gold suficiente." << endl; system("pause"); system("cls"); menuJogo(); break;} case 2: system("cls"); menuJogo(); break; default: system("cls"); cout << "Comando nao conhecido.... tente outra vez" << endl; chamarCurandeiro(); break; } return 0 ; } int chamarTreino() { int escolha; system("cls"); cout << "Ola aventureiro, se voce esta fraco, eu posso lhe treinar." << endl; cout << "Voce tem " << gold << " gold e seu skill de forca/magia eh " << player.forcaxp << '/' << player.magiaxp << "." << endl; cout << "1 - Treinar forca 14gold" << endl; cout << "2 - Treinar magia 20gold" << endl; cout << "3 - Voltar ao menu" << endl; cin >> escolha; switch (escolha) { case 1: if (gold >= 14){ int random; random = getRandom(1, 4); switch (random) { case 1: case 2: case 3: int num; srand(time(NULL)); num=rand()%2+1; cout << "\nVoce teve um treino moderado e aumentou " << num << " pontos na skill de forca." << endl; player.forcaxp += num; system("pause"); system("cls"); menuJogo(); break; case 4: srand(time(NULL)); num=rand()%2+2; cout << "\nVoce teve um treino excelente e aumentou " << num << " pontos na skill de forca." << endl; player.forcaxp += num; system("pause"); system("cls"); menuJogo(); break; } } else { cout << "\nVoce nao tem gold suficiente." << endl; system("pause"); system("cls"); menuJogo(); break;} case 2: if (gold >= 20){ int random; random = getRandom(1, 4); switch (random) { case 1: case 2: case 3: int num; srand(time(NULL)); num=rand()%2+1; cout << "Voce teve um treino moderado e aumentou " << num << " pontos na skill de magia." << endl; player.magiaxp += num; system("pause"); system("cls"); menuJogo(); break; case 4: srand(time(NULL)); num=rand()%2+2; cout << "Voce teve um treino excelente e aumentou " << num << " pontos na skill de magia." << endl; player.magiaxp += num; system("pause"); system("cls"); menuJogo(); break; } } else { cout << "Voce nao tem gold suficiente." << endl; system("pause"); system("cls"); menuJogo(); break;} case 3: system("cls"); menuJogo(); break; default: system("cls"); cout << "Comando nao conhecido.... tente outra vez" << endl; chamarCurandeiro(); break; } return 0 ; } int menuBatalha (Monstro monstro) { int escolha; system ("color 0C"); cout << "\nSeu gold: " << gold << endl; cout << "Seu HP: " << player.hp << '/' << player.max_hp << endl; cout << "Seu MP: " << player.mp << '/' << player.max_mp << endl; cout << "Seu level : " << player.level << endl; cout << "Sua atual xp :" <<player.xp << "/" << player.maxp << endl; cout << "\nSeu level de skill de forca : " << player.forcaskill << endl; cout << "Sua xp de skill de forca : " << player.forcaxp << "/" << player.forcamaxp << endl; cout << "\nSeu level de magia : " << player.magiaskill; cout << "\nSua xp de Magia : " << player.magiaxp << "/" << player.magiamaxp << endl; cout << "Escolha um ataque:" << endl; cout << "\n1 - Ataque normal" << endl; cout << "2 - Fogo" << endl; cin >> escolha; system("cls"); switch (escolha) { case 1: int num; srand(time(NULL)); num=rand()%20; monstro.hp -= player.forcaskill*7+num; player.forcaxp += 2; cout << "\nVoce atacou e tirou "<< player.forcaskill*7 << "+" << num << endl; break; case 2: if (player.mp >= 7 ){ srand(time(NULL)); num=rand()%10; monstro.hp -= player.magiaskill*10+num; player.magiaxp += 2; player.mp -= 7; cout << "\nVoce usou o fogo e tirou "<< player.magiaskill*10 << "+" << num << endl; break;} else{ cout << "\nSem mana para usar fogo..."; menuBatalha(monstro);} default: system("cls"); cout << "\nComando nao conhecido..." << endl; menuBatalha(monstro); //estamos a utilizar recursividade nas funções: o menu vai ser chamado de novo break; } if ( monstro.hp <= 0 ) ganhou(); //se só tiver uma instrução, um if não precisa de ter chavetas { ... } else MonstroIA(monstro); return 0; } // A intelegência artificial do Monstro. Para dar mais hipoteses aos jogadores // só há 25% do Monstro utilizar o ataque especial int MonstroIA(Monstro monstro) { exp = monstro.forca/4; int random; random = getRandom(1, 4); switch (random) { case 1: case 2: case 3: int num; srand(time(NULL)); num=rand()%20; cout << "\n" << monstro.nome << " atacou e tirou " << monstro.forca << "+" << num << endl; player.hp -= monstro.forca+num; break; case 4: srand(time(NULL)); num=rand()%10; cout << "\n" << monstro.nome << " usou o seu ataque especial e tirou " << monstro.forca*2 << "+" << num << endl; player.hp -= monstro.forca*2+num; break; } if (player.hp <= 0) perdeu(); else menuBatalha(monstro); return 0; } //a popular função getRandom int getRandom(int de, int ate) { srand(GetTickCount()); int random = ( rand() % ate ) + de; return random; } // perdeu (((( int perdeu() { cout << "\nVoce morreu e perdeu metade do seu gold. Mais sorte da proxima vez." << endl; player.hp = player.max_hp; gold = gold/2; if (player.xp >= player.maxp) checkXP(); if (player.forcaxp >= player.forcamaxp) checkforcaxp(); if (player.magiaxp >= player.magiamaxp) checkmagiaxp(); menuJogo(); return 0; } //ganhou... e também subiu de nível :PPPP int ganhou() { int num,din; srand(time(NULL)); num=rand()%10; player.xp +=num+exp; gold +=num*2+1; din = num*2+1; system ("color 0C"); cout << "\n\nVoce venceu!! Ganhou " << num << "+" << exp << " xp" << " e " << din << " gold." << endl; cout << "Atual xp " << player.xp << "/" << player.maxp << endl; system ("pause"); system ("cls"); if (player.xp >= player.maxp) checkXP(); if (player.forcaxp >= player.forcamaxp) checkforcaxp(); if (player.magiaxp >= player.magiamaxp) checkmagiaxp(); //esperar..... cin.get(); menuJogo(); return 0; } // CheckXP int checkXP() { if (player.xp > player.maxp) cout << "[!] Voce Subiu de level ! Status recuperado. " << endl; player.max_hp += 10; player.max_mp += 7; player.hp = player.max_hp; //recuperar a energia player.mp = player.max_mp; player.maxp += player.level*10; player.level += 1; system ("pause"); system ("cls"); } // Checkforcaxp int checkforcaxp() { cout << "[!] Voce subiu no Skill Forca ! " << endl; player.forcaskill += 1; player.forcamaxp += player.forcaskill *10; system ("pause"); system ("cls"); } // Checkmagiaxp int checkmagiaxp() { cout << "[!] Voce subiu no Skill de Magia ! " << endl; player.magiaskill += 1; player.magiamaxp += player.magiaskill *10; system ("pause"); system ("cls"); } // o menu do jogo int menuJogo() { int escolha; system ("color 0F"); cout << "\n1 - Orc HP:40 ATK:10" << endl; cout << "\n2 - Lizard HP:80 ATK:15" << endl; cout << "\n3 - Shadow HP:160 ATK:23" << endl; cout << "\n4 - Bahamut HP:320 ATK:35" << endl; cout << "\n5 - Guardian HP:640 ATK:53" << endl; cout << "\n6 - ULTIMA HP:1280 ATK:78" << endl; cout << "\n7 - Ir ao Curandeiro" << endl; cout << "\n8 - Treinar skills" << endl; cout << "\n9 - Veja seu Status!" << endl; cout << "\nEscolha uma opcao:" << endl; cin >> escolha; switch (escolha) { case 1: if (player.level <= 4){ chamarBatalha(ORC); break;} else { system("cls"); cout << "Seu level eh muito alto para enfrentar Orc." << endl; menuJogo(); break;} case 2: if (player.level <= 8){ chamarBatalha(LIZARD); break;} else { system("cls"); cout << "Seu level eh muito alto para enfrentar Lizard." << endl; menuJogo(); break;} case 3: if (player.level <= 12){ chamarBatalha(SHADOW); break;} else { system("cls"); cout << "Seu level eh muito alto para enfrentar Shadow." << endl; menuJogo(); break;} case 4: if (player.level <= 16){ chamarBatalha(BAHAMUT); break;} else { system("cls"); cout << "Seu level eh muito alto para enfrentar Bahamut." << endl; menuJogo(); break;} case 5: if (player.level <= 20){ chamarBatalha(Guardian); break;} else { system("cls"); cout << "Seu level eh muito alto para enfrentar Guardian." << endl; menuJogo(); break;} case 6 : chamarBatalha(ULTIMA); break; case 7 : chamarCurandeiro(); break; case 8 : chamarTreino(); break; case 9 : chamarStatus(); break; default: system("cls"); cout << "Comando nao conhecido.... tente outra vez" << endl; menuJogo(); break; } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Vasigap 0 #20 Postado 16 Abril, 2008 Po, ficou com outra cara ! =] Eu to trabalhando em um sistema de login/senha e save...e profissão....devo acabar hoje provavelmente, ae eu edito aki pra mostra como fico =] abraços Compartilhar este post Link para o post Compartilhar em outros sites