Chequear condiciones en nuestro juego

Para que nuestro juego pueda responder dinámicamente al input del jugador, apegarse a las reglas del juego y controlar la inteligencia artificial de personajes dentro del juego; nuestro código necesitará tomar decisiones. Los lenguajes de programación logran esto al crear y probar condiciones basadas en los valores contenidos por nuestras variables.

Acerca de este tutorial

Nivel de habilidad 1

Tiempo de lectura: 10 minutos

Conceptos nuevos:

  •  Decisiones en Java
  •   If…(Si condicional)
  •   AND lógico && (Y lógico)
  •   OR lógico || (o lógico)

Tutoriales de preparación recomendados

  • Programando juegos en Java nivel 1: Introducción
  • Variables de juego
  • Cambiando el valor de variables

Proyectos relacionados o que demuestran estos conceptos

  • Estableciendo un ambiente de desarrollo para Android

Queremos ser capaces de hacer cosas como esta:

if al jugador no le quedan vidas termina el juego.

Vuelve a la pantalla del menú principal

if el último alienígena fue destruido

empieza el siguiente nivel.

Nota que este es un pseudocódigo para demonstrar cómo funciona if. No es Java real. Veremos código Java real usando la palabra clave if en breve. Usaremos pseudocódigo de vez en cuando para ayudar explicar cosas. Usualmente será obvio cuando sea pseudocódigo, pero te lo haré saber cuándo sea necesario. También nota como la acción (e.g. volver al menú principal) tiene una sangría desde el borde de la página, usaremos mucho estas sangrías para hacer a nuestro código más leíble y te sugiero fuertemente que lo hagas igual.

Java tiene la palabra clave if y funciona así:

if(alguna condición es verdadera) {

// haz lo que sea

}

La palabra clave if es seguida por los paréntesis (). Dentro de los paréntesis tenemos una condición y luego contenido en llaves {} tenemos el código que se ejecutará si la condición es verdadera. Nos ocuparemos de la parte // haz lo que sea en el siguiente tutorial. Para este tutorial, veremos las posibilidades más útiles que podemos utilizar con la palabra clave de Java if para crear condiciones que podamos probar para ver si son verdaderas. Veamos algunos otros operadores, esta vez serán operadores de comparación que podemos usar para chequear condiciones en nuestros juegos.

Operadores de comparación

Hasta el momento podemos sumar (+), restar (-), multiplicar (*), dividir (/), asignar (=), incrementar (++), y disminuir (--) con operadores. Introduzcamos otros operadores súper útiles, y luego iremos directo a de hecho entender a cómo usarlos en Java. No te preocupes de memorizarte cada operador. Solo ojea la lista de operadores y su explicación y luego continua a la siguiente sección.

Allí, usaremos algunos operadores de comparación y su función se hará mucho más clara a medida que veamos algunos ejemplos de lo que nos permiten hacer. Están presentados aquí en una lista solo para hacer aparente desde el inicio la variedad y el alcance de estos operadores.

== es el operador de comparación de igualdad sin ser confundido con el operador de asignación. Este prueba la igualdad y puede ser verdadero o falso. Entonces podemos crear y probar condiciones así:

if(10 == 9){

// Obviamente es falso, 10 no es igual a 9.

}

! es el operador lógico NOT. Aquí lo podemos ver en acción.

if(!(10 == 9)){

// Esto es verdadero porque 10 NO es 9.
// Esto puede ser complicado pero veremos
// que este tipo de comparación puede ser útil.

}

!= Este es otro operador de comparación. El cual prueba si algo no es igual. Por ejemplo:

if(10 != 9){

// es verdadero porque 10 no es igual a 9.
}

>: Este es otro operador de comparación, el cual prueba si algo es mayor que otra cosa. La expresión:

if(10 > 9){

// Por supuesto que es verdadero.

}

>=: Este operador prueba si un valor es mayor o igual que otro, y si cualquiera de las dos condiciones se cumple el resultado es verdadero. Por ejemplo, la expresión:
if(10 >= 9){

// es verdadero.

}

También ve esto para aclarar dudas.

if(10 >= 10){

// También es verdadero porque 10 iguala a 10
// incluso cuando 10 no es mayor que 10.

<=: Como el operador anterior, este operador prueba dos condiciones, pero esta vez, menor que o igual a. La expresión

if(10 <= 9){

// es falso.

}
No obstante, estas dos condiciones son verdaderas.

if (10 <= 10){

// es verdadero porque 10 iguala a 10.

}

if (9 <= 10){

// es verdadero porque 9 es menor que 10.

}

&&: Este operador es conocido como AND lógico. Prueba dos o más partes separadas de una expresión y todas las partes deben ser verdaderas para que el resultado sea verdadero. AND lógico es regularmente usado en conjunto con los otros operadores para construir pruebas más complejas. La expresión:

if((10 > 9) && (10 < 11)){ // es verdadero porque ambas partes son verdaderas. } Sin embargo, esto es falso: if((10 > 9) && (10 < 9)){ // es falso porque solo una parte de esta expresion se cumple // (10 > 9) es verdadero y la otra (10 < 9) es falso.

}

||: Este operador es llamado OR lógico. Es como AND lógico excepto que solo una de las dos partes de una expresión necesita ser verdadera para que la expresión lo sea. Veamos al último ejemplo usado, pero reemplacemos el signo con ||. La expresión:

if((10 > 9) || (10 < 9)){ // es verdadero ahora… // una parte de la expresión es verdadera (10 > 9).

}

Y como es de esperarse, podemos usar nuestras variables del juego también en declaraciones if. Aquí hay algunos ejemplos. No necesitas entender completamente cómo funciona el código en las siguientes muestras, solo échale un vistazo y piensa en cómo estamos controlando el código de nuestro juego con las declaraciones if y sus condiciones. Este es código real de un juego.

boolean hitDetected = false;

// Aquí va un código que detecta
// si la nave del jugador fue impactada

if(hitDetected) {

playSound(explosion);
playerLives –;

}

Ahora veamos a cómo podríamos chequear para ver si el jugador rompió el record del tiempo más rápido al final de un juego de carreras. Las variables tuvieron que haberse declarado e inicializado previamente.

//chequeo para el tiempo más rápido

if(timeTaken < fastestTime) {

// el jugador lo hizo más rápido que el tiempo más rápido!!
// Entonces un tiempo más rápido es fijado

// ahora cambia la variable del tiempo más rápido
// al nuevo record de tiempo (timeTaken)
fastestTime = timeTaken;

}

La palabra clave if y todos estos operadores son virtualmente inútiles sin una manera de usarlos apropiadamente para tomar decisiones reales que afecten variables reales y al código. Veamos cómo podemos estructurar el código de nuestro juego para lograr objetivos. Nota que casi cualquier código puede ir dentro de llaves {} en una declaración if. En el siguiente tutorial veremos que podemos ramificar el código de nuestro juego basándonos en las condiciones que acabamos de aprender a chequear. Échale un vistazo a como Ramificar el código de nuestro juego.

Leave a Reply

Your email address will not be published. Required fields are marked *