Reglas estándar

Inform 7: Empezando a programar

Por Xavi C.

Versión 1.0 - Fecha revisión: 20/01/11

En ocasiones los programadores no saben qué pueden y qué no pueden hacer con Inform 7, dado que su sintaxis es peculiar y genera algunas dudas. Para ello, vamos a revisar la "Standard Rules" de Graham Nelson, esto es, todas las reglas básicas y comunes que se pueden programar en Inform 7.

Las Standard Rules, incluidas en cada proyecto, definen el marco básico de las clases, acciones y frases que hacen funcionar a Inform.

Kinds

Physical creations

Values that vary

Values

Actions

Verbs

Adjectives

Properties

Use options

La extensión Spanish

Spanish agrupa el trabajo de traducción necesario para la programación y jugabilidad en español.

1: Cosas especificas que ofrece Spanish

Actions: Entering to room, Insultando, InsultandoSuave, Bajando, Subiendo

Use options: Dialecto Castellano, Dialecto Sudamericano, Manual Pronouns, Auto Pronouns

Las puedes encontrar en:

Index>>Phrases seccion 'From the extension Spanish'

Section 1.1: Actualizar pronombres

A veces, el parser asigna internamente un mapeo diferente de pronombres:

>>o

Cocina

Estás en la cocina del castillo. Esto está lleno de cacerolas y de cacharros para cocinar. Hay un horno, un fregadero y un armario pequeño.

Puedes ver un cuchillo.

>>cogelo

Difícilmente podrías llevarte eso.

>>coge el cuchillo

Cogido.

Puedes hacer que I7 actualice los pronombres activando la opcion:

Use Auto Pronouns.

Section 1.2: InformATE - PreguntaSiNo

Esto es para que el parser no interprete una respuesta "NO" como noroeste, al hacer una pregunta retorica. Se trata de "allow no response" o su equivalente "permitir no como respuesta". Solo funciona un turno.

Instead of examining the anciana:

say "La anciana al ver que te fijas en ella te dice '¡Hola guapo! ¿Quieres que te lea tu futuro amoroso?' dice sentada lujosamente en su puesto de la feria.";

allow no response.

Mas detalles en el "INFSP 7 Manual.txt"

Section 1.3: Comando Salidas

Anteriormente, Spanish daba soporte al comando salidas (heredado de informATE). Pero la evolucion interna de I7 hizo imcompatible el código asociado. Es mucho mejor utilizar un par de extensiones que ya hacen ese trabajo, como la Exit Description by Matthew Fletcher (hay una edicion SP en las librerias INFSP7).

Section 1.4: Dialecto Sudamericano

El juego puede iniciar en modo sudamericano con la opcion:

Use Dialecto Sudamericano.

En este modo, se interpretará a COGE como una palabra malsonante. Puede consultarse el modo actual con el comando:

>>DIALECTO

Y cambiarse con:

>>DIALECTO SUDAMERICANO

>>DIALECTO CASTELLANO

Tambien puedes decidir qué responder segun el modo activado:

if Dialecto Sudamericano, say "Hola chamigo!".

Section 1.5: Gramatica hispana

Consulta la pestaña Index>>Actions

Section 1.6: La Hora

En ingles, existe la sustitucion "time of day in words" para decir la 'hora' con palabras:

say "the [time of day in words]."

En español, se puede decir lo mismo con: (las dos formas funcionan en español)

say "las [time of day in spanish]."

Section 1.7: Spanish Saying - Articulos y sufijos

En la salida de texto (funciones say "bla bla bla") pueden usarse las siguientes particulas de sustitucion. El resultado será la impresión correcta del articulo y sufijo segun el genero o tiempo verbal. Como son heredadas de informATE, puedes consultar tambien la seccion del DocumentATE: Descripciones y Parsing: Descripcion de objetos y lugares.

Articulos

el "[el noun]"

El "[El noun]"

Similares a the y The.

un "[un noun], puaj que asco."

Similar a "[a noun]". Imprime el objeto, precedido por el artículo indefinido apropiado

Un "[_Un noun] avanza sin control"

Como el anterior pero con la inicial en mayúscula, para empezar frase.

