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