en Ren'Py

Tutorial de Ren’Py – Screens

¡Extra!

Funciones

Si son como yo se habrán topado en algún punto con un momento donde deben usar una serie de comandos digamos que tenemos este bloque que debe repetirse en diversas ocasiones:



$ coso_1 = 0
$ coso_2 = True
$ coso_3 = "Yesh"
$ coso_4 += 1
$ coso_5 -= 2


Copiar y pegar puede resultar latoso. Por suerte, Python tiene algo que permite simplificar todo eso, solo hay que crear una función. Así que hacemos esto:



init python:

    def latoso():

        store.coso_1 = 0
        store.coso_2 = True
        store.coso_3 = "Yesh"
        store.coso_4 += 1
        store.coso_5 -= 2


Primero debemos decirle a Ren’Py que vamos a usar python puro con un init python (También se puede abrir un bloque python dentro de un init cualquiera). ahí le decimos que cree (usando el comando def) una función llamada latoso (Y como no toma ningún parámetro solo la dejamos con el paréntesis vacío). Al ejecutarse va a realizar todas las operaciones con variables que no queremos copiar y pegar a cada rato (se le añade store. para que cambie una variable que ya declaramos en un bloque init previamente). así, cuando en el juego digamos…



$ latoso()


Ejecutará todo lo que le pusimos dentro a la función, cambiando el trabajo de copiar y pegar por solo recordar un nombre.

Esto también tiene la ventaja de que podemos agregarselo a las acciones de un botón en un screen, por lo cual podemos decir:



screen cosa:

    text "Eso" action latoso()


Otra ventaja es que el valor puede no ser el mismo en cada ocasión. Digamos que queremos que el valor de coso_1 sea distinto en cada ocasión pero que el resto sea igual. Para eso le colocamos algo dentro del paréntesis.



init python:

    def latoso(j):

        store.coso_1 = j
        store.coso_2 = True
        store.coso_3 = "Yesh"
        store.coso_4 += 1
        store.coso_5 -= 2


Con este cambio, si en algún otro lado decimos



$ latoso(10)


Entonces al pasar por esa función coso_1 será igual a 10 pues al primer valor (La j que también estaba en coso_1 =) se le asignó ese valor pero el resto de las variables serán iguales.

Digamos que queremos algo que determine con una operación matematica el HP y MP de un personaje.



init:

    python:

        def stats(a,b):

            store.hp=a*100
            store.mp=b*10 


(Esto es solo para mostrar el otro modo de abrir un init python, cualquiera es válido)

Si luego decimos



$ stats(2,5)


Entonces el primer valor (usado en hp) será multiplicado por 100 y guardado en la variable hp mientras que el segundo valor (asociado a la b en mp) será multiplicado por 10 y guardado en la variable mp. en este caso hp terminará siendo 200 y mp 50.

Hay más cosas que se pueden hacer con funciones, podemos por ejemplo hacer que los parámetros de una variable puedan interactuar con los parámetros de otra si las tenemos en la misma categoría… pero dejaré eso para otra ocasión.