Autor
|
Tema: Ayuda con sencillo motor de Pokemon. (Leído 5,019 veces)
|
snake_linux
Desconectado
Mensajes: 70
|
Hola gente de Elhacker.net, estoy intentando aprender C, y como "reto" me he propuesto implementar un algoritmo sencillo que simule una batalla pokemon (a lo cutre claramente), el caso es que para ello, he almacenado todos los datos de los pokemon, como "puntos de vida", "puntos de poder" etc... en una structura, con la cual defino los dos pokemons. Pv=puntos de vida, la vida del pokemon Pp=puntos de poder, es decir, las veces que puedes usar un ataque Pd= puntos de poder, en este caso, defino un minimo y un maximo, de forma que aleatoriamente un ataque haga x daño. El caso es que me he quedado atascado en la estructura, entre otras cosas por que no se como rellenar los datos, lo he hecho como he podido pero al ejecutarlo me da error de violación segmento. Pego el código aquí: #include <stdio.h> #include <stdlib.h> #include <string.h> void ayuda(void); void atacar(int); void pociones(int); int main() { typedef struct { char nombre[25]; int pv; char **ataque; int pd[8]; int pp[4]; } pokemon; pokemon pokemon1; pokemon pokemon2; strcpy(pokemon1. nombre, "pokemon1"); pokemon1.pv=100; pokemon1.ataque[0]="ataque1";pokemon1.ataque[1]="ataque2";pokemon1.ataque[2]="ataque3";pokemon1.ataque[3]="ataque4"; pokemon1.pd[0]=1;pokemon1.pd[1]=5;pokemon1.pd[2]=2;pokemon1.pd[3]=4;pokemon1.pd[4]=0;pokemon1.pd[5]=4;pokemon1.pd[6]=3;pokemon1.pd[7]=4; pokemon1.pp[0]=20;pokemon1.pp[1]=30;pokemon1.pp[2]=10;pokemon1.pp[3]=40; strcpy(pokemon2. nombre, "pokemon2"); pokemon2.pv=100; pokemon2.ataque[0]="ataque1";pokemon2.ataque[1]="ataque2";pokemon2.ataque[2]="ataque3";pokemon2.ataque[3]="ataque4"; pokemon2.pd[0]=1;pokemon2.pd[1]=5;pokemon2.pd[2]=2;pokemon2.pd[3]=4;pokemon2.pd[4]=0;pokemon2.pd[5]=4;pokemon2.pd[6]=3;pokemon2.pd[7]=4; pokemon1.pp[0]=25;pokemon1.pp[1]=30;pokemon1.pp[2]=70;pokemon1.pp[3]=15; int turno=1; char comando; while (1) { if (turno==1) printf("[%s]", pokemon1. nombre); else printf("[%s]", pokemon2. nombre); printf("Introduce la orden..."); switch ( comando ) { case 'h': ayuda(); case 'a': atacar(turno); case 'p': pociones(turno); } } } void ayuda() { printf("h -> Despliega esta ayuda\n"); printf("a -> Ataca al pokemon enemigo\n"); printf("p -> Cura a tu pokemon si tienes pociones\n"); } void atacar(int turno) { } void pociones(int turno) { }
Me gustaría que me dijerais por que me da ese error y una forma un poco mas elegante de rellenar esos arrays dentro de la estructura. Saludos.
|
|
« Última modificación: 19 Agosto 2015, 00:51 am por snake_linux »
|
En línea
|
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
Este campo: char **ataque;
Es un doble puntero. A los punteros hayq eu asignarles memoria. Para no liarte con punteros, y ya que el resto lo estás haciendo así, te recomiendo hacerlo como hiciste el resto: char ataque[4][25];
|
|
|
En línea
|
|
|
|
snake_linux
Desconectado
Mensajes: 70
|
Gracias, el error ya lo he solucionado como me has dicho, ahora el problema está en que cuando selecciono una opción y vuelve al while, no se para en el scanf y repite todo el rato "[pokemon1]introduce la orden...".
Saludos.
|
|
|
En línea
|
|
|
|
pedrxd
Desconectado
Mensajes: 8
|
Gracias, el error ya lo he solucionado como me has dicho, ahora el problema está en que cuando selecciono una opción y vuelve al while, no se para en el scanf y repite todo el rato "[pokemon1]introduce la orden...".
Saludos.
Tienes que limpiar el buffer despues de ejecutar scanf, hay dos maneras diferentes segun para linux o windows. Linux: while(getchar() != '\n'); setbuf(stdin, NULL);
Windows: Edit: Yo para linux ese codigo lo pongo en una funcion, y es mejor para usarlo diferentes veces.
|
|
|
En línea
|
|
|
|
berni69
Desconectado
Mensajes: 798
Sapere aude!!
|
Puedes probar algo así y te aseguras de que el código sea portable comando = fgetc(stdin); while(fgetc(stdin) != '\n')
|
|
|
En línea
|
|
|
|
snake_linux
Desconectado
Mensajes: 70
|
Gracias a todos chicos, ya funciona como debía de funcionar, ahora tengo otro problema, he modificado un poco el código y el problema ahora es que cuando selecciono una opción, al ser un switch case, cuando se selecciona la opción se cierra el programa, y claro yo quiero que vuelva a mostrar la "shell" para poner otra orden y así siempre hasta que termine la partida, ¿ Cómo puedo hacer eso ? ( Perdonenme soy bastante nuevo en C) Dejo el código que llevo por ahora: #include <stdio.h> #include <stdlib.h> #include <string.h> void ayuda(void); void atacar(int); void pociones(int); int main() { typedef struct { char nombre[25]; int pv; char ataque[4][25]; int pd[8]; int pp[4]; } pokemon; pokemon pokemon1; pokemon pokemon2; strcpy(pokemon1. nombre, "pokemon1"); pokemon1.pv=100; pokemon1.ataque[0][0]="ataque1";pokemon1.ataque[1][0]="ataque2";pokemon1.ataque[2][0]="ataque3";pokemon1.ataque[3][0]="ataque4"; pokemon1.pd[0]=1;pokemon1.pd[1]=5;pokemon1.pd[2]=2;pokemon1.pd[3]=4;pokemon1.pd[4]=0;pokemon1.pd[5]=4;pokemon1.pd[6]=3;pokemon1.pd[7]=4; pokemon1.pp[0]=20;pokemon1.pp[1]=30;pokemon1.pp[2]=10;pokemon1.pp[3]=40; strcpy(pokemon2. nombre, "pokemon2"); pokemon2.pv=100; pokemon2.ataque[0][0]="ataque1";pokemon2.ataque[1][0]="ataque2";pokemon2.ataque[2][0]="ataque3";pokemon2.ataque[3][0]="ataque4"; pokemon2.pd[0]=1;pokemon2.pd[1]=5;pokemon2.pd[2]=2;pokemon2.pd[3]=4;pokemon2.pd[4]=0;pokemon2.pd[5]=4;pokemon2.pd[6]=3;pokemon2.pd[7]=4; pokemon1.pp[0]=25;pokemon1.pp[1]=30;pokemon1.pp[2]=70;pokemon1.pp[3]=15; int turno=1; char comando; do { if (turno==1) printf("[%s]", pokemon1. nombre); else printf("[%s]", pokemon2. nombre); printf("Introduce la orden..."); switch ( comando ) { case 'h': ayuda(); break;; case 'a': atacar(turno); break;; case 'p': pociones(turno); break;; } } while(fgetc(stdin ) != '\n'); } void ayuda() { printf("h -> Despliega esta ayuda\n"); printf("a -> Ataca al pokemon enemigo\n"); printf("p -> Cura a tu pokemon si tienes pociones\n"); } void atacar(int turno) { } void pociones(int turno) { }
|
|
|
En línea
|
|
|
|
berni69
Desconectado
Mensajes: 798
Sapere aude!!
|
el while(1) origrinal está bien, solo que después de leer un char necesitas terminar de leer la linea ya que cuando escribes en la consola realmente lo que ve el programa es: "h\n" o "h\r\n" (depende de si es linux o windows) para poder evitar que las siguientes lecturas de fgetc lean los otros caracteres que no te interesan puedes hacer un skip de ellos con el: while(fgetc(stdin) != '\n'); por lo que el codigo te quedaría como: printf("Introduce la orden..."); comando = fgetc(stdin); while(fgetc(stdin) != '\n'); switch ( comando ) { .... }
lo que estas haciendo en tu codigo es avanzar un turno por caracter hay en la linea hasta que lees '\n'
|
|
|
En línea
|
|
|
|
|
snake_linux
Desconectado
Mensajes: 70
|
el while(1) origrinal está bien, solo que después de leer un char necesitas terminar de leer la linea ya que cuando escribes en la consola realmente lo que ve el programa es: "h\n" o "h\r\n" (depende de si es linux o windows) para poder evitar que las siguientes lecturas de fgetc lean los otros caracteres que no te interesan puedes hacer un skip de ellos con el: while(fgetc(stdin) != '\n'); por lo que el codigo te quedaría como: printf("Introduce la orden..."); comando = fgetc(stdin); while(fgetc(stdin) != '\n'); switch ( comando ) { .... }
lo que estas haciendo en tu codigo es avanzar un turno por caracter hay en la linea hasta que lees '\n' Gracias por la aclaración, ya funciona el código y creo que se más o menos como funciona la solución. A ver si e esto... la primera linea, la de "comando=fgetc(stdin)" lee un caracter y va avanzando en cada ciclo, pero para evitar que también lea el /n y además para que se pare para poder escribir en el teclado, hemos puesto ese while, es así? Saludos.
|
|
|
En línea
|
|
|
|
snake_linux
Desconectado
Mensajes: 70
|
He avanzado bastante en el codigo pero cuando he compilado me ha dado un monton de errores que no comprendo, me da los siguientes errores: pokemon.c: En la función ‘main’: pokemon.c:31:8: aviso: declaración implícita de la función ‘time’ [-Wimplicit-function-declaration] srand(time(NULL)+getpid()); ^ pokemon.c:31:19: aviso: declaración implícita de la función ‘getpid’ [-Wimplicit-function-declaration] srand(time(NULL)+getpid()); ^ pokemon.c: En la función ‘atacar’: pokemon.c:103:1: error: ‘\303’ parásito en el programa int ataque, daño; ^ pokemon.c:103:1: error: ‘\261’ parásito en el programa pokemon.c:103:17: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘o’ int ataque, daño; ^ pokemon.c:112:5: error: ‘\303’ parásito en el programa daño=azar(0, pokemon1.ataque[0]); ^ pokemon.c:112:5: error: ‘\261’ parásito en el programa pokemon.c:112:5: error: nombre de tipo ‘da’ desconocido pokemon.c:112:19: aviso: el paso del argumento 2 de ‘azar’ crea un entero desde un puntero sin una conversión [-Wint-conversion] daño=azar(0, pokemon1.ataque[0]); ^ pokemon.c:10:5: nota: se esperaba ‘int’ pero el argumento es de tipo ‘char *’ int azar(int, int); ^ pokemon.c:115:5: error: ‘\303’ parásito en el programa printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:115:5: error: ‘\261’ parásito en el programa pokemon.c:115:50: error: ‘da’ no se declaró aquí (primer uso en esta función) printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:115:50: nota: cada identificador sin declarar se reporta sólo una vez para cada función en el que aparece pokemon.c:115:54: error: expected ‘)’ before ‘o’ printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:116:5: error: ‘\303’ parásito en el programa pokemon2.pv-=daño; ^ pokemon.c:116:5: error: ‘\261’ parásito en el programa pokemon.c:116:22: error: expected ‘;’ before ‘o’ pokemon2.pv-=daño; ^ pokemon.c:123:5: error: ‘\303’ parásito en el programa daño=azar(0, pokemon1.ataque[1]); ^ pokemon.c:123:5: error: ‘\261’ parásito en el programa pokemon.c:123:9: error: expected ‘;’ before ‘o’ daño=azar(0, pokemon1.ataque[1]); ^ pokemon.c:126:5: error: ‘\303’ parásito en el programa printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:126:5: error: ‘\261’ parásito en el programa pokemon.c:126:54: error: expected ‘)’ before ‘o’ printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:127:5: error: ‘\303’ parásito en el programa pokemon2.pv-=daño; ^ pokemon.c:127:5: error: ‘\261’ parásito en el programa pokemon.c:127:22: error: expected ‘;’ before ‘o’ pokemon2.pv-=daño; ^ pokemon.c:134:5: error: ‘\303’ parásito en el programa daño=azar(0, pokemon1.ataque[2]); ^ pokemon.c:134:5: error: ‘\261’ parásito en el programa pokemon.c:134:9: error: expected ‘;’ before ‘o’ daño=azar(0, pokemon1.ataque[2]); ^ pokemon.c:137:5: error: ‘\303’ parásito en el programa printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:137:5: error: ‘\261’ parásito en el programa pokemon.c:137:54: error: expected ‘)’ before ‘o’ printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:138:5: error: ‘\303’ parásito en el programa pokemon2.pv-=daño; ^ pokemon.c:138:5: error: ‘\261’ parásito en el programa pokemon.c:138:22: error: expected ‘;’ before ‘o’ pokemon2.pv-=daño; ^ pokemon.c:145:5: error: ‘\303’ parásito en el programa daño=azar(0, pokemon1.ataque[3]); ^ pokemon.c:145:5: error: ‘\261’ parásito en el programa pokemon.c:145:9: error: expected ‘;’ before ‘o’ daño=azar(0, pokemon1.ataque[3]); ^ pokemon.c:148:5: error: ‘\303’ parásito en el programa printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:148:5: error: ‘\261’ parásito en el programa pokemon.c:148:54: error: expected ‘)’ before ‘o’ printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:149:5: error: ‘\303’ parásito en el programa pokemon2.pv-=daño; ^ pokemon.c:149:5: error: ‘\261’ parásito en el programa pokemon.c:149:22: error: expected ‘;’ before ‘o’ pokemon2.pv-=daño; ^ pokemon.c:167:5: error: ‘\303’ parásito en el programa daño=azar(0, pokemon2.ataque[0]); ^ pokemon.c:167:5: error: ‘\261’ parásito en el programa pokemon.c:167:9: error: expected ‘;’ before ‘o’ daño=azar(0, pokemon2.ataque[0]); ^ pokemon.c:170:5: error: ‘\303’ parásito en el programa printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:170:5: error: ‘\261’ parásito en el programa pokemon.c:170:54: error: expected ‘)’ before ‘o’ printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:171:5: error: ‘\303’ parásito en el programa pokemon1.pv-=daño; ^ pokemon.c:171:5: error: ‘\261’ parásito en el programa pokemon.c:171:22: error: expected ‘;’ before ‘o’ pokemon1.pv-=daño; ^ pokemon.c:178:5: error: ‘\303’ parásito en el programa daño=azar(0, pokemon2.ataque[0]); ^ pokemon.c:178:5: error: ‘\261’ parásito en el programa pokemon.c:178:9: error: expected ‘;’ before ‘o’ daño=azar(0, pokemon2.ataque[0]); ^ pokemon.c:181:5: error: ‘\303’ parásito en el programa printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:181:5: error: ‘\261’ parásito en el programa pokemon.c:181:54: error: expected ‘)’ before ‘o’ printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:182:5: error: ‘\303’ parásito en el programa pokemon1.pv-=daño; ^ pokemon.c:182:5: error: ‘\261’ parásito en el programa pokemon.c:182:22: error: expected ‘;’ before ‘o’ pokemon1.pv-=daño; ^ pokemon.c:189:5: error: ‘\303’ parásito en el programa daño=azar(0, pokemon2.ataque[0]); ^ pokemon.c:189:5: error: ‘\261’ parásito en el programa pokemon.c:189:9: error: expected ‘;’ before ‘o’ daño=azar(0, pokemon2.ataque[0]); ^ pokemon.c:192:5: error: ‘\303’ parásito en el programa printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:192:5: error: ‘\261’ parásito en el programa pokemon.c:192:54: error: expected ‘)’ before ‘o’ printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:193:5: error: ‘\303’ parásito en el programa pokemon1.pv-=daño; ^ pokemon.c:193:5: error: ‘\261’ parásito en el programa pokemon.c:193:22: error: expected ‘;’ before ‘o’ pokemon1.pv-=daño; ^ pokemon.c:200:5: error: ‘\303’ parásito en el programa daño=azar(0, pokemon2.ataque[0]); ^ pokemon.c:200:5: error: ‘\261’ parásito en el programa pokemon.c:200:9: error: expected ‘;’ before ‘o’ daño=azar(0, pokemon2.ataque[0]); ^ pokemon.c:203:5: error: ‘\303’ parásito en el programa printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:203:5: error: ‘\261’ parásito en el programa pokemon.c:203:54: error: expected ‘)’ before ‘o’ printf("Le has quitado %d puntos de vida\n", daño); ^ pokemon.c:204:5: error: ‘\303’ parásito en el programa pokemon1.pv-=daño; ^ pokemon.c:204:5: error: ‘\261’ parásito en el programa pokemon.c:204:22: error: expected ‘;’ before ‘o’ pokemon1.pv-=daño; ^
Dejo aquí el código que llevo ahora, es largo pero bueno: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> void ayuda(void); void atacar(); void pociones(); void informacion(); int azar(int, int); void ganador(); typedef struct { char nombre[25]; int pv; char *ataque[4]; int pd[4]; int pp[4]; int pociones; } pokemon; pokemon pokemon1; pokemon pokemon2; int turno=1; int main() { strcpy(pokemon1. nombre, "pokemon1"); pokemon1.pv=100; pokemon1.ataque[0]="ataque1";pokemon1.ataque[1]="ataque2";pokemon1.ataque[2]="ataque3";pokemon1.ataque[3]="ataque4"; pokemon1.pd[0]=1;pokemon1.pd[1]=5;pokemon1.pd[2]=2;pokemon1.pd[3]=4; pokemon1.pp[0]=20;pokemon1.pp[1]=30;pokemon1.pp[2]=10;pokemon1.pp[3]=40; pokemon1.pociones=2; strcpy(pokemon2. nombre, "pokemon2"); pokemon2.pv=100; pokemon2.ataque[0]="ataque1";pokemon2.ataque[1]="ataque2";pokemon2.ataque[2]="ataque3";pokemon2.ataque[3]="ataque4"; pokemon1.pd[0]=4;pokemon1.pd[1]=3;pokemon1.pd[2]=8;pokemon1.pd[3]=2; pokemon2.pp[0]=25;pokemon2.pp[1]=30;pokemon2.pp[2]=70;pokemon2.pp[3]=15; pokemon2.pociones=3; char comando; informacion(); while (1) { if (turno==1) printf("[%s]", pokemon1. nombre); else printf("[%s]", pokemon2. nombre); printf("Introduce la orden..."); while(fgetc(stdin ) != '\n'); switch ( comando ) { case 'h': ayuda(); break;; case 'a': atacar(); break;; case 'p': pociones(); break;; case 'i': informacion(); break;; case 'e': } } } void ayuda() { printf("h -> Despliega esta ayuda\n"); printf("a -> Ataca al pokemon enemigo\n"); printf("p -> Cura a tu pokemon si tienes pociones\n"); printf("i -> Da información sobre tu pokemon y el enemigo\n"); printf("e -> Cancelar la partida\n"); } void atacar() { int ataque, daño; ataque = scanf("%d", &ataque ); if (turno==1) { switch ( ataque ) { case '1': if (pokemon1. pp[0]==0){printf("no te quedan pp\n"); turno =2; break;;} daño=azar(0, pokemon1.ataque[0]); printf("%s uso %s", pokemon1. nombre, pokemon1. ataque[0]); pokemon1.pp[0]--; printf("Le has quitado %d puntos de vida\n", daño ); pokemon2.pv-=daño; if (pokemon2.pv<=0) ganador(); turno=2; break;; case '2': if (pokemon1. pp[1]==0){printf("no te quedan pp\n"); turno =2; break;;} daño=azar(0, pokemon1.ataque[1]); printf("%s uso %s", pokemon1. nombre, pokemon1. ataque[1]); pokemon1.pp[1]--; printf("Le has quitado %d puntos de vida\n", daño ); pokemon2.pv-=daño; if (pokemon2.pv<=0) ganador(); turno=2; break;; case '3': if (pokemon1. pp[2]==0){printf("no te quedan pp\n"); turno =2; break;;} daño=azar(0, pokemon1.ataque[2]); printf("%s uso %s", pokemon1. nombre, pokemon1. ataque[2]); pokemon1.pp[2]--; printf("Le has quitado %d puntos de vida\n", daño ); pokemon2.pv-=daño; if (pokemon2.pv<=0) ganador(); turno=2; break;; case '4': if (pokemon1. pp[3]==0){printf("no te quedan pp\n"); turno =2; break;;} daño=azar(0, pokemon1.ataque[3]); printf("%s uso %s", pokemon1. nombre, pokemon1. ataque[3]); pokemon1.pp[3]--; printf("Le has quitado %d puntos de vida\n", daño ); pokemon2.pv-=daño; if (pokemon2.pv<=0) ganador(); turno=2; break;; default: printf("no has elegido ninguna opcion, así que pierdes el turno\n"); turno=2; break;; } }else{ switch ( ataque ) { case '1': if (pokemon2. pp[0]==0){printf("no te quedan pp\n"); turno =1; break;;} daño=azar(0, pokemon2.ataque[0]); printf("%s uso %s", pokemon2. nombre, pokemon2. ataque[0]); pokemon2.pp[0]--; printf("Le has quitado %d puntos de vida\n", daño ); pokemon1.pv-=daño; if (pokemon1.pv<=0) ganador(); turno=1; break;; case '2': if (pokemon2. pp[1]==0){printf("no te quedan pp\n"); turno =1; break;;} daño=azar(0, pokemon2.ataque[0]); printf("%s uso %s", pokemon2. nombre, pokemon2. ataque[0]); pokemon2.pp[1]--; printf("Le has quitado %d puntos de vida\n", daño ); pokemon1.pv-=daño; if (pokemon1.pv<=0) ganador(); turno=1; break;; case '3': if (pokemon2. pp[2]==0){printf("no te quedan pp\n"); turno =1; break;;} daño=azar(0, pokemon2.ataque[0]); printf("%s uso %s", pokemon2. nombre, pokemon2. ataque[0]); pokemon2.pp[2]--; printf("Le has quitado %d puntos de vida\n", daño ); pokemon1.pv-=daño; if (pokemon1.pv<=0) ganador(); turno=1; break;; case '4': if (pokemon2. pp[3]==0){printf("no te quedan pp\n"); turno =1; break;;} daño=azar(0, pokemon2.ataque[0]); printf("%s uso %s", pokemon2. nombre, pokemon2. ataque[0]); pokemon2.pp[3]--; printf("Le has quitado %d puntos de vida\n", daño ); pokemon1.pv-=daño; if (pokemon1.pv<=0) ganador(); turno=1; break;; } } } void pociones() { } void informacion() { if (turno==1){ printf("%s\n", pokemon1. nombre); printf("pv:%d\n", pokemon1. pv); printf("\t-----ATAQUES-----\n"); printf("\t%s pp:%d\n", pokemon1. ataque[0], pokemon1. pp[0]); printf("\t%s pp:%d\n", pokemon1. ataque[1], pokemon1. pp[1]); printf("\t%s pp:%d\n", pokemon1. ataque[2], pokemon1. pp[2]); printf("\t%s pp:%d\n", pokemon1. ataque[3], pokemon1. pp[3]); printf("Numero de pociones:%d\n", pokemon1. pociones); printf("\t-----------------\n"); printf("pv enemigo:%d\n", pokemon2. pv); } if (turno==2){ printf("%s\n", pokemon2. nombre); printf("pv:%d\n", pokemon2. pv); printf("\t-----ATAQUES-----\n"); printf("\t%s pp:%d\n", pokemon2. ataque[0], pokemon1. pp[0]); printf("\t%s pp:%d\n", pokemon2. ataque[1], pokemon1. pp[1]); printf("\t%s pp:%d\n", pokemon2. ataque[2], pokemon1. pp[2]); printf("\t%s pp:%d\n", pokemon2. ataque[3], pokemon1. pp[3]); printf("Numero de pociones:%d\n", pokemon2. pociones); printf("\t-----------------\n"); printf("pv enemigo:%d\n", pokemon1. pv); } } int azar(int minimo, int maximo){ return minimo +rand()%maximo +1; } void ganador() { if (turno==1) { printf("%s ha ganado la partida\n", pokemon1. nombre); } else { printf("%s ha ganado la partida\n", pokemon2. nombre); } }
Os agradecería que me echarais una mano en lo que pudierais, ¿que es eso de parasito? Gracias de antemano, saludos.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pokemon XD: Tempestad Oscura > ayuda (buskando descarga)
Juegos y Consolas
|
eduli
|
6
|
15,146
|
31 Diciembre 2007, 15:24 pm
por disque
|
|
|
[Bash] Motor Físico (Sencillo) [BETA 1]
Scripting
|
BlacKGilgamesH
|
1
|
2,202
|
31 Julio 2010, 03:05 am
por leogtz
|
|
|
Ingenieros españoles buscan un motor de plasma más sencillo, barato y duradero
Noticias
|
wolfbcn
|
0
|
1,051
|
11 Noviembre 2015, 02:16 am
por wolfbcn
|
|
|
ayuda con juego de pokemon reloaded
Software
|
batmanlegend1455
|
1
|
1,598
|
8 Agosto 2019, 23:11 pm
por MCKSys Argentina
|
|
|
MOVIDO: ayuda con juego de pokemon
Foro Libre
|
MCKSys Argentina
|
0
|
1,197
|
8 Agosto 2019, 23:10 pm
por MCKSys Argentina
|
|