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>
- void MostrarPokemon(int n);
- //QUEREMOS INCLUIR 4 ATAQUES A CADA UNO DE NUESTROS POKEMONES, LUEGO IMPRIMIRLOS AL ELEGIR AL POKEMON QUERIDO
- typedef struct habilidades{//La estructura de los ataques
- char nombre_habilidad[40];
- char tipo_habilidad[15];
- int danio;
- int PP;
- char efecto[15];
- int prob_efect;
- }s_ataques;
- //Definimos una estructura llamada pokemon
- typedef struct pokemon{
- char nombre[15];//1
- char tipo[15];//2
- int vida;//3
- char estado[15];
- int num_habilidades;
- s_ataques ataque_pokemon[4];//4
- }s_pokemon;
- 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
- s_pokemon lista[10]={{"Pikachu","Electrico",500,"0",4,
- "Golpe","Normal",40,10,"0",0,
- "Impactrueno","Electrico",50,1,"0",0,
- "Latigo","Normal",40,10,"Confusion",20,
- "Trueno","Electrico",70,15,"Paralisis",30},
- {"Blastoise","Agua",350,"0",4,
- "Cabezaso","Normal",60,5,"0",0,
- "Hidropulso","Agua",80,5,"0",0,
- "Placaje","Normal",40,10,"0",0,
- "Giro rapido","Normal",50,5,"0",0,},
- {"Charizard","Fuego",500,"0",4,
- "Furia dragon","Dragon",60,5,"0",0,
- "Giro Fuego","Fuego",40,10,"0",0,
- "Ataque ala","Volador",60,10,"0",0,
- "Pantalla de humo","Normal",0,10,"Cegado",100,},
- {"Seviper","Veneno",400,"0",4,
- "Colmillo venenoso","Veneno",50,15,"Veneno",50,
- "Cola venenosa","Veneno",40,15,"Veneno",50,
- "Mordisco","Normal",60,15,"0",0,
- "Alarido","Normal",30,20,"0",0,},
- {"Azurill","Agua",350,"0",4,
- "Burbuja","Agua",40,20,"0",0,
- "Latigo","Normal",40,10,"Confusion",20,
- "Golpazo","Normal",80,10,"0",0,
- "Chorro de agua","Agua",60,15,"0",0},
- {"Swampert","Agua Tierra",500,"0",4,
- "Terremoto","Tierra",90,10,"0",0,
- "Agua lodosa","Agua",80,10,"0",0,
- "Disparo de lodo","Tierra",60,20,"Cegado",40,
- "Derribo","Normal",70,20,"0",0}};
- void ElegirPokemon(s_pokemon* pj,s_pokemon* pr);
- void MostrarPokemonElegido(s_pokemon pj,s_pokemon pr);
- void MostrarAtaquesPokemon(s_pokemon pj);
- void CalculoDanio(s_pokemon *pj, s_pokemon *pr);
- void calculodaniorival(s_pokemon *pj, s_pokemon *pr);
- int main(){
- int opcion=0;
- s_pokemon *p_pj1b,pj1,*p_pjrival, pjrival;
- p_pj1b = &pj1;
- p_pjrival = &pjrival;
- while(opcion==0){
- printf("Elija una de las siguientes opciones:\n\n(1)Iniciar batalla. (2)Salir del programa.\n\n");
- scanf("%d",&opcion);
- getchar();
- switch(opcion){
- case 1:
- MostrarPokemon(6);
- ElegirPokemon(p_pj1b,p_pjrival);
- MostrarPokemonElegido(pj1,pjrival);
- while(pj1.vida>0 && pjrival.vida>0){
- MostrarAtaquesPokemon(pj1);
- CalculoDanio(&pj1,&pjrival);
- calculodaniorival(&pj1,&pjrival);
- MostrarPokemonElegido(pj1,pjrival);
- printf("*****************************************************\n");
- if(pj1.vida<=0){
- pj1.vida = 0;
- printf("\n\nTu %s Ha sido debilitado.\n", pj1.nombre);
- }
- else if(pjrival.vida<=0){
- pjrival.vida = 0;
- printf("\n\n%s Rival ha sido debilitado.\n", pjrival.nombre);
- }
- }
- case 2:
- exit(-1);
- default:
- printf("Elemento no encontrado se regresara al menu.\n\n");
- opcion=0;
- }
- }
- return 0;
- }
- void MostrarPokemon(int n){//Funcion que muestra los pokemones que se pueden elegir
- printf("\nLos pokemones que puede elegir son:\n");
- for(n=0;n<6;n++){
- printf("%d.-\nPokemon: %s tipo: %s \nVida: %d \n", n, lista[n].nombre, lista[n].tipo,lista[n].vida);
- }
- return;
- }
- void ElegirPokemon(s_pokemon* pj,s_pokemon* pr){
- char numero[100];
- int n,i;
- srand(time(NULL));
- do{
- printf("\n\nIngrese el numero del pokemon que quiere escoger:\n");
- fgets(numero,100,stdin);
- for(i=0; i<strlen(numero); i++){
- while(numero[0]<'0'||numero[0]>'5')
- {
- 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");
- fgets(numero,100,stdin);
- }
- }
- n=atoi(numero);
- }while((n>5 || n<0));
- *pj = lista[n];
- *pr = lista[rand()%6];
- }
- void MostrarPokemonElegido(s_pokemon pj, s_pokemon pr){
- printf("\nPokemon: %s tipo: %s \nVida: %d Estado: %s\n\n", pj.nombre, pj.tipo,pj.vida,pj.estado);
- printf("Pokemon rival:\n");
- printf("Pokemon: %s tipo: %s \nVida: %d Estado: %s \n\n", pr.nombre, pr.tipo,pr.vida,pr.estado);
- }
- void MostrarAtaquesPokemon(s_pokemon pj){
- int i;
- for(i=0;i<4;i++){
- 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,
- pj.ataque_pokemon[i].danio, pj.ataque_pokemon[i].PP, pj.ataque_pokemon[i].efecto, pj.ataque_pokemon[i].prob_efect);
- }
- }
- void CalculoDanio(s_pokemon *pj, s_pokemon *pr){
- char numero[100];
- int n,i;
- srand(time(NULL));
- do{
- printf("\n\nIngrese el numero del ataque que quiere usar:\n");
- fgets(numero,100,stdin);
- for(i=0; i<strlen(numero); i++){
- while(numero[0]<'0'||numero[0]>'3')
- {
- 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");
- fgets(numero,100,stdin);
- }
- }
- n=atoi(numero);
- }while((n>3 || n<0));
- int multiplicador=1;
- while(pj->ataque_pokemon[n].PP<1){
- printf("Ataque sin pp, Ingrese otro movimiento:\n");
- scanf("%d", &n);
- }
- printf("\nTu %s ha usado: %s\n",pj->nombre,pj->ataque_pokemon[n].nombre_habilidad);
- if(strcmp(pj->tipo,pj->ataque_pokemon[n].tipo_habilidad)==0){
- multiplicador *= 2;
- }
- if(10>rand()%101){
- printf("Es un ataque critico!\n");
- multiplicador *= 2;
- }
- if(strcmp(pj->estado,"Veneno")==0){
- printf("Tu pokemon Ha sido dañado por el Veneno!\n");
- pj->vida = pj->vida - 20;
- }
- if(strcmp(pj->estado,"Cegado")==0){
- if(50>rand()%101){
- printf("Tu pokemon ha fallado por la ceguera!\n");
- multiplicador *= 0;
- }
- }
- if(strcmp(pj->estado,"Paralisis")==0){
- if(60>rand()%101){
- printf("Tu pokemon esta paralizado!, No puede atacar!\n");
- multiplicador *= 0;
- }
- }
- if(strcmp(pj->estado,"Confusion")==0){
- if(40>rand()%101){
- printf("Tu pokemon esta tan confuso que se hirio a si mismo!\n");
- multiplicador *= 0;
- pj->vida = pj->vida - 30;
- }
- }
- pr->vida = pr->vida - pj->ataque_pokemon[n].danio*multiplicador;
- pj->ataque_pokemon[n].PP = pj->ataque_pokemon[n].PP - 1;
- if((pj->ataque_pokemon[n].prob_efect>rand()%101) && strcmp(pr->estado,"0")==0 && (multiplicador!=0)){
- strcpy(pr->estado,pj->ataque_pokemon[n].efecto);
- printf("El pokemon rival fue afectado por %s\n", pj->ataque_pokemon[n].efecto);
- }
- }
- void calculodaniorival(s_pokemon *pj, s_pokemon *pr){
- int n,r,multiplicador=1,por;
- srand(time(NULL));
- r=rand()%4;
- por=rand()%101;
- while(pr -> ataque_pokemon[r].PP < 1){
- r=rand()%4;
- }
- printf("El %s rival ha usado: %s\n",pr->nombre,pr -> ataque_pokemon[r].nombre_habilidad);
- if(strcmp(pr->tipo,pr->ataque_pokemon[r].tipo_habilidad)==0){
- multiplicador *= 2;
- }
- if(10>rand()%101){
- printf("El ataque rival es critico!\n");
- multiplicador *= 2;
- }
- if(strcmp(pr->estado,"Veneno")==0){
- printf("El %s rival Ha sido dañado por el Veneno!\n",pr->nombre);
- pr->vida = pr->vida - 20;
- }
- if(strcmp(pr->estado,"Cegado")==0){
- if(50>por){
- printf("El %s rival ha fallado por la ceguera!\n",pr->nombre);
- multiplicador *= 0;
- }
- }
- if(strcmp(pr->estado,"Paralisis")==0){
- if(60>por){
- printf("EL %s rival esta paralizado!, No puede atacar!\n",pr->nombre);
- multiplicador *= 0;
- }
- }
- if(strcmp(pr->estado,"Confusion")==0){
- if(40>por){
- printf("El %s rival esta tan confuso que se hirio a si mismo!\n",pr->nombre);
- multiplicador *= 0;
- pr->vida = pr->vida - 30;
- }
- }
- pj -> vida = pj->vida - pr->ataque_pokemon[r].danio*multiplicador;
- pr -> ataque_pokemon[r].PP = pr->ataque_pokemon[r].PP - 1;
- if((pr->ataque_pokemon[n].prob_efect>por) && (strcmp(pj->estado,"0")==0) && (multiplicador!=0)){
- strcpy(pj->estado,pr->ataque_pokemon[n].efecto);
- printf("Tu pokemon fue afectado por %s\n", pr->ataque_pokemon[n].efecto);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement