Advertisement
Jose_Beltran

Untitled

Jun 29th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.65 KB | None | 0 0
  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. 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
  31.  
  32. s_pokemon lista[10]={{"Pikachu","Electrico",300,"0",4,
  33. "Golpe","Normal",40,10,"0",0,
  34. "Impactrueno","Electrico",50,5,"0",0,
  35. "Latigo","Normal",40,1,"Confusion",20,
  36. "Trueno","Electrico",70,5,"Paralisis",30},
  37.  
  38. {"Blastoise","Agua",120,"0",4,
  39. "Cabezaso","Normal",60,5,"0",0,
  40. "Hidropulso","Agua",80,5,"0",0,
  41. "Placaje","Normal",40,10,"0",0,
  42. "Giro rapido","Normal",50,5,"0",0,},
  43.  
  44. {"Charizard","Fuego",500,"0",4,
  45. "Furia dragon","Dragon",60,5,"0",0,
  46. "Giro Fuego","Fuego",40,10,"0",0,
  47. "Ataque ala","Volador",60,10,"0",0,
  48. "Pantalla de humo","Normal",0,10,"Cegado",100,},
  49.  
  50. {"Seviper","Veneno",120,"0",4,
  51. "Colmillo venenoso","Veneno",50,15,"Veneno",50,
  52. "Cola venenosa","Veneno",40,15,"Veneno",50,
  53. "Mordisco","Normal",60,15,"0",0,
  54. "Alarido","Normal",30,20,"0",0,},
  55.  
  56. {"Azurill","Agua",120,"0",4,
  57. "Burbuja","Agua",40,20,"0",0,
  58. "Latigo","Normal",40,10,"Confusion",20,
  59. "Golpazo","Normal",80,10,"0",0,
  60. "Chorro de agua","Agua",60,15,"0",0},
  61.  
  62. {"Swampert","Agua Tierra",350,"0",4,
  63. "Terremoto","Tierra",90,10,"0",0,
  64. "Agua lodosa","Agua",80,10,"0",0,
  65. "Disparo de lodo","Tierra",60,20,"Cegado",40,
  66. "Derribo","Normal",70,20,"0",0}};
  67.  
  68.  
  69. void ElegirPokemon(s_pokemon* pj,s_pokemon* pr);
  70. void MostrarPokemonElegido(s_pokemon pj,s_pokemon pr);
  71. void MostrarAtaquesPokemon(s_pokemon pj);
  72. void CalculoDanio(s_pokemon *pj, s_pokemon *pr);
  73. void calculodaniorival(s_pokemon *pj, s_pokemon *pr);
  74.  
  75.  
  76. int main(){
  77. s_pokemon *p_pj1b,pj1,*p_pjrival, pjrival;
  78. p_pj1b = &pj1;
  79. p_pjrival = &pjrival;
  80. MostrarPokemon(6);
  81. ElegirPokemon(p_pj1b,p_pjrival);
  82. MostrarPokemonElegido(pj1,pjrival);
  83. while(pj1.vida>0 && pjrival.vida>0){
  84. MostrarAtaquesPokemon(pj1);
  85. CalculoDanio(&pj1,&pjrival);
  86. calculodaniorival(&pj1,&pjrival);
  87. MostrarPokemonElegido(pj1,pjrival);
  88. }
  89. if(pj1.vida<0){
  90. printf("\n\n%s Ha sido debilitado.", pj1.nombre);
  91. }
  92. else{
  93. printf("\n\n%s Ha sido debilitado.", pjrival.nombre);
  94. }
  95.  
  96.  
  97. return 0;
  98. }
  99.  
  100. void MostrarPokemon(int n){//Funcion que muestra los pokemones que se pueden elegir
  101.  
  102. printf("Los pokemones que puede elegir son:\n");
  103.  
  104. for(n=0;n<6;n++){
  105. printf("%d.-\nPokemon: %s tipo: %s \nVida: %d \n", n, lista[n].nombre, lista[n].tipo,lista[n].vida);
  106. }
  107.  
  108. return;
  109. }
  110.  
  111. void ElegirPokemon(s_pokemon* pj,s_pokemon* pr){
  112.  
  113. int n,r;
  114. printf("\n\nIngrese el numero del pokemon que quiere escoger:\n");
  115. scanf("%d", &n);
  116.  
  117. while(n>5 || n<0){
  118. printf("Pokemon no encontrado, Ingrese el pokemon que quiere escoger:\n");
  119. scanf("%d",&n);
  120. }
  121. *pj = lista[n];
  122. srand (time(NULL));
  123. *pr = lista[rand()%6];
  124.  
  125.  
  126. }
  127. void MostrarPokemonElegido(s_pokemon pj, s_pokemon pr){
  128. printf("\nPokemon: %s tipo: %s \nVida: %d Estado: %s\n\n", pj.nombre, pj.tipo,pj.vida,pj.estado);
  129. printf("Pokemon rival:\n");
  130. printf("Pokemon: %s tipo: %s \nVida: %d Estado: %s \n\n", pr.nombre, pr.tipo,pr.vida,pr.estado);
  131.  
  132.  
  133. }
  134. void MostrarAtaquesPokemon(s_pokemon pj){
  135. int i;
  136. for(i=0;i<4;i++){
  137. 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,
  138. pj.ataque_pokemon[i].danio, pj.ataque_pokemon[i].PP, pj.ataque_pokemon[i].efecto, pj.ataque_pokemon[i].prob_efect);
  139. }
  140. }
  141. void CalculoDanio(s_pokemon *pj, s_pokemon *pr){
  142. int n,multiplicador=1;
  143. printf("Ingrese el ataque que quiere usar:\n");
  144. scanf("%d", &n);
  145. while(pj->ataque_pokemon[n].PP<1){
  146. printf("Ataque sin pp, Ingrese otro movimiento:\n");
  147. scanf("%d", &n);
  148. }
  149. if(strcmp(pj->tipo,pj->ataque_pokemon[n].tipo_habilidad)==0){
  150. multiplicador *= 2;
  151. printf("\n\nEs SUPER efectivo\n\n");
  152. }
  153. if(strcmp(pj->estado,"Veneno")==0){
  154. printf("Tu pokemon Ha sido dañado por el Veneno!\n");
  155. pj->vida = pj->vida - 20;
  156. }
  157. if(strcmp(pj->estado,"Cegado")==0){
  158. if(50>rand()%101){
  159. printf("Tu pokemon ha fallado por la ceguera!\n");
  160. multiplicador *= 0;
  161. }
  162. }
  163. if(strcmp(pj->estado,"Paralisis")==0){
  164. if(60>rand()%101){
  165. printf("Tu pokemon esta paralizado!, No puede atacar!\n");
  166. multiplicador *= 0;
  167. }
  168. }
  169. if(strcmp(pj->estado,"Confusion")==0){
  170. if(40>rand()%101){
  171. printf("Tu pokemon esta tan confuso que se hirio a si mismo!\n");
  172. multiplicador *= 0;
  173. pj->vida = pj->vida - 30;
  174. }
  175. }
  176. pr->vida = pr->vida - pj->ataque_pokemon[n].danio*multiplicador;
  177. pj->ataque_pokemon[n].PP = pj->ataque_pokemon[n].PP - 1;
  178.  
  179.  
  180. if(pj->ataque_pokemon[n].prob_efect>rand()%101){
  181. strcpy(pr->estado,pj->ataque_pokemon[n].efecto);
  182. printf("El pokemon rival fue afectado por %s\n", pj->ataque_pokemon[n].efecto);
  183. }
  184.  
  185. }
  186. void calculodaniorival(s_pokemon *pj, s_pokemon *pr){
  187. int n,r,multiplicador=1;
  188. r=rand()%4;
  189.  
  190.  
  191. while(pr -> ataque_pokemon[r].PP < 1){
  192. r=rand()%4;
  193. }
  194. printf("el pokemon rival ha usado: %s\n",pr -> ataque_pokemon[r].nombre_habilidad);
  195.  
  196. if(strcmp(pr->tipo,pr->ataque_pokemon[r].tipo_habilidad)==0){
  197. multiplicador *= 2;
  198. printf("\n\nEs SUPER efectivo\n\n");
  199. }
  200. if(strcmp(pr->estado,"Veneno")==0){
  201. printf("El pokemon rival Ha sido dañado por el Veneno!\n");
  202. pr->vida = pr->vida - 20;
  203. }
  204. if(strcmp(pr->estado,"Cegado")==0){
  205. if(50>rand()%101){
  206. printf("El pokemon rival ha fallado por la ceguera!\n");
  207. multiplicador *= 0;
  208. }
  209. }
  210. if(strcmp(pr->estado,"Paralisis")==0){
  211. if(60>rand()%101){
  212. printf("EL pokemon rival esta paralizado!, No puede atacar!\n");
  213. multiplicador *= 0;
  214. }
  215. }
  216. if(strcmp(pr->estado,"Confusion")==0){
  217. if(40>rand()%101){
  218. printf("El pokemon rival esta tan confuso que se hirio a si mismo!\n");
  219. multiplicador *= 0;
  220. pr->vida = pr->vida - 30;
  221. }
  222. }
  223. pj -> vida = pj->vida - pr->ataque_pokemon[r].danio*multiplicador;
  224. pr -> ataque_pokemon[r].PP = pr->ataque_pokemon[r].PP - 1;
  225.  
  226. if(pr->ataque_pokemon[n].prob_efect>rand()%101){
  227. strcpy(pj->estado,pr->ataque_pokemon[n].efecto);
  228. printf("El pokemon rival fue afectado por %s\n", pj->ataque_pokemon[n].efecto);
  229. }
  230.  
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement