Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

if (vida1>0 || vida2>0)

Iniciado por ThePalyerZftP, Noviembre 23, 2016, 09:16:31 PM

Tema anterior - Siguiente tema
Hola a todos.
 
Bueno he hecho un código en C# (!!! Fuera de unity !!!) , el problema es que tengo un if que no se como usarlo para que se salga de el si solo una de las condiciones sea 0 o menos.
 
He probado a usar un while pero tampoco. Claro lo que hacia era mientras vida1>0  o vida2>2 se repita claro esto no parara hasta que los dos sean 0 o negativos. Ese es el fallo (Me pregunto como se haría para que solo si fuera uno 0 o menos se parar)
 
Después probé el if, Si vida1> 0 || vida2>0 haga ... pero parte del código no acaba de ejecutarse. Es decir se va repitiendo  todo correcto hasta que llega el momento que uno estará a 0 o menos, no acaba de hacer lo que quiero que haga y acaba el if como si ya hubiera acabado.
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            byte Turno = 0;
            int porcentageArmadura = 2;
            //Personaje1
            int vida1 = 200; //Vida del perosonaje o bicho.
            int defensa1 = 50; //Cada 10 de armadura son - 5% menos de daño.
            int daño1 = 100; // Daño fisico.
            int dañomagico1 = 25; //Daño magico.
            int velocidadA1 = 2; //Determina quien empiza primero.
            //Personaje2
            int vida2 = 150;
            int defensa2 = 100;
            int daño2 = 70;
            int dañomagico2 = 10;
            int velocidadA2 = 1;
            if (velocidadA1 > velocidadA2){ Turno = 1; Console.WriteLine("P1 es mas rapido"); }else{ Turno = 2; Console.WriteLine("P2 es mas rapido"); }
            if (vida1>0 || vida2>0) {
                if (Turno==1) {
                    Console.WriteLine("P1 Vida: {0}",vida1);
                    Console.WriteLine("P2 Vida: {0}", vida2);
                    Console.WriteLine("P1 ATACA!!!");
                    Console.WriteLine("/////"); Console.WriteLine("/////"); Console.WriteLine("/////"); Console.WriteLine("/////");
                    int dañoCausado;
                    dañoCausado = daño1 + dañomagico1 - defensa2/porcentageArmadura;
                    Console.WriteLine("P1 le causa {0} de daño a P2",dañoCausado);
                    vida2 = vida2 - dañoCausado;
                    Console.WriteLine("P2 Vida: {0}", vida2);
                    dañoCausado = 0;
                    Turno = 2;
                    Console.WriteLine("/////"); Console.WriteLine("/////"); Console.WriteLine("/////"); Console.WriteLine("/////");
                }
                if (Turno == 2)
                {
                    Console.WriteLine("P1 Vida: {0}", vida1);
                    Console.WriteLine("P2 Vida: {0}", vida2);
                    Console.WriteLine("P2 ATACA!!!");
                    Console.WriteLine("/////"); Console.WriteLine("/////"); Console.WriteLine("/////"); Console.WriteLine("/////");
                    int dañoCausado;
                    dañoCausado = daño2 + dañomagico2 - defensa1/porcentageArmadura;
                    Console.WriteLine("P2 le causa {0} de daño a P1", dañoCausado);
                    vida1 = vida1 - dañoCausado;
                    Console.WriteLine("P1 Vida: {0}", vida1);
                    dañoCausado = 0;
                    Turno = 1;
                    Console.WriteLine("/////"); Console.WriteLine("/////"); Console.WriteLine("/////"); Console.WriteLine("/////");
                }
            }
            Console.ReadKey();
        }
    }
}

 
 
 
 
 

Hola, la logica del juego tuyo es "Si los dos estas vivos metete en el loop" (Si no es que hay un ganador) --> && . Probalo asi:
 

if(vida1 > 0 && vida2>0 )

 
Si vas a pasar cosas asi a Unity tene en cuenta que en todo Game Engine tenes el famosisimo Game Loop que corre indefinidamente, es decir que sucede la parte de las fisicas, la parte del renderizado, la de la logica de juego via scripts propios, la de la GUI, etc. Si en la logica de tu juego (una partecita del gameLoop) pones un while y ese while depende de porej cuadros futuros todo se va a tildar y no vas a salir nunca mas de ahi. Ej si tenes while(jugador.vida > 0) { (acciones) } , como la vida depende del cuadro a cuadro te vas a quedar siempre ahi. Por eso nunca uses while ya que no tenes salida asegurada, distinto es con un for que ya tenes condiciones de salida.
 
Saludos
 
 
 
 

Etiquetas: