Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Nevercreature en Abril 05, 2018, 08:12:30 AM

Título: C#¿Saber cuántos booleanos son "true"?
Publicado por: Nevercreature en Abril 05, 2018, 08:12:30 AM
¡Hola! Puede que esta pregunta pueda ser un poco estúpida para alguien experimentado en C#, pero me gustaría saber cómo puedo hacer un recuento de booleanos y conocer cuántos de todos ellos son "true".
 
Ejemplo;
 
private bool enemigo01vivo = true;
 
private bool enemigo02vivo = false;
 
private bool enemigo03vivo = false;
 
private bool enemigo04vivo = true;
 
private bool enemigo05vivo = true;
 
 
 
La pregunta es: ¿Cuántos de los enemigos del 01 al 05 siguen vivos?
 
 
 
Se me ocurre cambiar los booleanos por enteros (0,1) y contarlos con una suma, pero igual no es la mejor manera de hacerlo. ¿Tal vez se podría hacer un ciclo "for" o algo así?
 
¡¡Gracias!!
Título: C#¿Saber cuántos booleanos son "true"?
Publicado por: pioj en Abril 05, 2018, 11:41:48 AM
Cita de: Nevercreature date=1522908750Se me ocurre cambiar los booleanos por enteros (0,1) y contarlos con una suma,
   


¡Va por ahí la cosa, premio! Busca Bit Field o Bit Flag por Internet, tienes relación con lo que quieres hacer... 
Título: C#¿Saber cuántos booleanos son "true"?
Publicado por: Igor en Abril 05, 2018, 12:29:01 PM
lo mejor seria hacer un array... asi no tendrias que llamar a cada bool con un nombre diferente... (enemigo01vivo, enemigo02vivo...)
 
seria algo asi:
 
 
 

private bool[] enemigosVivos = new bool[5]; //suponiendo que son 5
 
void Update() {
int recuento = recuentoEnemigosVivos();
}
 
//funcion para hacer recuento
int recuentoEnemigosVivos() {
   int vivos = 0;
   for (int i = 0; i < enemigosVivos.Length; i++) {
      if (enemigosVivos) {
          vivos++;                                  
      }
   }                                  
   return vivos;
}

 
 
Título: C#¿Saber cuántos booleanos son "true"?
Publicado por: francoe1 en Abril 05, 2018, 02:01:36 PM
Cita de: Igor date=1522924141lo mejor seria hacer un array... asi no tendrias que llamar a cada bool con un nombre diferente... (enemigo01vivo, enemigo02vivo...)
   
   
      seria algo asi:
   
   
       
   
   

private bool[] enemigosVivos = new bool[5]; //suponiendo que son 5
 
void Update() {
int recuento = recuentoEnemigosVivos();
}
 
//funcion para hacer recuento
int recuentoEnemigosVivos() {
   int vivos = 0;
   for (int i = 0; i < enemigosVivos.Length; i++) {
      if (enemigosVivos) {
          vivos++;                                  
      }
   }                                  
   return vivos;
}

   
       
   


Hasta lo podes hacer con Linq en una línea
 

enemigosVivos.Count(x => x == true);

 
No me acuerdo si count funciona en Array o requiere un Enumerador, pero de lo contrario podrias realizarlo con una lista. 
Título: C#¿Saber cuántos booleanos son "true"?
Publicado por: Igor en Abril 05, 2018, 02:03:48 PM
Cita de: francoe1 date=1522929696Hasta lo podes hacer con Linq en una línea
   
   

enemigosVivos.Count(x => x == true);

   
      No me acuerdo si count funciona en Array o requiere un Enumerador, pero de lo contrario podrias realizarlo con una lista. 
   


no sabia que esto se podia hacer....
 
siempre se aprende algo nuevo...
Título: C#¿Saber cuántos booleanos son "true"?
Publicado por: francoe1 en Abril 05, 2018, 02:05:58 PM
Cita de: Igor date=1522929828no sabia que esto se podia hacer....
   
   
      siempre se aprende algo nuevo...
   


Puedes usar el predicado en la función Where o Count.