Si queremos crear un «cuadro» en el cual meter cosas usamos el comando frame.
screen cosa:
frame:
xpos 0.2
ypos 0
####El resto de las cosas va acá
La ventaja del comando frame es que no solo se le puede proveer de un fondo especifico usando estilos (Luego veremos sobre ellos), también busca de organizar las cosas dentro de el (Como una especie de «caja» si se quiere). Al comando frame (Y a cualquier comando que dependa de crear una «caja» como por ejemplo button sin imagenes o textbutton) se le puede dar un valor minimo y un valor máximo. Acá un ejemplo.
screen cosa:
frame:
xpos 0.2
ypos 0
xminimum ##Inserte tamaño
xmaximum ##Inserte tamaño
yminimum ##Inserte tamaño
ymaximum ##Inserte tamaño
####El resto de las cosas va acá
x/yminimum indican el tamaño mínimo que tendrá el frame, si decimos xminimum 200 entonces sin importar que tan delgados sean los elementos del frame, el tamaño no bajará de 200 de ancho. x/ymaximum es el contrario, indicando el limite de tamaño del cual no debe pasar. Por supuesto, siempre pueden darle el mismo valor a ambos para darle un tamaño fijo. Este comando, como ya dije, también puede usarse con button.
Existen otros métodos para organizar elementos (que sirven tanto dentro como fuera del frame). Esto son:
screen cosa:
vbox:
xpos 0
ypos 0.5
##Elementos van acá
Si crean una serie de elementos dentro de un screen y no le dan una posición especifica estos se apilarán uno sobre el otro… a menos que usen este comando.
Metiendo todos los elementos dentro de un vbox pueden limitarse solo a darle una posición al vbox y meter todos los elementos en el. Los elementos se organizarán verticalmente, si colocan 5 botones los botones se alinearan uno debajo del otro. También posee una contraparte llamada hbox que es lo mismo pero horizontalmente.
screen cosa:
vbox:
xpos 0
ypos 0.5
grid 2 3:
##Elementos van acá
El comando grid es más conveniente. Básicamente se le da un numero de columnas y un numero de filas y el organizará los elementos en forma de cuadricula. La conveniencia se detiene en que todos los «cuadros» en la cuadricula deben de llenarse o el programa lanzará error (Si se le dice que es una cuadricula 5×2 deben de proveersele 10 elementos o lanzará error). Estos «cuadros» se llenan de izquierda a derecha y de arriba a abajo.
No hay limite en cuanto a que puedes meter dentro de que. Puedes tener un frame que tiene dentro un vbox el cual a su vez tiene un hbox donde cada elemento es un grid. Sin embargo, debe notarse que si algo está dentro de una de estas «cajas» y se le da una posición, esa posición será relativa a dentro de la caja misma.
screen cosa:
frame:
xpos 100
vbox:
xpos 0
ypos 0.5
En este ejemplo el frame está 100 pixeles a la derecha, el vbox dentro de el estará en toda la mitad vertical del frame mismo.
screen cosa:
frame:
xpos 100
vbox:
xpos 0
ypos 0.5
text "Stuff" xpos 10
En este ejemplo el vbox está fuera del frame así que está en toda la mitad vertical de la pantalla. Sin embargo, el texto dentro de el estará 10 pixeles a la derecha de la posición del vbox (si el vbox estuviera 100 pixeles a la derecha el texto estaría a 110 pues le suma 10 a los 100 del frame).
Con los screens se puede hacer mucho más. Podemos tener barras que se llenan, ventanas con las cuales puedes hacer scrolling con el ratón y mucho más… pero esto es algo que se aprende mejor con ejemplos, así que ya lo veremos luego.
¡Nuestra Visual Novel ya está hecha! pero todavía usa los estilos por defecto de Ren’Py ¿Y si queremos añadirle nuestros elementos visuales propios? eso lo veremos en el próximo tutorial.