Advertisement
Jose_Beltran

Untitled

Jul 15th, 2019
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.49 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.  
  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",1000,"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",1500,"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",1500,"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. int opcion=0;
  90. s_pokemon *p_pj1b,pj1,*p_pjrival, pjrival;
  91. p_pj1b = &pj1;
  92. p_pjrival = &pjrival;
  93.  
  94. while(opcion==0){
  95. printf("Elija una de las siguientes opciones:\n\n(1)Iniciar batalla. (2)Salir del programa.\n\n");
  96. scanf("%d",&opcion);
  97. getchar();
  98. switch(opcion){
  99.  
  100. case 1:
  101.  
  102. MostrarPokemon(6);
  103. ElegirPokemon(p_pj1b,p_pjrival);
  104. MostrarPokemonElegido(pj1,pjrival);
  105. while(pj1.vida>0 && pjrival.vida>0){
  106. MostrarAtaquesPokemon(pj1);
  107. CalculoDanio(&pj1,&pjrival);
  108. calculodaniorival(&pj1,&pjrival);
  109. MostrarPokemonElegido(pj1,pjrival);
  110. printf("*****************************************************\n");
  111. if(pj1.vida<=0){
  112. pj1.vida = 0;
  113. printf("\n\nTu %s Ha sido debilitado.\n", pj1.nombre);
  114. }
  115. else if(pjrival.vida<=0){
  116. pjrival.vida = 0;
  117. printf("\n\n%s Rival ha sido debilitado.\n", pjrival.nombre);
  118. }
  119.  
  120.  
  121. }
  122. case 2:
  123. exit(-1);
  124. default:
  125. printf("Elemento no encontrado se regresara al menu.\n\n");
  126. opcion=0;
  127. }
  128. }
  129.  
  130. return 0;
  131. }
  132.  
  133. void MostrarPokemon(int n){//Funcion que muestra los pokemones que se pueden elegir
  134.  
  135. printf("\nLos pokemones que puede elegir son:\n");
  136.  
  137. for(n=0;n<6;n++){
  138. printf("%d.-\nPokemon: %s tipo: %s \nVida: %d \n", n, lista[n].nombre, lista[n].tipo,lista[n].vida);
  139. }
  140.  
  141. return;
  142. }
  143.  
  144. void ElegirPokemon(s_pokemon* pj,s_pokemon* pr){
  145.  
  146. char numero[100];
  147. int n,i;
  148. srand(time(NULL));
  149. do{
  150. printf("\n\nIngrese el numero del pokemon que quiere escoger:\n");
  151. fgets(numero,100,stdin);
  152. for(i=0; i<strlen(numero); i++){
  153. while(numero[0]<'0'||numero[0]>'5')
  154. {
  155. 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");
  156. fgets(numero,100,stdin);
  157. }
  158. }
  159. n=atoi(numero);
  160. }while((n>5 || n<0));
  161. /*printf("Pokemon no encontrado, Ingrese el pokemon que quiere escoger:\n");
  162. scanf("%d", &numero);*/
  163.  
  164. *pj = lista[n];
  165. *pr = lista[rand()%6];
  166.  
  167.  
  168. }
  169. void MostrarPokemonElegido(s_pokemon pj, s_pokemon pr){
  170. printf("\nPokemon: %s tipo: %s \nVida: %d Estado: %s\n\n", pj.nombre, pj.tipo,pj.vida,pj.estado);
  171. printf("Pokemon rival:\n");
  172. printf("Pokemon: %s tipo: %s \nVida: %d Estado: %s \n\n", pr.nombre, pr.tipo,pr.vida,pr.estado);
  173.  
  174.  
  175. }
  176. void MostrarAtaquesPokemon(s_pokemon pj){
  177. int i;
  178. for(i=0;i<4;i++){
  179. 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,
  180. pj.ataque_pokemon[i].danio, pj.ataque_pokemon[i].PP, pj.ataque_pokemon[i].efecto, pj.ataque_pokemon[i].prob_efect);
  181. }
  182. }
  183. void CalculoDanio(s_pokemon *pj, s_pokemon *pr){
  184. char numero[100];
  185. int n,i;
  186. srand(time(NULL));
  187. do{
  188. printf("\n\nIngrese el numero del ataque que quiere usar:\n");
  189. fgets(numero,100,stdin);
  190. for(i=0; i<strlen(numero); i++){
  191. while(numero[0]<'0'||numero[0]>'3')
  192. {
  193. 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");
  194. fgets(numero,100,stdin);
  195. }
  196. }
  197. n=atoi(numero);
  198. }while((n>3 || n<0));
  199.  
  200. int multiplicador=1;
  201.  
  202. while(pj->ataque_pokemon[n].PP<1){
  203. printf("Ataque sin pp, Ingrese otro movimiento:\n");
  204. scanf("%d", &n);
  205. }
  206. printf("\nTu %s ha usado: %s\n",pj->nombre,pj->ataque_pokemon[n].nombre_habilidad);
  207. if(strcmp(pj->tipo,pj->ataque_pokemon[n].tipo_habilidad)==0){
  208. multiplicador *= 2;
  209. printf("\n\nEs SUPER efectivo\n\n");
  210. }
  211. if(10>rand()%101){
  212. printf("Es un ataque critico!\n");
  213. multiplicador *= 2;
  214. }
  215. if(strcmp(pj->estado,"Veneno")==0){
  216. printf("Tu pokemon Ha sido dañado por el Veneno!\n");
  217. pj->vida = pj->vida - 20;
  218. }
  219. if(strcmp(pj->estado,"Cegado")==0){
  220. if(50>rand()%101){
  221. printf("Tu pokemon ha fallado por la ceguera!\n");
  222. multiplicador *= 0;
  223. }
  224. }
  225. if(strcmp(pj->estado,"Paralisis")==0){
  226. if(60>rand()%101){
  227. printf("Tu pokemon esta paralizado!, No puede atacar!\n");
  228. multiplicador *= 0;
  229. }
  230. }
  231. if(strcmp(pj->estado,"Confusion")==0){
  232. if(40>rand()%101){
  233. printf("Tu pokemon esta tan confuso que se hirio a si mismo!\n");
  234. multiplicador *= 0;
  235. pj->vida = pj->vida - 30;
  236. }
  237. }
  238. pr->vida = pr->vida - pj->ataque_pokemon[n].danio*multiplicador;
  239. pj->ataque_pokemon[n].PP = pj->ataque_pokemon[n].PP - 1;
  240.  
  241.  
  242. if(pj->ataque_pokemon[n].prob_efect>rand()%101){
  243. strcpy(pr->estado,pj->ataque_pokemon[n].efecto);
  244. printf("El pokemon rival fue afectado por %s\n", pj->ataque_pokemon[n].efecto);
  245. }
  246.  
  247. }
  248. void calculodaniorival(s_pokemon *pj, s_pokemon *pr){
  249. int n,r,multiplicador=1,por;
  250. srand(time(NULL));
  251. r=rand()%4;
  252. por=rand()%101;
  253.  
  254.  
  255. while(pr -> ataque_pokemon[r].PP < 1){
  256. r=rand()%4;
  257. }
  258. printf("El %s rival ha usado: %s\n",pr->nombre,pr -> ataque_pokemon[r].nombre_habilidad);
  259.  
  260.  
  261. if(strcmp(pr->tipo,pr->ataque_pokemon[r].tipo_habilidad)==0){
  262. multiplicador *= 2;
  263. printf("\n\nEs SUPER efectivo\n\n");
  264. }
  265. if(10>rand()%101){
  266. printf("El ataque rival es critico!\n");
  267. multiplicador *= 2;
  268. }
  269. if(strcmp(pr->estado,"Veneno")==0){
  270. printf("El %s rival Ha sido dañado por el Veneno!\n",pr->nombre);
  271. pr->vida = pr->vida - 20;
  272. }
  273. if(strcmp(pr->estado,"Cegado")==0){
  274. if(50>por){
  275. printf("El %s rival ha fallado por la ceguera!\n",pr->nombre);
  276. multiplicador *= 0;
  277. }
  278. }
  279. if(strcmp(pr->estado,"Paralisis")==0){
  280. if(60>por){
  281. printf("EL %s rival esta paralizado!, No puede atacar!\n",pr->nombre);
  282. multiplicador *= 0;
  283. }
  284. }
  285. if(strcmp(pr->estado,"Confusion")==0){
  286. if(40>por){
  287. printf("El %s rival esta tan confuso que se hirio a si mismo!\n",pr->nombre);
  288. multiplicador *= 0;
  289. pr->vida = pr->vida - 30;
  290. }
  291. }
  292. pj -> vida = pj->vida - pr->ataque_pokemon[r].danio*multiplicador;
  293. pr -> ataque_pokemon[r].PP = pr->ataque_pokemon[r].PP - 1;
  294.  
  295. if(pr->ataque_pokemon[n].prob_efect>por){
  296. strcpy(pj->estado,pr->ataque_pokemon[n].efecto);
  297. printf("Tu pokemon fue afectado por %s\n", pj->ataque_pokemon[n].efecto);
  298. }
  299.  
  300. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement