Noticias

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

C#¿Saber cuántos booleanos son "true"?

Iniciado por Nevercreature, Abril 05, 2018, 08:12:30 AM

Tema anterior - Siguiente tema
¡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!!

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... 

Abril 05, 2018, 12:29:01 PM #2 Ultima modificación: Abril 05, 2018, 12:40:09 PM por Igor
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;
}

 
 

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. 

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...

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.

Etiquetas: