Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- typedef struct base{
- char *nombre;
- int nivel;
- int exp;
- int HP;
- int maxHP;
- int constitucion;
- int fuerza;
- int destreza;
- int inteligencia;
- };
- void crear_heroe(struct base *heroe){
- srand(time(NULL));
- char var_name[100];
- system("cls");
- printf("escribe un nombre\n");
- fflush(stdin);
- gets(var_name);
- fflush(stdin);
- heroe->nombre=(char*)malloc(strlen(var_name)*sizeof(char));
- strcpy(heroe->nombre, var_name);
- system("cls");
- heroe->nivel=1;
- heroe->exp=0;
- heroe->constitucion=(rand()%10 + 10);
- heroe->fuerza=(rand()%10 + 10);
- heroe->HP=((heroe->fuerza) * (heroe->constitucion)) /4;
- heroe->maxHP=heroe->HP;
- heroe->inteligencia=rand()%10 +10;
- heroe->destreza=rand()%
- printf("nombre: %s\n", heroe->nombre);
- printf("Vida: %d\n", heroe->HP);
- printf("Fuerza: %d\n", heroe->fuerza);
- printf("Constitucion: %d\n", heroe->constitucion);
- printf("Inteligencia: %d\n", heroe->inteligencia);
- printf("Destreza: %d\n", heroe->destreza);
- }
- void crear_enemigo(struct base *enemigo){
- srand(time(NULL));
- int minion=0, salida=0;
- while(salida!=1){
- minion=rand()%4 + 0;
- if (minion<4 && minion>0)
- salida=1;
- //printf("\n\n\n%d\n", minion);
- }
- switch (minion){
- case 1 :
- enemigo->nombre=(char *)malloc(strlen("goblin")*sizeof(char));
- strcpy(enemigo->nombre, "goblin");
- enemigo->HP=50;
- enemigo->fuerza=9;
- enemigo->constitucion=5;
- enemigo->nivel=1;
- enemigo->exp=20;
- enemigo->destreza=10;
- break;
- case 2 :
- enemigo->nombre=(char *)malloc(strlen("kappa")*sizeof(char));
- strcpy(enemigo->nombre, "kappa");
- enemigo->HP=70;
- enemigo->fuerza=13;
- enemigo->constitucion=8;
- enemigo->nivel=2;
- enemigo->exp=500;
- enemigo->destreza=10;
- break;
- case 3 :
- enemigo->nombre=(char *)malloc(strlen("dragon")*sizeof(char));
- strcpy(enemigo->nombre, "dragon");
- enemigo->HP=200;
- enemigo->fuerza=17;
- enemigo->constitucion=13;
- enemigo->nivel=5;
- enemigo->exp=2000;
- enemigo->destreza=10;
- break;
- }
- printf("\nNombre: %s\n", enemigo->nombre);
- printf("Vida: %d\n", enemigo->HP);
- printf("Fuerza: %d\n", enemigo->fuerza);
- printf("Constitucion: %d\n", enemigo->constitucion);
- }
- void combate(struct base *heroe, struct base *enemigo, int opcion){
- int dado1, dado2, move, salida=0;
- srand(time(NULL));
- while(salida!=1){
- dado1=rand()%6;
- if (dado1>0 && dado1<7)
- salida=1;
- }
- salida=0;
- while(salida!=1){
- dado2=rand()%6;
- if (dado2>0 && dado2<7)
- salida=1;
- }
- move=dado1+dado2;
- switch (opcion) {
- case 1 : //atacar
- if (move<6){
- printf("\nAtacas con tu espada pero fallas\n");
- printf("%s aprovecha la oportunidad para hacer %d de daño\n", enemigo->nombre, enemigo->fuerza);
- heroe->HP=(heroe->HP) - (enemigo->fuerza);
- }
- else if (move>10){
- printf("\nAtacas con tu espada por un daño de %d\n", heroe->fuerza);
- enemigo->HP=(enemigo->HP) - (heroe->fuerza);
- }
- else {
- 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);
- heroe->HP=(heroe->HP) - (enemigo->fuerza)/2;
- enemigo->HP=(enemigo->HP) - (heroe->fuerza);
- }
- break;
- case 2 : //defender
- if (move<6){
- printf("\nTe defiendes pero el %s te ataca por el otro lado haciendo %d de daño\n", enemigo->nombre, enemigo->fuerza);
- heroe->HP=(heroe->HP) - (enemigo->fuerza);
- }
- else if (move>10){
- printf("\nTe defiendes de todo el daño del %s", enemigo->nombre);
- }
- else {
- printf("\nTe defiendes reduciendo 3/4 del daño de %s , recibes %d de daño\n", enemigo->nombre, (enemigo->fuerza)/4);
- heroe->HP=(heroe->HP) - (enemigo->fuerza)/4;
- }
- break;
- case 3 : //curar
- if (move<6){
- printf("\nPierdes la concentracion y no te curas nada de HP\n");
- printf("\nEl %s aprovecha y te hace %d de daño", enemigo->nombre, enemigo->fuerza/2);
- heroe->HP=heroe->HP - (enemigo->fuerza)/2;
- }
- else if (move>10){
- printf("\nTe curas %d de HP\n", heroe->inteligencia/2);
- heroe->HP=heroe->HP + (heroe->inteligencia)/2;
- }
- else {
- printf("\nTe curas %d de HP pero el %s te hace %d de daño\n", heroe->inteligencia/2, enemigo->nombre, (enemigo->fuerza)/2);
- heroe->HP=(heroe->HP) + (heroe->inteligencia)/2;
- heroe->HP=(heroe->HP) - (enemigo->fuerza)/2;
- }
- if (heroe->HP > heroe->maxHP){
- heroe->HP=heroe->maxHP;
- }
- break;
- case 4 :
- printf("\nHuyes como la nenaza que eres\n");
- heroe->HP=0;
- break;
- }
- }
- int menu(struct base *heroe, struct base *enemigo){
- int orden;
- printf("%c-----------------------------------------------%c\n", 218, 191);
- printf("%c 1. Atacar \t\%c %s \t%c %s \t%c\n", 179, 179, heroe->nombre, 179, enemigo->nombre, 179);
- printf("%c 2. Defender \t\%c HP: %d \t%c HP: %d \t%c\n", 179, 179, heroe->HP, 179, enemigo->HP, 179);
- printf("%c 3. Curar \t\%c Nivel %d \t%c Nivel %d \t%c\n", 179, 179, heroe->nivel, 179, enemigo->nivel, 179);
- printf("%c 4. Huir \t\%c Fuerza %d \t%c Fuerza %d \t%c\n", 179, 179, heroe->fuerza, 179, enemigo->fuerza, 179);
- printf("%c-----------------------------------------------%c\n", 192, 217);
- scanf("%d", &orden);
- system("cls");
- return orden;
- }
- int main(){
- FILE *save = NULL;
- save=fopen("C:\\penes\\heroes.txt", "wb");
- struct base heroe;
- struct base enemigo;
- struct base *ptr;
- char opcion;
- int orden;
- /*printf("Quieres cargar un heroe? s/n \n");
- opcion=getch();
- if (opcion=='s' && opcion=='S'){
- //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);
- fread(&heroe, sizeof(heroe), 1, save);
- opcion='f';
- }
- else {*/
- while (opcion!='s' && opcion!='S'){
- crear_heroe(&heroe);
- printf("te gusta este heroe? s/n \n");
- opcion=getch();
- }
- //}
- crear_enemigo(&enemigo);
- while(enemigo.HP>0 && heroe.HP>0){
- orden=menu(&heroe, &enemigo);
- combate(&heroe, &enemigo, orden);
- if (enemigo.HP<=0){
- system("cls");
- heroe.exp=heroe.exp + enemigo.exp;
- printf("Felicidades has derrotado el %s y has obtenido %d de experiencia \n", enemigo.nombre, enemigo.exp);
- if (heroe.exp>=100*heroe.nivel){
- heroe.nivel+=1;
- heroe.exp=0;
- printf("has subido al nivel %d que atributo quieres mejorar (+3)", heroe.nivel);
- printf("1. Fuerza\n2. Constitucion\n3. Inteligencia\n4. Destreza");
- opcion=getch();
- switch (opcion){
- case 1 :
- heroe.fuerza=heroe.fuerza+3;
- heroe.HP=((heroe.fuerza) * (heroe.constitucion)) /4;
- break;
- case 2 :
- heroe.constitucion=heroe.constitucion+3;
- heroe.HP=((heroe.fuerza) * (heroe.constitucion)) /4;
- break;
- case 3 :
- heroe.inteligencia=heroe.inteligencia+3;
- break;
- case 4 :
- heroe.destreza=heroe.destreza+3;
- break;
- }
- }
- //fwrite(&heroe, sizeof(heroe), sizeof(heroe), save);
- //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);
- } else if (heroe.HP<=0){
- system("pause");
- system("cls");
- printf("Vaya estas como muerto no?\n");
- }
- }
- fclose(save);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement