Tutorial 9 - Creación de un juego (I)

Paso 10 de 26

Ahora que hemos probado que el trace funciona, y que la nave no muestra el rectángulo del foco, procederemos a sustituir el trace por las sentencias que queremos ejecutar.

Queremos evaluar qué flecha se ha pulsado, y ejecutar acciones diferentes según sea el caso de haber pulsado una flecha u otra. Para este tipo de problemas es muy útil una sentencia llamada switch.

Para comprender esta sentencia, supongamos el caso de un test con respuestas a, b y c:

switch (answer) 
{
	case a :
        trace("the user has chosen a");
        break;
    
    case b :
        trace("the user has chosen b");
        break;
    
    case c :
        trace("the user has chosen c");
        break;
    
    default :
        trace("ha ocurrido un error");
}

Lo que haría en este caso la sentencia switch es evaluar answer (variable que está entre paréntesis).

En el caso de que la respuesta fuera por ejemplo b, se analizarán los casos hasta encontrar uno que sea correcto (case b),y entonces se ejecutarán la sentencias que se encuentren dentro de ese case (en este caso un trace que informa de que se ha respondido b), y ya no se revisarán los demás casos (break).

Cada case debe terminar siempre con una sentencia break para que se omita el resto de la sentencia switch cuando encontremos un case correcto. Así evitamos que vaya comprobando el resto de los casos.

Si ningún case fuera correcto, entonces se ejecutará lo que se indique en default. Aquí las únicas respuestas posibles son a, b o c, por lo que si answer es cualquier otra cosa, hemos programado un trace que indique que ha habido un error. Aquí no haría falta un break.

Siempre es conveniente incluir default, aunque no preveamos que vaya a ocurrir nada fuera de los case.

Es importante no olvidar que esta sentencia tiene también sus propias llaves al inicio y al final.