Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* _
- ___ (_) ___ __ _ ___
- / _ \ | |/ _ \ / _` |/ _ \
- | (_) | | | (_) | (_| | (_) |
- \___/ _/ |\___/ \__, |\___/
- |__/ |___/
- Versão 0.7 - Por Samuel Pordeus
- Adicionado à equipe de desenvolvimento na versao 0.5: Elcius Ferreira
- Bugs conhecidos:
- Espacos no nome do personagem bugam o jogo loucamente *corrigido com gets*
- Inimigo nível 0 na dungeon com dificuldade 1 *CORRIGIDO*
- Features dicionadas nesta versao:
- Melhora significante de eficiencia no codigo
- Coisas a se adicionar:
- Sistema de classes *ADICIONADO*
- Rebalanceamento das dungeons *DONE*
- Nomes pras dungeons
- Loja de armas *NO PROCESSO*
- Agradecimentos especiais:
- George Nunes, Marcello Marques, Gabriel Gonçalves, Lucas Lacerda, Klebson Lima, Elcius Ferreira.
- */
- #include <stdio.h>
- #include <math.h>
- #include <string.h>
- #include <stdlib.h>
- #include <time.h>
- #define MAX 5
- #define SLEEP 25000
- int main (void){
- //PRIMEIRO SETOR: Declaracao de variaveis LINHA 9-56
- int menu, input, c, d, i , x, dificuldade, loop1; //Variaveis sistema
- int gold, g, j, h, hp, forinimigo; //Variaveis jogo
- srand (time(NULL)); //Seed
- //Estruturas
- struct arma
- {
- int dano,danoitem1,danoitem2,danoitem3;
- int velocidade;
- char nome[20]; //A SER IMPLEMENTADO
- };
- struct arma a[15]; //Tipos de arma disponiveis atualmente
- a[0].dano = 1;
- a[1].dano = 2;
- a[2].dano = 3;
- a[3].dano = 4;
- a[4].dano = 5;
- a[5].dano = 6;
- a[6].dano = 10;
- a[7].dano = 25;
- a[8].dano = 47;
- a[9].dano = 100;
- a[10].danoitem1 = 15;
- a[11].danoitem2 = 50;
- a[12].danoitem3 = 120;
- typedef struct personagem {
- int numero;
- char nome[100];
- char classe[50];
- int agilidade;
- int forca;
- int vida;
- };
- //SEGUNDO SETOR: INICIO DO JOGO - LINHA 58-149
- printf("Bem-vindo ao jogo! - Versao 0.7 Alpha\n");
- printf("\nDigite o nome do seu personagem: ");
- struct personagem p[10]; //Nome do personagem
- //scanf("%s",p[1].nome);
- gets(p[1].nome);
- printf("\nCriando personagem.");
- //scanf("%i",p[2].classe);
- escolhaclasse:
- printf("\nEscolha a classe\n > Mago = 1\n > Cavaleiro = 2\n > Ladino = 3\n > Barbaro = 4\n");
- int classez;
- scanf("%i", &classez);
- switch (classez) {
- case 1:
- p[2].classe[1] = 1;
- printf("Mago selecionado");
- break;
- case 2:
- p[2].classe[2] = 2;
- printf("Cavaleiro selecionado");
- break;
- case 3:
- p[2].classe[3] = 3;
- printf("Ladino selecionado");
- break;
- case 4:
- p[2].classe[4] = 4;
- printf("Barbaro selecionado");
- break;
- if (classez < 1 || classez >4){
- printf("\nErro. Classe invalida (minimo 1 - maximo 4)\n");
- goto escolhaclasse;
- }
- }
- struct ambos //Estrutura que integra as estruturas de personagem e arma
- {
- struct personagem pers[MAX];
- struct arma wpn;
- };
- struct ambos principal; //Gerando o personagem
- //Nao me perguntei pq o [2] ao lado de pers, acho que nao precisa.
- //Mas teria que fazer muita coisa pra mudar a essa altura.
- rolamento:
- principal.pers[2].forca = 0;
- principal.pers[2].agilidade = 0;
- principal.pers[2].vida = 0;
- switch (classez){
- case 1: //Mago
- principal.pers[2].forca = 21 + rand()%10;
- break;
- case 2: //Cavaleiro
- principal.pers[2].forca = 10 + rand()%10;
- break;
- case 3: //Ladino
- principal.pers[2].forca = 5 + rand()%10;
- break;
- case 4: // Barbaro
- principal.pers[2].forca = 13 + rand()%10;
- break;
- }
- switch (classez){
- case 1: //Mago
- principal.pers[2].agilidade = 2 + rand()%10;
- break;
- case 2: //Cavaleiro
- principal.pers[2].agilidade = 10 + rand()%10;
- break;
- case 3: //Ladino
- principal.pers[2].agilidade = 15 + rand()%10;
- break;
- case 4: // Barbaro
- principal.pers[2].agilidade = 8 + rand()%10;
- break;
- }
- switch (classez){
- case 1: //Mago
- principal.pers[2].vida = 30 + rand()%50;
- break;
- case 2: //Cavaleiro
- principal.pers[2].vida = 100 + rand()%50;
- break;
- case 3: //Ladino
- principal.pers[2].vida = 50 + rand()%50;
- break;
- case 4: // Barbaro
- principal.pers[2].vida = 70 + rand()%50;
- break;
- }
- hp = principal.pers[2].vida;
- x = rand()%5;
- principal.wpn.dano = a[x].dano;
- //Stats fornecidos ao personagem abaixo
- i = 1; // NIVEL DO PERSONAGEM
- printf("\nForca: %i\n", principal.pers[2].forca);
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf("\nAgilidade: %i\n", principal.pers[2].agilidade);
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf("\nVida: %i\n", principal.pers[2].vida);
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf("\nDano da arma: %i\n", principal.wpn.dano);
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf("\nVoce deseja dar reroll nos stats do personagem?\n");
- printf("\nSim, quero resetar os stats do personagem = 0 \nQuero continuar com o personagem = 1\n");
- int reroll;
- scanf( "%d", &reroll );
- switch (reroll) { //REROLL DO PERSONAGEM
- case 1:
- printf("\nComecando o jogo.");
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf(".");
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf(".\n");
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- break;
- case 0:
- printf("\nResetando.");
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf(".");
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf(".\n");
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- goto rolamento;
- }
- //TERCEIRO SETOR: JOGO LINHA 218-FINAL
- gold = 0;
- //DECLARACAO DE FUNCOES
- void dungeon(){
- erro:
- printf( "\nEntrar na dungeon? 1 = Sim. 0 = Nao\n" );
- int simnao;
- scanf( "%d", &simnao );
- switch (simnao) {
- case 1:
- printf("\nDigite a dificuldade desejada, Limite de 100: \n");
- scanf("%i",&dificuldade);
- if (dificuldade < 1 || dificuldade >100){
- printf("\nErro. dificuldade invalida (minimo 1 - maximo 100)\n");
- goto erro;
- }
- else{
- forinimigo = (20*dificuldade)/2 + (rand()%30 + dificuldade*10);
- if (hp < 0){
- printf ("HP insuficiente, se cure antes de voltar pra ca\n");
- break;
- }
- else{
- printf("\nProcurando adversario adequado\n");
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf("\nAdversario de nivel: %i encontrado! Preparando para a batalha\n", ((forinimigo + 4) / 10));
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- if (principal.pers[2].forca + principal.pers[2].agilidade + principal.wpn.dano + ((rand()%8) - 4) >= forinimigo){
- gold = gold + forinimigo/3;
- printf ("\nVoce ganhou!! %i de gold encontrado no loot. \n",forinimigo/3);
- }
- else{
- hp = hp - forinimigo;
- if (hp<0){
- hp = 0;
- }
- printf("\nFracasso, voce perdeu. Vida atual: %i \n", forinimigo, hp);
- }
- break;
- }
- }
- case 0:
- printf ("\nVoltando ao menu principal...\n");
- break;
- }
- }
- void Shop ()
- {
- int item;
- switch (classez) {
- case 1: //ITENS PARA MAGOS
- printf ("\n Itens para um MAGO: \n");
- printf ("\n > Staff lvl 5 \n"
- " >> Custo: 100 Gold \n"
- " >> Para comprar digite: 1 \n");
- printf ("\n > Staff lvl 10 \n"
- " >> Custo: 200 Gold \n"
- " >> Para comprar digite: 2 \n");
- printf ("\n > Staff lvl 15 \n"
- " >> Custo: 350 Gold \n"
- " >> Para comprar digite: 3 \n");
- printf ("\n > Selection: \n");
- scanf ("%d", &item);
- switch (item) {
- case 1:
- if (gold < 100) {
- printf ("\n Gold insuficiente ! \n");}
- else {
- principal.wpn.dano = a[10].danoitem1;
- gold -= 100;
- printf ("\n Staff lvl 5 comprado com sucesso...\n");}
- break;
- case 2:
- if (gold < 200) {
- printf ("\n Gold insuficiente !"); }
- else {
- gold -= 200;
- principal.wpn.dano = a[11].danoitem2;
- printf ("\n Staff lvl 10 comprado com sucesso...\n"); }
- break;
- case 3:
- if ( gold < 350) {
- printf ("\n Gold insuficiente !"); }
- else {
- gold -= 350;
- principal.wpn.dano = a[12].danoitem3;
- printf ("\n Staff lvl 15 comprado com sucesso...\n"); }
- break;
- }
- break;
- case 2: //ITENS PARA CAVALEIROS
- printf ("\n Itens para um CAVALEIRO: \n");
- printf ("\n > Sword lvl 5 \n"
- " >> Custo: 100 Gold \n"
- " >> Para comprar digite: 1\n");
- printf ("\n > Sword lvl 10 \n"
- " >> Custo: 200 Gold \n"
- " >> Para comprar digite: 2 \n");
- printf ("\n > Sword lvl 15 \n"
- " >> Custo: 350 Gold \n"
- " >> Para comprar digite: 3 \n");
- scanf ("%d", &item);
- switch (item) {
- case 1:
- if (gold < 100) {
- printf ("\n Gold insuficiente ! \n"); }
- else {
- gold -= 100;
- principal.wpn.dano = a[10].danoitem1;
- printf ("\n Sword lvl 5 comprada com sucesso...\n"); }
- break;
- case 2:
- if (gold < 200) {
- printf ("\n Gold insuficiente ! \n");}
- else {
- gold -= 200;
- principal.wpn.dano = a[11].danoitem2;
- printf ("\n Sword lvl 10 comprada com sucesso...\n"); }
- break;
- case 3:
- if (gold < 350) {
- printf ("\n Gold insuficiente ! \n");}
- else {
- gold -= 350;
- principal.wpn.dano = a[12].danoitem3;
- printf ("\n Sword lvl 15 comprada com sucesso...\n"); }
- break;
- }
- break;
- case 3: //ITENS PARA LADINOS
- printf ("\n Itens para um LADINO: \n");
- printf ("\n > Dagger lvl 5 \n"
- " >> Custo: 100 Gold \n"
- " >> Para comprar digite: 1 \n");
- printf ("\n > Dagger lvl 10 \n"
- " >> Custo: 200 Gold \n"
- " >> Para comprar digite: 2 \n");
- printf ("\n > Dagger lvl 15 \n"
- " >> Custo: 350 Gold \n"
- " >> Para comprar digite: 3 \n");
- scanf ("%d", &item);
- switch (item) {
- case 1:
- if (gold < 100) {
- printf ("\n Gold insuficiente ! \n");}
- else {
- gold -= 100;
- principal.wpn.dano = a[10].danoitem1;
- printf ("\n Dagger lvl 5 comprada com sucesso...\n"); }
- break;
- case 2:
- if (gold < 100) {
- printf ("\n Gold insuficiente ! \n");}
- else {
- gold -= 200;
- principal.wpn.dano = a[11].danoitem2;
- printf ("\n Dagger lvl 10 comprada com sucesso...\n"); }
- break;
- case 3:
- if (gold < 350) {
- printf ("\n Gold insuficiente ! \n");}
- else {
- gold -= 350;
- principal.wpn.dano = a[12].danoitem3;
- printf ("\n Dagger lvl 15 comprada com sucesso...\n"); }
- break;
- }
- break;
- case 4: //ITENS PARA BARBAROS
- printf ("\n Itens para um BARBARO: \n");
- printf ("\n > Axe lvl 5 \n"
- " >> Custo: 100 Gold \n"
- " >> Para comprar digite: 1 \n");
- printf ("\n > Axe lvl 10 \n"
- " >> Custo: 200 Gold \n"
- " >> Para comprar digite: 2 \n");
- printf ("\n > Axe lvl 15 \n"
- " >> Custo: 350 Gold \n"
- " >> Para comprar digite: 3 \n");
- scanf ("%d", &item);
- switch (item) {
- case 1:
- if (gold < 100) {
- printf ("\n Gold insuficiente ! \n");}
- else {
- gold -= 100;
- principal.wpn.dano = a[10].danoitem1;
- printf ("\n Axe lvl 15 comprado com sucesso...\n"); }
- break;
- case 2:
- if (gold < 100) {
- printf ("\n Gold insuficiente ! \n");}
- else {
- gold -= 200;
- principal.wpn.dano = a[11].danoitem2;
- printf ("\n Axe lvl 15 comprado com sucesso...\n"); }
- break;
- case 3:
- if (gold < 100) {
- printf ("\n Gold insuficiente ! \n");}
- else {
- gold -= 350;
- principal.wpn.dano = a[12].danoitem3;
- printf ("\n Axe lvl 15 comprado com sucesso...\n"); }
- break;
- }
- break;
- }
- }
- void cura()
- {
- printf("\nCurando, aguarde." );
- for(c=1;c<=40000;c++)
- for(d=1;d<=40000;d++) {}
- printf (".");
- for(c=1;c<=37500;c++)
- for(d=1;d<=37500;d++) {}
- printf (".\n");
- for(c=1;c<=35000;c++)
- for(d=1;d<=35000;d++) {}
- printf( "\n Personagem curado! \n" );
- hp = principal.pers[2].vida;
- }
- void levelup()
- {
- printf( "\nPara upar custa %i moedas. Sim = 1. Nao = 0.\n", (50 + (i*10)));
- int simnao;
- scanf( "%d", &simnao );
- switch (simnao) {
- case 1:
- if (gold < 50+(i*10)){
- printf("\n Gold insuficiente \n");
- }
- else{
- switch (classez){
- case 1:
- g = 7 + rand()%4;
- break;
- case 2:
- g = 6 + rand()%3;
- break;
- case 3:
- g = 5 + rand()%3;
- break;
- case 4:
- g = 5+ rand()%5;
- break;
- }
- switch (classez){
- case 1:
- j = 3 + rand()%3;
- break;
- case 2:
- j = 6 + rand()%3;
- break;
- case 3:
- j = 7 + rand()%3;
- break;
- case 4:
- j = 3+ rand()%5;
- break;
- }
- if (classez == 1){
- hp = 30 + rand()%20; //HP DO CAVALEIRO É MAIOR Q O DOS OUTROS
- break;
- }
- else{
- h = 15 + rand()%10;
- break;
- }
- i = i + 1;
- printf("\nVoce ganhou %i de forca!\n", g);
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf("\nVoce ganhou %i de Agilidade!\n", j);
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- printf("\nVoce ganhou %i de Vida!\n", h);
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- principal.pers[2].forca = principal.pers[2].forca + g;
- principal.pers[2].agilidade = principal.pers[2].agilidade + j;
- principal.pers[2].vida = principal.pers[2].vida + h;
- gold = gold - (50 +i*10);
- case 0:
- printf("\nVoltando ao menu principal\n");
- for(c=1;c<=SLEEP;c++)
- for(d=1;d<=SLEEP;d++) {}//ESPERA CASUAL RSRS
- break;
- }
- }
- }
- for (menu = 0 ; menu <= 30000 ; menu++){ //LOOP PARA INTERACAO DE MENU SEM USAR GOTO
- //INTERACAO POR MENU
- printf( "\nMenu Principal\n" );
- printf( "1. Dungeon\n" );
- printf( "2. Cura\n" );
- printf( "3. Upar\n" );
- printf( "4. Status\n" );
- printf( "5. Shop\n" );
- printf( "Selection: " );
- scanf( "%d", &input );
- switch ( input ) {
- case 1:
- dungeon(); //DUNGEON GRIND
- break;
- case 2:
- cura(); //CURA
- break;
- case 3:
- levelup(); //LEVELUP
- break;
- case 4: //STATS
- printf(":::Seu personagem\n:::Forca: %i | Agilidade: %i | Dano da arma: %i | \n:::Vida total: %i | Vida no momento: %i | Gold: %i | Nivel: %i |\n| Nome: %s",
- principal.pers[2].forca, principal.pers[2].agilidade, principal.wpn.dano,
- principal.pers[2].vida, hp, gold, i,p[1].nome);
- break;
- case 5:
- Shop(); //SHOP
- break;
- default:
- printf( "\nTente novamente!\n" );
- break;
- }
- getchar();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement