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 constitucion;
- int fuerza;
- int destreza;
- };
- void crear_heroe(struct base *heroe){
- srand(time(NULL));
- char var_name[100];
- 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;
- printf("nombre: %s\n", heroe->nombre);
- printf("Vida: %d\n", heroe->HP);
- printf("Fuerza: %d\n", heroe->fuerza);
- printf("Constitucion: %d\n", heroe->constitucion);
- }
- void crear_enemigo(struct base *enemigo){
- srand(time(NULL));
- int minion=0, salida=0;
- while(salida!=1){
- minion=rand()%3 + 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->fuerza/2);
- heroe->HP=heroe->HP + (heroe->fuerza)/2;
- }
- else {
- printf("\nTe curas %d de HP pero el %s te hace %d de daño\n", heroe->fuerza/2, enemigo->nombre, (enemigo->fuerza)/2);
- heroe->HP=(heroe->HP) + (heroe->fuerza)/2;
- heroe->HP=(heroe->HP) - (enemigo->fuerza)/2;
- }
- break;
- case 4 :
- printf("\nHuyes como la nenaza que eres\n");
- heroe->HP=0;
- break;
- }
- }
- int menu(struct base *heroe, struct base *enemigo){
- int opcion;
- 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", &opcion);
- system("cls");
- return opcion;
- }
- int main(){
- struct base heroe;
- struct base enemigo;
- int opcion;
- crear_heroe(&heroe);
- crear_enemigo(&enemigo);
- while(enemigo.HP>0 && heroe.HP>0){
- opcion=menu(&heroe, &enemigo);
- combate(&heroe, &enemigo, opcion);
- 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);
- }
- else if (heroe.HP<=0){
- system("cls");
- printf("Vaya estas como muerto no?\n");
- }
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement