en Ren'Py

Tutorial de Ren’Py – Variables

python11

Ahora Zane está piloteando el Shin Getter, pero hay que decirle cual de las tres formas va a pilotear.

Esta vez no usaremos menu, usemos input de texto.



init:

    $ getter = ""

label start:

    $ getter = renpy.input("Change Getter...")


Notarán que la variable tiene «», esto es para indicar que guardará un string (O palabras/letras)

¿Recuerdan cuando dije que $ se usaba también para comandos de Python? Me refería a esto. Además de manejar variables, usar $ en Ren’py sirve para llamar comandos diversos. Por ejemplo, si escriben $ renpy.pause() el juego se detendrá hasta que alguien haga click. En este caso le estamos diciendo que cambie el valor de $ getter a lo que el jugador coloque en texto y pise enter, la sección entre paréntesis tiene el mensaje que saldrá cuando sea momento de hacer input. $ renpy.input() tiene más cualidades, pero no son el enfoque justo ahora.

Sabemos que cuando el jugador pise enter el valor de $ getter cambiará por lo que sea que haya colocado, así que luego de la variable empezamos el testeo de variables.



init:

    $ getter = ""

label start:

    $ getter = renpy.input("Change Getter...")

    if getter == "One":

        "Switch On!"

    elif getter == "Two":

        "Switch On!"

    elif getter == "Three":

        "Switch On!"

    else:

        "Comando incorrecto"


Dependiendo de lo que se coloque en el input la respuesta puede o no hacer algo (En el caso del bloque else será lo que sale si el input no está programado).

Digamos que queremos luego que el texto refleje que Getter se usó, ahí interpolamos texto, colocando en el dialogo la variable que queremos mostrar entre [], algo como…



"Zane está usando el Getter [getter]"


Si hubiéramos colocado «Three» el texto diría «Zane está usando el Getter Three». Es perfecto para colocar el nombre al protagonista.

Créanlo o no se pueden hacer operaciones matemáticas con strings, si colocáramos en el código:



$ nombre = "Nombre " + "Apellido"


Al colocar [nombre] nos saldría «Nombre Apellido», y similar a lo que se puede hacer con los numeros, si ya tienen un valor y es un string pueden sumarse las variables, si tuvieramos…



$ nombre = "Dana"

$ apellido = "Zane"

$ nc = nombre + " " + apellido


…al llamar [nc] nos saldría «Dana Zane» (Nótese la existencia de » » entre ambos)

Así que Zane va a pilotear el Shin Getter, pero necesita compañía. Sabemos que Dafoe está en la zona, pero supongamos que Undertaker también, y que Dana solo piloteará si Dafoe o Undertaker están con ella. Ahí colocamos:



if dafoe or taker:

    "Pilotea"


Si alguno de ellos (Cualquiera, no importa) es True entonces la condición se cumple. esto también sirve para que el ejemplo inicial de input de texto no sea sensible a mayusculas, pues podemos colocar:



init:

    $ getter = ""

label start:

    $ getter = renpy.input("Change Getter...")

    if getter == "One" or getter == "one":

        "Switch On!"

    elif getter == "Two" or getter == "two":

        "Switch On!"

    elif getter == "Three" or getter == "three":

        "Switch On!"

    else:

        "Comando incorrecto"


Pero el Getter solo revela su potencial cuando tiene a tres pilotos, así que imaginemos que Zane pilotea el Getter-1, Dafoe el Getter-2 y Taker el Getter-3, y que no piloteará a menos que ese sea el caso, ahí decimos:



if dafoe and taker:

    "Pilotea"


python12

[Heats empieza a sonar en el fondo]

Con el and la condición solo se cumplirá si ambos son True (En lugar de si al menos uno lo es). Esto nos permite trabajar rangos de números, digamos que queremos una puerta que solo se abra si la persona tiene entre 1 y 3 ahoges, entonces diríamos:



if AHOGES >0 and AHOGES <4:

    pass 


El juego verá primero si el valor es mayor a 0 y luego si es menor a 4, si alguna no se cumple, no pasa.

Para este punto ya saben como guardar diversos tipos de información. Saben como levantar flags, como hacer puntos de afecto e incluso como guardar el nombre del personaje o incluso como hacer una aventura de texto simple.

Un último detalle, si quieren que la opción de un menú solo salga si cierta condición se cumple, entonces escribimos:



menu:

"Opción 1" if dafoe:

    pass

"Opción 2":

    pass


Así, a menos que dafoe sea True solo aparecerá Opción 2.

Ya tenemos una visual novel que guarda cosas del jugador... pero seguimos sin imágenes, ese será el enfoque del siguiente tutorial.