La carta Donkey Kong hace daño al rival.
Milk da 1 punto de vida a su usuario.
Popeye hace daño al rival y da 1 punto de vida al usuario.
Y quiero seguir agregando, pero resolver esto 1ero.
Parecen simplemente 2 efectos, pero es más complejo.
Cuando la carta se usa, marco quién la usó (User) y contra quién (Rival, es obvio pero evita un if).
Donkey Kong parece que puede usar esto:
Código
function TipicoAtaque () { if (Objetivo == "IA") { IAHP = IAHP-Ataque; Mensaje = "¡"+ShowerDeCartas[NroDeCartaDeHumano]+" dañó al rival!"; if (IAHP > 0) { TerminandoTurnoHumano(); } else { HumanoGana(); } } else { HumanoHP = HumanoHP-Ataque; Mensaje = Mensaje+"\n¡"+ShowerDeCartas[NroDeCartaDeIA]+" rival te dañó!"; if (HumanoHP > 0) { TerminandoTurnoDeIA(); } else { HumanoPierde(); } } }
Milk parece que puede usar esto:
Código
function HPUp (HP) { if (User == "Humano") { HumanoHP = HumanoHP+HP; Mensaje = "¡"+ShowerDeCartas[NroDeCartaDeHumano]+" te dió "+HP+"HP!"; TerminandoTurnoHumano(); } else { IAHP = IAHP+HP; Mensaje = Mensaje+"\n¡"+ShowerDeCartas[NroDeCartaDeIA]+" rival le dió "+HP+"HP!"; TerminandoTurnoDeIA(); } }
Popeye sería 1ero HPUp y luego TipicoAtaque, pero HPUp termina el turno. Parece que debo crear una función independiente que termine el turno, pero se debe indicar el turno de quién, y para eso la función tendría que tener otro if chequeando lo que ya se chequeó, o tendrían que ser 2 funciones, o más, me mareo.
Donkey Kong:
Atacar al objetivo, poner mensajes informativos.
Si el objetivo no sobrevivió, se informa y el juego termina.
sino, puede que el usuario reciba daño de veneno (si está envenenado) u otras cosas, hay que aplicarlas, informar, ver si el usuario sobrevive, en tal caso iniciar el turno del rival y sino terminar el juego. Informar.
Milk:
Dar HP al usuario, informar.
Fase "terminando el turno", lo que mencioné del veneno, etc.
Popeye:
Dar HP al usuario, informar.
Atacar al objetivo, poner mensajes informativos.
Fase "terminando el turno", lo que mencioné del veneno, etc.
Parece simple, pero está el tema de los ifs.
Si fuese así, 3 funciones, lo veo así:
Milk:
HPUp:
(Si el usuario es humano, aumentar 1HP al humano.
sino, al rival).
TerminandoTurno:
(Si el usuario es humano, ver si recibe daño de veneno. Si sobrevive, iniciar turno del otro, sino terminar juego.
sino, ver si la IA recibe daño por veneno. Si sobrevive... etc).
Donkey Kong:
AtaqueTipico:
(Si el usuario es humano, reducir el HP de la IA. Si sobrevivió, TerminandoTurno, sino informar victoria y fin.
sino, del humano. Si sobrevivió, TerminandoTurno, sino informar derrota y fin.).
Popeye:
HPUp.
AtaqueTipico.
TerminandoTurno.
¿Ven que en Milk y Donkey Kong haría 2 veces el mismo if, y en Popeye lo haría 3? No creo que sea bueno repetir el if.
Veo que en estos casos no es necesario considerar el objetivo, es obvio.
Tengan en cuenta además que hay cartas que harían daño a su usuario, siguiendo la lógica sería:
Autodaño:
(Si el usuario es humano, reducir su HP.
sino, de la IA).
AtaqueTipico.
EvaluarSupervivencias:
Código:
Si el usuario quedó sin HP
Si el rival quedó sin HP
Empate
sino
Usuario pierde.
sino si el rival quedó sin HP
Usuario gana
sino
TerminandoTurno
¿Uds cómo harían esto?