Advertisement
Draconk

cutre_rpg

Feb 14th, 2014
403
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. typedef struct base {
  7.     char *nombre;
  8.     int nivel;
  9.     int exp;
  10.     int HP;
  11.     int constitucion;
  12.     int fuerza;
  13.     int destreza;
  14. };
  15.  
  16. void crear_heroe(struct base *heroe){
  17.     srand(time(NULL));
  18.     char var_name[100];
  19.     printf("escribe un nombre\n");
  20.     fflush(stdin);
  21.     gets(var_name);
  22.     fflush(stdin);
  23.     heroe->nombre=(char*)malloc(strlen(var_name)*sizeof(char));
  24.     strcpy(heroe->nombre, var_name);
  25.     system("cls");
  26.     heroe->nivel=1;
  27.     heroe->exp=0;
  28.     heroe->constitucion=(rand()%10 + 10);
  29.     heroe->fuerza=(rand()%10 + 10);
  30.     heroe->HP=((heroe->fuerza) * (heroe->constitucion)) /4;
  31.     printf("nombre: %s\n", heroe->nombre);
  32.     printf("Vida: %d\n", heroe->HP);
  33.     printf("Fuerza: %d\n", heroe->fuerza);
  34.     printf("Constitucion: %d\n", heroe->constitucion);
  35. }
  36.  
  37. void crear_enemigo(struct base *enemigo){
  38.     srand(time(NULL));
  39.     int minion=0, salida=0;
  40.     while(salida!=1){
  41.         minion=rand()%3 + 0;
  42.         if (minion<4 && minion>0)
  43.             salida=1;
  44.         //printf("\n\n\n%d\n", minion);
  45.     }
  46.     switch (minion){
  47.         case 1 :
  48.             enemigo->nombre=(char *)malloc(strlen("goblin")*sizeof(char));
  49.             strcpy(enemigo->nombre, "goblin");
  50.             enemigo->HP=50;
  51.             enemigo->fuerza=9;
  52.             enemigo->constitucion=5;
  53.             enemigo->nivel=1;
  54.             enemigo->exp=20;
  55.             enemigo->destreza=10;
  56.             break;
  57.         case 2 :
  58.             enemigo->nombre=(char *)malloc(strlen("kappa")*sizeof(char));
  59.             strcpy(enemigo->nombre, "kappa");
  60.             enemigo->HP=70;
  61.             enemigo->fuerza=13;
  62.             enemigo->constitucion=8;
  63.             enemigo->nivel=2;
  64.             enemigo->exp=500;
  65.             enemigo->destreza=10;
  66.             break;
  67.         case 3 :
  68.             enemigo->nombre=(char *)malloc(strlen("dragon")*sizeof(char));
  69.             strcpy(enemigo->nombre, "dragon");
  70.             enemigo->HP=200;
  71.             enemigo->fuerza=17;
  72.             enemigo->constitucion=13;
  73.             enemigo->nivel=5;
  74.             enemigo->exp=2000;
  75.             enemigo->destreza=10;
  76.             break;
  77.     }
  78.     printf("\nNombre: %s\n", enemigo->nombre);
  79.     printf("Vida: %d\n", enemigo->HP);
  80.     printf("Fuerza: %d\n", enemigo->fuerza);
  81.     printf("Constitucion: %d\n", enemigo->constitucion);
  82. }
  83.  
  84. void combate(struct base *heroe, struct base *enemigo, int opcion){
  85.     int dado1, dado2, move, salida=0;
  86.     srand(time(NULL));
  87.     while(salida!=1){
  88.         dado1=rand()%6;
  89.         if (dado1>0 && dado1<7)
  90.             salida=1;
  91.     }
  92.     salida=0;
  93.     while(salida!=1){
  94.         dado2=rand()%6;
  95.         if (dado2>0 && dado2<7)
  96.             salida=1;
  97.     }
  98.     move=dado1+dado2;
  99.     switch (opcion) {
  100.     case 1 : //atacar
  101.         if (move<6){
  102.             printf("\nAtacas con tu espada pero fallas\n");
  103.             printf("%s aprovecha la oportunidad para hacer %d de daño\n", enemigo->nombre, enemigo->fuerza);
  104.             heroe->HP=(heroe->HP) - (enemigo->fuerza);
  105.         }
  106.         else if (move>10){
  107.             printf("\nAtacas con tu espada por un daño de %d\n", heroe->fuerza);
  108.             enemigo->HP=(enemigo->HP) - (heroe->fuerza);
  109.         }
  110.         else {
  111.             printf("\nAtacas con tu espada por un daño de %d \nel %s tambien te ataca haciendo %d de daño\n", heroe->fuerza, enemigo->nombre, (enemigo->fuerza)/2);
  112.             heroe->HP=(heroe->HP) - (enemigo->fuerza)/2;
  113.             enemigo->HP=(enemigo->HP) - (heroe->fuerza);
  114.         }
  115.         break;
  116.     case 2 : //defender
  117.         if (move<6){
  118.             printf("\nTe defiendes pero el %s te ataca por el otro lado haciendo %d de daño\n", enemigo->nombre, enemigo->fuerza);
  119.             heroe->HP=(heroe->HP) - (enemigo->fuerza);
  120.         }
  121.         else if (move>10){
  122.             printf("\nTe defiendes de todo el daño del %s", enemigo->nombre);
  123.         }
  124.         else {
  125.             printf("\nTe defiendes reduciendo 3/4 del daño de %s , recibes %d de daño\n", enemigo->nombre, (enemigo->fuerza)/4);
  126.             heroe->HP=(heroe->HP) - (enemigo->fuerza)/4;
  127.         }
  128.         break;
  129.     case 3 : //curar
  130.         if (move<6){
  131.             printf("\nPierdes la concentracion y no te curas nada de HP\n");
  132.             printf("\nEl %s aprovecha y te hace %d de daño", enemigo->nombre, enemigo->fuerza/2);
  133.             heroe->HP=heroe->HP - (enemigo->fuerza)/2;
  134.         }
  135.         else if (move>10){
  136.             printf("\nTe curas %d de HP\n", heroe->fuerza/2);
  137.             heroe->HP=heroe->HP + (heroe->fuerza)/2;
  138.         }
  139.         else {
  140.             printf("\nTe curas %d de HP pero el %s te hace %d de daño\n", heroe->fuerza/2, enemigo->nombre, (enemigo->fuerza)/2);
  141.             heroe->HP=(heroe->HP) + (heroe->fuerza)/2;
  142.             heroe->HP=(heroe->HP) - (enemigo->fuerza)/2;
  143.         }
  144.         break;
  145.     case 4 :
  146.         printf("\nHuyes como la nenaza que eres\n");
  147.         heroe->HP=0;
  148.         break;
  149.     }
  150. }
  151.  
  152. int menu(struct base *heroe, struct base *enemigo){
  153.     int opcion;
  154.     printf("%c-----------------------------------------------%c\n", 218, 191);
  155.     printf("%c 1. Atacar \t\%c %s \t%c %s \t%c\n", 179, 179, heroe->nombre, 179, enemigo->nombre, 179);
  156.     printf("%c 2. Defender \t\%c HP: %d \t%c HP: %d \t%c\n", 179, 179, heroe->HP, 179, enemigo->HP, 179);
  157.     printf("%c 3. Curar \t\%c Nivel %d \t%c Nivel %d \t%c\n", 179, 179, heroe->nivel, 179, enemigo->nivel, 179);
  158.     printf("%c 4. Huir \t\%c Fuerza %d \t%c Fuerza %d \t%c\n", 179, 179, heroe->fuerza, 179, enemigo->fuerza, 179);
  159.     printf("%c-----------------------------------------------%c\n", 192, 217);
  160.     scanf("%d", &opcion);
  161.     system("cls");
  162.     return opcion;
  163. }
  164.  
  165. int main(){
  166.     struct base heroe;
  167.     struct base enemigo;
  168.     int opcion;
  169.  
  170.     crear_heroe(&heroe);
  171.     crear_enemigo(&enemigo);
  172.     while(enemigo.HP>0 && heroe.HP>0){
  173.         opcion=menu(&heroe, &enemigo);
  174.         combate(&heroe, &enemigo, opcion);
  175.         if (enemigo.HP<=0){
  176.             system("cls");
  177.             heroe.exp=heroe.exp + enemigo.exp;
  178.             printf("Felicidades has derrotado el %s y has obtenido %d de experiencia \n", enemigo.nombre, enemigo.exp);
  179.         }
  180.         else if (heroe.HP<=0){
  181.             system("cls");
  182.             printf("Vaya estas como muerto no?\n");
  183.         }
  184.     }
  185.     system("pause");
  186.     return 0;
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement