Advertisement
Draconk

rpg cutre

Apr 10th, 2014
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.74 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 maxHP;
  12.     int constitucion;
  13.     int fuerza;
  14.     int destreza;
  15.     int inteligencia;
  16. };
  17.  
  18. void crear_heroe(struct base *heroe){
  19.     srand(time(NULL));
  20.     char var_name[100];
  21.     system("cls");
  22.     printf("escribe un nombre\n");
  23.     fflush(stdin);
  24.  
  25.     gets(var_name);
  26.     fflush(stdin);
  27.     heroe->nombre=(char*)malloc(strlen(var_name)*sizeof(char));
  28.     strcpy(heroe->nombre, var_name);
  29.     system("cls");
  30.     heroe->nivel=1;
  31.     heroe->exp=0;
  32.     heroe->constitucion=(rand()%10 + 10);
  33.     heroe->fuerza=(rand()%10 + 10);
  34.     heroe->HP=((heroe->fuerza) * (heroe->constitucion)) /4;
  35.     heroe->maxHP=heroe->HP;
  36.     heroe->inteligencia=rand()%10 +10;
  37.     heroe->destreza=rand()%
  38.     printf("nombre: %s\n", heroe->nombre);
  39.     printf("Vida: %d\n", heroe->HP);
  40.     printf("Fuerza: %d\n", heroe->fuerza);
  41.     printf("Constitucion: %d\n", heroe->constitucion);
  42.     printf("Inteligencia: %d\n", heroe->inteligencia);
  43.     printf("Destreza: %d\n", heroe->destreza);
  44. }
  45.  
  46. void crear_enemigo(struct base *enemigo){
  47.     srand(time(NULL));
  48.     int minion=0, salida=0;
  49.     while(salida!=1){
  50.         minion=rand()%4 + 0;
  51.         if (minion<4 && minion>0)
  52.             salida=1;
  53.         //printf("\n\n\n%d\n", minion);
  54.     }
  55.     switch (minion){
  56.         case 1 :
  57.             enemigo->nombre=(char *)malloc(strlen("goblin")*sizeof(char));
  58.             strcpy(enemigo->nombre, "goblin");
  59.             enemigo->HP=50;
  60.             enemigo->fuerza=9;
  61.             enemigo->constitucion=5;
  62.             enemigo->nivel=1;
  63.             enemigo->exp=20;
  64.             enemigo->destreza=10;
  65.             break;
  66.         case 2 :
  67.             enemigo->nombre=(char *)malloc(strlen("kappa")*sizeof(char));
  68.             strcpy(enemigo->nombre, "kappa");
  69.             enemigo->HP=70;
  70.             enemigo->fuerza=13;
  71.             enemigo->constitucion=8;
  72.             enemigo->nivel=2;
  73.             enemigo->exp=500;
  74.             enemigo->destreza=10;
  75.             break;
  76.         case 3 :
  77.             enemigo->nombre=(char *)malloc(strlen("dragon")*sizeof(char));
  78.             strcpy(enemigo->nombre, "dragon");
  79.             enemigo->HP=200;
  80.             enemigo->fuerza=17;
  81.             enemigo->constitucion=13;
  82.             enemigo->nivel=5;
  83.             enemigo->exp=2000;
  84.             enemigo->destreza=10;
  85.             break;
  86.     }
  87.     printf("\nNombre: %s\n", enemigo->nombre);
  88.     printf("Vida: %d\n", enemigo->HP);
  89.     printf("Fuerza: %d\n", enemigo->fuerza);
  90.     printf("Constitucion: %d\n", enemigo->constitucion);
  91. }
  92.  
  93. void combate(struct base *heroe, struct base *enemigo, int opcion){
  94.     int dado1, dado2, move, salida=0;
  95.     srand(time(NULL));
  96.     while(salida!=1){
  97.         dado1=rand()%6;
  98.         if (dado1>0 && dado1<7)
  99.             salida=1;
  100.     }
  101.     salida=0;
  102.     while(salida!=1){
  103.         dado2=rand()%6;
  104.         if (dado2>0 && dado2<7)
  105.             salida=1;
  106.     }
  107.     move=dado1+dado2;
  108.     switch (opcion) {
  109.     case 1 : //atacar
  110.         if (move<6){
  111.             printf("\nAtacas con tu espada pero fallas\n");
  112.             printf("%s aprovecha la oportunidad para hacer %d de daño\n", enemigo->nombre, enemigo->fuerza);
  113.             heroe->HP=(heroe->HP) - (enemigo->fuerza);
  114.         }
  115.         else if (move>10){
  116.             printf("\nAtacas con tu espada por un daño de %d\n", heroe->fuerza);
  117.             enemigo->HP=(enemigo->HP) - (heroe->fuerza);
  118.         }
  119.         else {
  120.             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);
  121.             heroe->HP=(heroe->HP) - (enemigo->fuerza)/2;
  122.             enemigo->HP=(enemigo->HP) - (heroe->fuerza);
  123.         }
  124.         break;
  125.     case 2 : //defender
  126.         if (move<6){
  127.             printf("\nTe defiendes pero el %s te ataca por el otro lado haciendo %d de daño\n", enemigo->nombre, enemigo->fuerza);
  128.             heroe->HP=(heroe->HP) - (enemigo->fuerza);
  129.         }
  130.         else if (move>10){
  131.             printf("\nTe defiendes de todo el daño del %s", enemigo->nombre);
  132.         }
  133.         else {
  134.             printf("\nTe defiendes reduciendo 3/4 del daño de %s , recibes %d de daño\n", enemigo->nombre, (enemigo->fuerza)/4);
  135.             heroe->HP=(heroe->HP) - (enemigo->fuerza)/4;
  136.         }
  137.         break;
  138.     case 3 : //curar
  139.         if (move<6){
  140.             printf("\nPierdes la concentracion y no te curas nada de HP\n");
  141.             printf("\nEl %s aprovecha y te hace %d de daño", enemigo->nombre, enemigo->fuerza/2);
  142.             heroe->HP=heroe->HP - (enemigo->fuerza)/2;
  143.         }
  144.         else if (move>10){
  145.             printf("\nTe curas %d de HP\n", heroe->inteligencia/2);
  146.             heroe->HP=heroe->HP + (heroe->inteligencia)/2;
  147.         }
  148.         else {
  149.             printf("\nTe curas %d de HP pero el %s te hace %d de daño\n", heroe->inteligencia/2, enemigo->nombre, (enemigo->fuerza)/2);
  150.             heroe->HP=(heroe->HP) + (heroe->inteligencia)/2;
  151.             heroe->HP=(heroe->HP) - (enemigo->fuerza)/2;
  152.         }
  153.         if (heroe->HP > heroe->maxHP){
  154.             heroe->HP=heroe->maxHP;
  155.         }
  156.         break;
  157.     case 4 :
  158.         printf("\nHuyes como la nenaza que eres\n");
  159.         heroe->HP=0;
  160.         break;
  161.     }
  162. }
  163.  
  164. int menu(struct base *heroe, struct base *enemigo){
  165.     int orden;
  166.     printf("%c-----------------------------------------------%c\n", 218, 191);
  167.     printf("%c 1. Atacar \t\%c %s \t%c %s \t%c\n", 179, 179, heroe->nombre, 179, enemigo->nombre, 179);
  168.     printf("%c 2. Defender \t\%c HP: %d \t%c HP: %d \t%c\n", 179, 179, heroe->HP, 179, enemigo->HP, 179);
  169.     printf("%c 3. Curar \t\%c Nivel %d \t%c Nivel %d \t%c\n", 179, 179, heroe->nivel, 179, enemigo->nivel, 179);
  170.     printf("%c 4. Huir \t\%c Fuerza %d \t%c Fuerza %d \t%c\n", 179, 179, heroe->fuerza, 179, enemigo->fuerza, 179);
  171.     printf("%c-----------------------------------------------%c\n", 192, 217);
  172.     scanf("%d", &orden);
  173.     system("cls");
  174.     return orden;
  175. }
  176.  
  177. int main(){
  178.     FILE *save = NULL;
  179.     save=fopen("C:\\penes\\heroes.txt", "wb");
  180.     struct base heroe;
  181.     struct base enemigo;
  182.     struct base *ptr;
  183.     char opcion;
  184.     int orden;
  185.     /*printf("Quieres cargar un heroe? s/n \n");
  186.     opcion=getch();
  187.     if (opcion=='s' && opcion=='S'){
  188.         //fscanf(save, "%s %d %d %d %d %d %d %d %d %d", &heroe.nombre, &heroe.nivel, &heroe.exp, &heroe.HP, &heroe.maxHP, &heroe.constitucion, &heroe.fuerza, &heroe.fuerza, &heroe.destreza, &heroe.inteligencia);
  189.         fread(&heroe, sizeof(heroe), 1, save);
  190.  
  191.         opcion='f';
  192.     }
  193.     else {*/
  194.             while (opcion!='s' && opcion!='S'){
  195.             crear_heroe(&heroe);
  196.             printf("te gusta este heroe? s/n \n");
  197.             opcion=getch();
  198.         }
  199.     //}
  200.  
  201.     crear_enemigo(&enemigo);
  202.     while(enemigo.HP>0 && heroe.HP>0){
  203.         orden=menu(&heroe, &enemigo);
  204.         combate(&heroe, &enemigo, orden);
  205.         if (enemigo.HP<=0){
  206.             system("cls");
  207.             heroe.exp=heroe.exp + enemigo.exp;
  208.             printf("Felicidades has derrotado el %s y has obtenido %d de experiencia \n", enemigo.nombre, enemigo.exp);
  209.             if (heroe.exp>=100*heroe.nivel){
  210.                 heroe.nivel+=1;
  211.                 heroe.exp=0;
  212.                 printf("has subido al nivel %d que atributo quieres mejorar (+3)", heroe.nivel);
  213.                 printf("1. Fuerza\n2. Constitucion\n3. Inteligencia\n4. Destreza");
  214.                 opcion=getch();
  215.                 switch (opcion){
  216.                     case 1 :
  217.                         heroe.fuerza=heroe.fuerza+3;
  218.                         heroe.HP=((heroe.fuerza) * (heroe.constitucion)) /4;
  219.                         break;
  220.                     case 2 :
  221.                         heroe.constitucion=heroe.constitucion+3;
  222.                         heroe.HP=((heroe.fuerza) * (heroe.constitucion)) /4;
  223.                         break;
  224.                     case 3 :
  225.                         heroe.inteligencia=heroe.inteligencia+3;
  226.                         break;
  227.                     case 4 :
  228.                         heroe.destreza=heroe.destreza+3;
  229.                         break;
  230.                     }
  231.             }
  232.             //fwrite(&heroe, sizeof(heroe), sizeof(heroe), save);
  233.             //fprintf(save, "%s %d %d %d %d %d %d %d %d %d", heroe.nombre, heroe.nivel, heroe.exp, heroe.maxHP, heroe.maxHP, heroe.constitucion, heroe.fuerza, heroe.fuerza, heroe.destreza, heroe.inteligencia);
  234.         } else if (heroe.HP<=0){
  235.             system("pause");
  236.             system("cls");
  237.             printf("Vaya estas como muerto no?\n");
  238.         }
  239.     }
  240.     fclose(save);
  241.     system("pause");
  242.     return 0;
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement