indy_logo.gif (3362 bytes)

Paso 3: puertas

Solo una habitación fue creada con los pasos previos. Una aventura necesita algunas habitaciones más, y serán introducidas puertas virtuales para poder ir de una habitación a otra.


ROOM main	// Habitación del comienzo
{
	BGSOUND { "snd/indysong.mid" }	// Un poco de música
	IMAGE
	{
		"gr/idol.jpg"		// Imagen de fondo
	}
	WALK
	{
		"gr/idol_bm.gif"	// Area "caminable"
	}
	ITEM Indy	// Mi héroe   :)
	{
		ANIMATION
		{
			// --- imágenes en reposo ---
			0  0  "gr/indy_d.gif"  1 // Mirando al Sur
			0  1  "gr/indy_r.gif"  1 // Mirando al Oeste
			0  2  "gr/indy_u.gif"  1 // Mirando al Norte
			0  3  "gr/indy_l.gif"  1 // Mirando al Este
			// --- animaciones caminando ---
			1  0  "gr/indy_wd.gif" 4 // Mirando al Sur
			1  1  "gr/indy_wr.gif" 6 // Mirando al Oeste
			1  2  "gr/indy_wu.gif" 4 // Mirando al Norte
			1  3  "gr/indy_wl.gif" 6 // Mirando al Este
			// --- animaciones hablando ---
			2  0  "gr/indy_td.gif" 7 // Mirando al Sur
			2  1  "gr/indy_tr.gif" 4 // Mirando al Oeste
			2  2  "gr/indy_tu.gif" 1 // Mirando al Norte
			2  3  "gr/indy_tl.gif" 4 // Mirando al Este
		}
		POSITION { 170 170 0 }
		ITEM whip
		{
			SENTENCE { 2 }	// Este objeto necesita de otro objeto y del verbo "use"
			ICON { "gr/whip.gif" }
			/* Comandos locales */
			COMMAND "Look at" whip
			{
				SAY indy "¡Nunca salgo sin él!"
			}
			COMMAND * whip  //Entrada valida para cualquier acción con el látigo (Whip), excepto "Look at".
			{
				SAY indy "No sé que hacer con eso y con el látigo."
			}
		}
	}

	ITEM idol
	{
		IMAGE { 0  0  "gr/blank.gif" }
		POSITION { 155 135 0 }
	}
	ITEM plant_1
	{
		IMAGE { 0  0  "gr/plant_1.gif" }
		POSITION { 0 183 0 }
	}
	ITEM wayout	// Esto hará el papel de la puerta.
	{
		IMAGE { 0  0  "gr/plant_2.gif" }
		POSITION { 256 183 38 }
	}
	ITEM plant_3
	{
		IMAGE { 0  0  "gr/plant_3.gif" }
		POSITION { 190 183 0 }
	}

	EVENT	// Acciones de esta habitación
	{
		IF
		{
			COLLISION indy wayout	// Cuando en jugador este encima de la puerta.
		}
		THEN
		{
			GOTO outside		// ...saltamos a la otra habitación
			PLACE indy outside	// Movemos al jugador allí.
			LOCATE indy 140 140 0	// Nos aseguramos de que el jugador esta en el área "caminable".
		}
	}
}

ROOM outside	// La otra habitación
{
	BGSOUND { "snd/indysong.mid" }		//Música de fondo para esta habitación.
	IMAGE { "gr/street_2.gif" }
	WALK { "gr/street_2_bm.gif" }

	ITEM entrance
	{
		IMAGE { 0  0  "gr/blank2.gif" }
		POSITION { 32  142  0 }
	}

	EVENT
	{
		IF
		{
			COLLISION indy entrance	// Cuando el jugador este en la puerta...
		}
		THEN
		{
			GOTO main		// ...saltamos a la habitación del comienzo.
			PLACE indy main		// Movemos al jugador allí.
			LOCATE indy 220 140 0	// Nos aseguramos de que este dentro del área "caminable".
		}
	}
}

/* Comandos globales */

COMMAND "look at" *
{
	SAY indy "No le veo nada especial."
}
COMMAND * *	// Esto se hará para cualquier entrada (Verbo+Nombre) que no haya sido testeada anteriormente..
{
	SAY indy "No puedo hacer eso."
}
COMMAND * * *	// Esto se hará para cualquier entrada (Verbo+Objeto1+Objeto2) que no haya sido especif. en los bloques anter.
}
	SAY indy "No puedo hacer eso con esos objetos."
}


Sorprendentemente, diferentes músicas de fondo pueden ser tocadas para cada habitación..

En este caso, todas las entradas han sido puestas en el bloque EVENT.
Los bloques EVENT son acciones. Son muy similares a los bloques COMMAND, exceptuando que estos son testeados y ejecutados todo el tiempo, incluso cuando el jugador esta inactivo.
El objeto "planta2" será llamado "salida" para que el jugador coja una pista sobre esta función. Aquí, tan pronto como el personaje choque con el, la condición COLLISION retornara verdadero y el jugador será transferido a otra habitación.
Un mecanismo EVENT simétrico ha sido utilizado en la otra habitación, para volver a la primera.

Observa que una de las habitaciones es llamada "main". El engine detecta este nombre convencional para saber donde comenzar cuando existe mas de una habitación en el juego.
Los bloques de acciones (COMMAND y EVENT) pueden ser declarados dentro de cualquier habitación u objeto, pero mejor hacerlo globalmente. Como tu podrás comprobar las aciones declaradas locales (es decir, dentro de un objeto o habitación) serán testeadas primero.

Para cada objeto tu puedes especificar si puede ser usado solo o si necesita de algún otro objeto con la palabra reservada SENTENCE. Por ejemplo, el látigo (Whip) debe de ser usado con cualquier otra cosa.

Next >>

Back to the main page