SHARE
TWEET

Untitled

Jose_Beltran Jul 12th, 2019 78 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<time.h>
  5.  
  6. void MostrarPokemon(int n);
  7.  
  8. //QUEREMOS INCLUIR 4 ATAQUES A CADA UNO DE NUESTROS POKEMONES, LUEGO IMPRIMIRLOS AL ELEGIR AL POKEMON QUERIDO
  9. typedef struct habilidades{//La estructura de los ataques
  10.     char nombre_habilidad[40];
  11.     char tipo_habilidad[15];
  12.     int danio;
  13.     int PP;
  14.     char efecto[15];
  15.     int prob_efect;
  16.    
  17. }s_ataques;
  18. //Definimos una estructura llamada pokemon
  19. typedef struct pokemon{
  20.     char nombre[15];//1
  21.     char tipo[15];//2  
  22.     int vida;//3
  23.     char estado[15];
  24.     int num_habilidades;
  25.     s_ataques ataque_pokemon[4];//4
  26.    
  27. }s_pokemon;
  28.  
  29.  
  30.  
  31.  
  32.  
  33. s_pokemon lista[10]; //Definimos una estructura type pokemon que sea una lista de n(10 en este caso) pokemon, PODEMOS AUMENTAR EL NUMERO DE POKEMONES QUE QUEREMOS
  34.  
  35. s_pokemon lista[10]={{"Pikachu","Electrico",3000,"0",4,
  36.                             "Golpe","Normal",40,10,"0",0,
  37.                             "Impactrueno","Electrico",50,5,"0",0,
  38.                             "Latigo","Normal",40,10,"Confusion",20,
  39.                             "Trueno","Electrico",70,15,"Paralisis",30},
  40.                      
  41.                       {"Blastoise","Agua",1200,"0",4,
  42.                             "Cabezaso","Normal",60,5,"0",0,
  43.                             "Hidropulso","Agua",80,5,"0",0,
  44.                             "Placaje","Normal",40,10,"0",0,
  45.                             "Giro rapido","Normal",50,5,"0",0,},
  46.                      
  47.                       {"Charizard","Fuego",5000,"0",4,
  48.                              "Furia dragon","Dragon",60,5,"0",0,
  49.                              "Giro Fuego","Fuego",40,10,"0",0,
  50.                              "Ataque ala","Volador",60,10,"0",0,
  51.                              "Pantalla de humo","Normal",0,10,"Cegado",100,},
  52.                      
  53.                       {"Seviper","Veneno",1200,"0",4,
  54.                              "Colmillo venenoso","Veneno",50,15,"Veneno",50,
  55.                              "Cola venenosa","Veneno",40,15,"Veneno",50,
  56.                              "Mordisco","Normal",60,15,"0",0,
  57.                              "Alarido","Normal",30,20,"0",0,},
  58.                      
  59.                        {"Azurill","Agua",1200,"0",4,
  60.                             "Burbuja","Agua",40,20,"0",0,
  61.                             "Latigo","Normal",40,10,"Confusion",20,
  62.                             "Golpazo","Normal",80,10,"0",0,
  63.                             "Chorro de agua","Agua",60,15,"0",0},
  64.  
  65.                        {"Swampert","Agua Tierra",3500,"0",4,
  66.                             "Terremoto","Tierra",90,10,"0",0,
  67.                             "Agua lodosa","Agua",80,10,"0",0,                            
  68.                             "Disparo de lodo","Tierra",60,20,"Cegado",40,
  69.                             "Derribo","Normal",70,20,"0",0}};
  70.  
  71. typedef struct items{//creamos una funcion para items
  72.     int pocion;
  73.     int eter;
  74.     int superPocion;
  75.     int superEter;
  76. }s_items;
  77.  
  78. s_items item={50,5,100,10};//inicializamos los valores de la estructura
  79.  
  80.  
  81. void ElegirPokemon(s_pokemon* pj,s_pokemon* pr);
  82. void MostrarPokemonElegido(s_pokemon pj,s_pokemon pr);
  83. void MostrarAtaquesPokemon(s_pokemon pj);
  84. void CalculoDanio(s_pokemon *pj, s_pokemon *pr);
  85. void calculodaniorival(s_pokemon *pj, s_pokemon *pr);
  86.  
  87.  
  88. int main(){
  89.     s_pokemon *p_pj1b,pj1,*p_pjrival, pjrival;
  90.     p_pj1b = &pj1;
  91.     p_pjrival = &pjrival;
  92.     MostrarPokemon(6);
  93.     ElegirPokemon(p_pj1b,p_pjrival);   
  94.     MostrarPokemonElegido(pj1,pjrival);
  95.     while(pj1.vida>0 && pjrival.vida>0){
  96.         MostrarAtaquesPokemon(pj1);
  97.         CalculoDanio(&pj1,&pjrival);
  98.         calculodaniorival(&pj1,&pjrival);
  99.         MostrarPokemonElegido(pj1,pjrival);
  100.         printf("*****************************************************\n");
  101. }
  102.     if(pj1.vida<0){
  103.         pj1.vida = 0;
  104.         printf("\n\nTu %s Ha sido debilitado.\n", pj1.nombre);
  105.     }
  106.     else{
  107.         pjrival.vida = 0;
  108.         printf("\n\n%s Rival ha sido debilitado.\n", pjrival.nombre);
  109.     }
  110.  
  111.    
  112.     return 0;
  113. }
  114.  
  115. void MostrarPokemon(int n){//Funcion que muestra los pokemones que se pueden elegir
  116.    
  117.     printf("Los pokemones que puede elegir son:\n");
  118.    
  119.         for(n=0;n<6;n++){
  120.         printf("%d.-\nPokemon: %s   tipo: %s \nVida: %d \n", n, lista[n].nombre, lista[n].tipo,lista[n].vida);
  121.     }
  122.  
  123.     return;
  124. }
  125.  
  126. void ElegirPokemon(s_pokemon* pj,s_pokemon* pr){
  127.  
  128.     char numero[100];
  129.     int n,i;
  130.     srand(time(NULL));
  131.     do{
  132.     printf("\n\nIngrese el numero del pokemon que quiere escoger:\n");
  133.     fgets(numero,100,stdin);
  134.     for(i=0; i<strlen(numero); i++){
  135.         while(numero[0]<'0'||numero[0]>'5')
  136.         {
  137.             printf("\nAl parecer usted es un pillin y trato de ingresar una letra o un numero fuera del rango. Haga lo que se le pide porfavor.\n");
  138.             fgets(numero,100,stdin);
  139.         }
  140.     }
  141.     n=atoi(numero);
  142.     }while((n>5 || n<0));
  143.         /*printf("Pokemon no encontrado, Ingrese el pokemon que quiere escoger:\n");
  144.         scanf("%d", &numero);*/
  145.    
  146.     *pj = lista[n];    
  147.     *pr = lista[rand()%6];
  148.    
  149.    
  150. }
  151. void MostrarPokemonElegido(s_pokemon pj, s_pokemon pr){
  152.     printf("\nPokemon: %s   tipo: %s \nVida: %d Estado: %s\n\n", pj.nombre, pj.tipo,pj.vida,pj.estado);
  153.     printf("Pokemon rival:\n");
  154.     printf("Pokemon: %s   tipo: %s \nVida: %d Estado: %s \n\n", pr.nombre, pr.tipo,pr.vida,pr.estado);
  155.    
  156.    
  157. }
  158. void MostrarAtaquesPokemon(s_pokemon pj){
  159.     int i;
  160.     for(i=0;i<4;i++){
  161.     printf("Ataque %d\nNombre: %s  Tipo: %s\ndanio: %d  PP: %d\nEfecto: %s  Prob: %d\n",i, pj.ataque_pokemon[i].nombre_habilidad, pj.ataque_pokemon[i].tipo_habilidad,
  162.     pj.ataque_pokemon[i].danio, pj.ataque_pokemon[i].PP, pj.ataque_pokemon[i].efecto, pj.ataque_pokemon[i].prob_efect);
  163.     }
  164. }
  165. void CalculoDanio(s_pokemon *pj, s_pokemon *pr){
  166.     char numero[100];
  167.     int n,i;
  168.     srand(time(NULL));
  169.     do{
  170.     printf("\n\nIngrese el numero del ataque que quiere usar:\n");
  171.     fgets(numero,100,stdin);
  172.     for(i=0; i<strlen(numero); i++){
  173.         while(numero[0]<'0'||numero[0]>'3')
  174.         {
  175.             printf("\nAl parecer usted es un pillin y trato de ingresar una letra o un numero fuera del rango. Haga lo que se le pide porfavor.\n");
  176.             fgets(numero,100,stdin);
  177.         }
  178.     }
  179.     n=atoi(numero);
  180.     }while((n>3 || n<0));
  181.  
  182.     int multiplicador=1;
  183.  
  184.     while(pj->ataque_pokemon[n].PP<1){
  185.         printf("Ataque sin pp, Ingrese otro movimiento:\n");
  186.         scanf("%d", &n);
  187.     }
  188.     printf("\nTu %s ha usado: %s\n",pj->nombre,pj->ataque_pokemon[n].nombre_habilidad);
  189.     if(strcmp(pj->tipo,pj->ataque_pokemon[n].tipo_habilidad)==0){
  190.         multiplicador *= 2;
  191.         printf("\n\nEs SUPER efectivo\n\n");
  192.     }
  193.     if(10>rand()%101){
  194.         printf("Es un ataque critico!\n");
  195.         multiplicador *= 2;
  196.     }
  197.     if(strcmp(pj->estado,"Veneno")==0){
  198.         printf("Tu pokemon Ha sido dañado por el Veneno!\n");
  199.         pj->vida = pj->vida - 20;
  200.     }
  201.     if(strcmp(pj->estado,"Cegado")==0){
  202.         if(50>rand()%101){
  203.             printf("Tu pokemon ha fallado por la ceguera!\n");
  204.             multiplicador *= 0;
  205.         }
  206.     }
  207.     if(strcmp(pj->estado,"Paralisis")==0){
  208.         if(60>rand()%101){
  209.             printf("Tu pokemon esta paralizado!, No puede atacar!\n");
  210.             multiplicador *= 0;
  211.         }
  212.     }
  213.     if(strcmp(pj->estado,"Confusion")==0){
  214.         if(40>rand()%101){
  215.             printf("Tu pokemon esta tan confuso que se hirio a si mismo!\n");
  216.             multiplicador *= 0;
  217.             pj->vida = pj->vida - 30;
  218.         }
  219.     }
  220.     pr->vida = pr->vida - pj->ataque_pokemon[n].danio*multiplicador;
  221.     pj->ataque_pokemon[n].PP = pj->ataque_pokemon[n].PP - 1;
  222.    
  223.    
  224.     if(pj->ataque_pokemon[n].prob_efect>rand()%101){
  225.         strcpy(pr->estado,pj->ataque_pokemon[n].efecto);
  226.         printf("El pokemon rival fue afectado por %s\n", pj->ataque_pokemon[n].efecto);
  227.     }
  228.    
  229. }
  230. void calculodaniorival(s_pokemon *pj, s_pokemon *pr){
  231.     int n,r,multiplicador=1,por;
  232.     srand(time(NULL));
  233.     r=rand()%4;
  234.     por=rand()%101;
  235.    
  236.    
  237.     while(pr -> ataque_pokemon[r].PP < 1){
  238.         r=rand()%4;
  239.     }
  240.     printf("El %s rival ha usado: %s\n",pr->nombre,pr -> ataque_pokemon[r].nombre_habilidad);
  241.  
  242.    
  243.     if(strcmp(pr->tipo,pr->ataque_pokemon[r].tipo_habilidad)==0){
  244.          multiplicador *= 2;
  245.          printf("\n\nEs SUPER efectivo\n\n");
  246.     }
  247.     if(10>rand()%101){
  248.         printf("El ataque rival es critico!\n");
  249.         multiplicador *= 2;
  250.     }
  251.     if(strcmp(pr->estado,"Veneno")==0){
  252.         printf("El %s rival Ha sido dañado por el Veneno!\n",pr->nombre);
  253.         pr->vida = pr->vida - 20;
  254.     }
  255.     if(strcmp(pr->estado,"Cegado")==0){
  256.         if(50>por){
  257.             printf("El %s rival ha fallado por la ceguera!\n",pr->nombre);
  258.             multiplicador *= 0;
  259.         }
  260.     }
  261.     if(strcmp(pr->estado,"Paralisis")==0){
  262.         if(60>por){
  263.             printf("EL %s rival esta paralizado!, No puede atacar!\n",pr->nombre);
  264.             multiplicador *= 0;
  265.         }
  266.     }
  267.     if(strcmp(pr->estado,"Confusion")==0){
  268.         if(40>por){
  269.             printf("El %s rival esta tan confuso que se hirio a si mismo!\n",pr->nombre);
  270.             multiplicador *= 0;
  271.             pr->vida = pr->vida - 30;
  272.         }
  273.     }
  274.     pj -> vida = pj->vida - pr->ataque_pokemon[r].danio*multiplicador;
  275.     pr -> ataque_pokemon[r].PP = pr->ataque_pokemon[r].PP - 1;
  276.    
  277.     if(pr->ataque_pokemon[n].prob_efect>por){
  278.         strcpy(pj->estado,pr->ataque_pokemon[n].efecto);
  279.         printf("Tu pokemon fue afectado por %s\n", pj->ataque_pokemon[n].efecto);
  280.     }
  281.  
  282. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top