del say "Debes salir antes [del noun]."

Imprime el nombre del objeto precedido por "del", "de la", "de los" o "de las" según su género y número. Observa que no serviría poner say "de [the noun]" ya que "de el" debe convertirse en "del". Si el obj no tiene artículos (o es nombre propio) se imprimirá "de" simplemente.

al

Al

Imprime el nombre del objeto precedido por "al", "a la", "a los" o "a las" (o simplemente "a" si es nombre propio).

Terminaciones para adjetivo:

o say "Cogid[o noun]"

Imprime "o", "a", "os" o "as".

s say "[The noun] ahora está[n noun] azul[s noun]."

Imprime "s" si es plural o bien nada si es singular (es decir, si el objeto es plural-named, como zapatos o pantalones)

_s say "[The noun] ahora está[n noun] azul[_s noun]."

Imprime "es" si es plural o bien nada si es singular. Pensado para hacer concordar en número a ciertos adjetivos que terminan en consonante (como azul).

Terminaciones para verbos:

es say "No [es noun] nada importante."

Imprime "es" o "son" según el objeto sea singular o plural. Pensado para conjugar correctamente el verbo 'ser'. En el ejemplo, generará el mensaje "No es nada importante." o bien "No son nada importante.", según el número de noun.

Es

Como el anterior pero con la inicial en mayúscula, para empezar frase.

n say "[The noun] te mira[n noun]."

Imprime una "n" si el objeto es plural, o nada si es singular. Esto está pensado para hacer concordar el número de un verbo con su sujeto. En el ejemplo: dará lugar a algo como "Manolo te mira." si noun es manolo, o bien "Los cuervos te miran.", si el noun es un grupo de cuervos (que serán entonces objetos plural-named).

lo say "No puedes llevárte[lo noun]."

Imprime el pronombre adecuado "lo", "la", "los", o "las".

Verbo COGER/TOMAR segun dialecto:

coge say "Vamos [coge]lo."

Imprime "coge" o "toma" y detrás el sufijo que se especifique entre comillas. say "[coge]r" imprimiría "coger" o "tomar".

Coge

Como el anterior pero con la primera letra en mayúsculas.

MMcoge

Como el anterior pero con todas las letras en mayúsculas.

2: Contactar con el INFSP Team

Web: www caad es/informate/infsp/

Foro: www caad es/foro

Wiki: wiki.caad.es/Inform7_Doc

Main Developer: Sarganar

Feedbacks: sarganar (at) gmail (dot) com

3: Ejemplo de programación: Cursillo Mini Juego

"Cursillo Mini Juego"

Include Spanish by Sebastian Arg.

The story headline is "Un ejemplo práctico paso a paso, escrito por Sarganar."

When play begins: say "Bienvenido al...[line break]".

Use full-length room descriptions.

The Celda is a room. The printed name is "En medio de ningún sitio".

The description is "Estás en una especie de celda de paredes metálicas y lisas. Hacia el norte no hay pared y fuera puedes ver un paisaje soleado. Hacia el sur hay un pasadizo."

Instead of going north in the Celda:

if the pared is cortada begin;

say "Cruzas la puerta que tú mismo has creado en el muro de cristal y sales al exterior triunfante.";

end the game in victory;

otherwise;

say "Ouch! ¿Qué es esto? Lo que habías tomado por ausencia de pared es en realidad un muro de cristal transparente. ¡No puedes salir!";

end if.

Instead of going north in the Celda during Alarma:

if the pared is cortada then say "No puedes salir con esa alarma sonando. Te cogerían enseguida. Y te cogerán de todos modos si no la haces callar pronto.".

A cupula de cristal is here. The printed name is "cúpula de cristal".

The description is "[if open]Está abierta.[otherwise]Examinando con detenimiento la cúpula descubres una especie de juntura. Parece una tapa que podría abrirse."

It is container, openable, closed and female.

It is fixed in place and transparent.

Understand "tapa" as cupula.

Rule for printing room description details of cupula:

if the cupula is open begin;

say " con la tapa abierta, ubicada en el centro de la habitación";

otherwise if the diamante autentico is in the cupula;

