Tutorial 9 - Creació d'un joc (I)

Pas 10 de 26

Ara que hem provat que el trace funciona, i que la nau no mostra el rectangle del focus, procedirem a substituir el trace per les sentències que volem executar.

Volem avaluar quina fletxa s'ha premut, i executar accions diferents segons si s’ha premut una fletxa o una altra. Per a aquest tipus de problemes és molt útil una sentència anomenada switch.

Per comprendre aquesta sentència, suposem el cas d'un test amb respostes a, b i 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");
}

El que la sentència switch faria en aquest cas és avaluar answer (variable que hi ha entre parèntesis).

En cas que la resposta fos per exemple b, s'analitzaran els casos fins a trobar-ne un que sigui correcte (case b), i llavors s'executaran les sentències que hi hagi dins d'aquest case (en aquest cas un trace (que informa que s'ha respost b), i ja no es revisaran els altres casos (break).

Cada case ha d'acabar sempre amb una sentència break perquè s'ometi la resta de la sentència switch quan trobem un case correcte. Així evitem que comprovi la resta dels casos.

Si no hi ha cap case correcte, llavors s'executarà el que s'indiqui a default. Aquí les úniques respostes possibles són a, b o c, per la qual cosa si answer és qualsevol altra cosa, hem programat un trace que indiqui que hi ha hagut un error. Aquí no faria falta un break.

Sempre és convenient incloure default, encara que no prevegem que hagi de passar res fora dels case.

És important no oblidar que aquesta sentència també té les seves pròpies claus a l'inici i al final.