say " en cuyo interior refulge un increíble diamante";

end if;

omit contents in listing.

Instead of attacking or cutting the cupula, say "No es necesaria una acción tan drástica. La cúpula tiene una tapa."

A diamante autentico is in the cupula.

The description is "Tiene un brillo casi cegador, que no parece explicable por las leyes de la óptica."

Understand "diamante increible/luminoso/autentico/refulgente/cegador/brillante" as diamante autentico.

Instead of attacking the diamante autentico, say "No podría, es muy duro."

Does the player mean doing something with the diamante autentico: it is likely.

Instead of examining the diamante autentico when the noun is inside the cupula, say "El diamante reposa sobre un cojín de terciopelo."

Definition: A container is empty if it does not contain something.

The flagHolder is a number that varies.

Check an actor taking something inside the cupula:

change flagHolder to 1.

After taking something during Entire Game:

if flagHolder is 1 begin;

if the cupula is not empty begin;

say "Consigues sacar [the noun] sin disparar la alarma.";

otherwise;

continue the action;

end if;

change flagHolder to 0;

otherwise;

continue the action;

end if.

The pared de cristal is here.

The description is "La pared norte es de un cristal tan transparente que en un primer momento pensaste que no había pared."

The pared can be lisa or cortada. The pared is lisa.

It is female and scenery.

Understand "rectangulo", "puerta", "muro" as pared.

Cutting it with is an action applying to one thing and one carried thing.

Understand "corta [something] con/usando [something preferably held]" as cutting it with.

Understand "rompe [something] con/usando [something preferably held]" as cutting it with.

Instead of cutting the pared with something (called herramientita):

if the herramientita is a diamante autentico begin;

if the pared is lisa begin;

say "Usando el diamante cortas limpiamente un rectángulo en forma de puerta.";

now the pared is cortada;

end if;

otherwise if the herramientita is a diamante falso;

say "Intentas cortar el cristal usando el diamante rayado, pero sólo logras rayarlo más. No creo que este diamante sea auténtico...";

otherwise;

say "El cristal de la pared es demasiado resistente y no tienes herramienta para cortarlo.";

end if.

Instead of exiting when the player is in the Celda:

try going north.

Instead of entering the pared:

try going north.

Alarma is a recurring scene. Alarma begins when the cupula is empty.

Alarma ends happily when the cupula is not empty.

Alarma ends sadly when the time since Alarma began is 4 minutes.

When Alarma begins:

change contador to 0;

if the noun is something, say "Al sacar [the noun] de la cúpula una alarma empieza a sonar en algún lugar del exterior."

When Alarma ends happily:

say "Ufff. La alarma ha parado. Creo que nadie la ha escuchado."

When Alarma ends sadly:

end the game saying "Súbitamente un rayo de luz vertical aparece en la estancia y se ensancha hasta convertirse en un cilindro. Cuando el resplandor se apaga ves que en su lugar ha aparecido un guardia con equipamiento anti-disturbios. 'Hmm' dice, 'Te crees muy listo ¿eh? Me has sacado de la siesta con esa maldita alarma y eso es algo que no perdono.'"

The contador is a number that varies.

Every turn during Alarma:

increase contador by 1;

if contador is 2, say "La alarma sigue sonando fuera. Acabará por atraer a alguien.";

if contador is 3, say "Definitivamente, esa alarma te está poniendo muy nervioso. Mejor devolvías el diamante a su sitio.".

The Celda2 is south of the Celda. The printed name is "Cubículo".

The description is "Estás en un cubículo de techo bajo. La única salida está al norte, por donde has entrado."

Instead of going nowhere from Celda2, say "Te he dicho que no hay más salidas."

The diamante falso is here. The printed name is "diamante rayado".

The description is "No brilla mucho porque su superficie está rayada. Hum ¿Un diamante rayado?"

Understand "diamante rayado" as diamante falso.

Instead of attacking the diamante falso, say "Es falso. Seguro que podría romperlo, pero ¿qué ganaría con ello?"

Test me with "s / toma diamante / n / abre cupula / deja diamante rayado en cupula / toma diamante / rompe pared con diamante / sal".