Declarar variables y usar selecciones múltiples para influir en el final
¡Hola, creadores de novelas visuales! Bienvenidos a la sexta entrada de esta guía de Ren'Py en español. En el [post anterior] aprendimos a mejorar los diálogos con efectos visuales, formatos y líneas de tiempo. Hoy vamos a dar un paso importante: aprenderemos a **declarar variables**, usar **selecciones múltiples** y hacer que las decisiones de los jugadores influyan en el final de la historia. También veremos cómo algunas opciones pueden ser negativas y llevar a un "final malo". Al final, te dejaré algunos ejercicios para que practiques. ¡Empecemos!
#### 1. Configurar la escena base
Usaremos el fondo de la playa y los personajes Perrito y Gatita que ya conocemos. Si no tienes los archivos, revisa los posts anteriores para descargarlos.
1. Abre tu archivo `script.rpy` y asegúrate de tener los personajes declarados:
```
define perrito = Character("Perrito", color="#00B7EB")
define gatita = Character("Gatita", color="#FF69B4")
```
2. Configura la escena inicial:
```
label start:
scene bg playa
show perrito at left
show gatita at right
```
#### 2. Declarar una variable para el contador
Vamos a crear una variable que actúe como un "contador de amistad" entre Perrito y Gatita. Las decisiones del jugador sumarán o restarán puntos a este contador, y al final, el valor determinará si tienen un final bueno o malo.
1. Al inicio del `label start`, declara la variable:
```
$ amistad = 0
```
- `$` indica que estamos usando una variable en Ren'Py.
- `amistad` es el nombre de la variable, y la iniciamos en 0.
#### 3. Usar selecciones múltiples para modificar el contador
Vamos a crear un menú con opciones que afecten el contador de amistad. Algunas opciones sumarán puntos (positivas), y otras restarán puntos (negativas).
1. Añade un diálogo y un menú:
```
perrito "¡Hola, Gatita! ¿Quieres construir un castillo de arena conmigo?"
menu:
"¡Claro, suena divertido!":
$ amistad += 2
gatita "¡Genial! Vamos a hacerlo."
"No, prefiero tomar el sol.":
$ amistad -= 1
gatita "Hmph, qué aburrido..."
"¡No seas tonto, Perrito!":
$ amistad -= 3
gatita "¡Oye, no seas grosero!"
```
- `+=` suma puntos a la variable `amistad`.
- `-=` resta puntos.
- En este ejemplo, ser amable suma 2 puntos, ignorar a Perrito resta 1 punto, y ser grosero resta 3 puntos.
2. Añade un segundo menú para más decisiones:
```
perrito "¿Trajiste algo para compartir? Yo tengo un helado."
menu:
"Sí, tengo unas galletas para compartir.":
$ amistad += 2
gatita "¡Qué rico! Gracias por compartir."
"No, no traje nada.":
$ amistad -= 1
gatita "Oh... Bueno, está bien."
```
#### 4. Usar condicionales para determinar el final
Ahora que el jugador ha tomado decisiones, usaremos el valor de `amistad` para decidir el final. Vamos a definir tres posibles finales: bueno, neutral y malo.
1. Añade condicionales basados en el valor de `amistad`:
```
if amistad >= 3:
perrito "¡Fue un día increíble, Gatita!"
gatita "Sí, me la pasé muy bien contigo. ¡Hagámoslo de nuevo!"
"Final bueno: Perrito y Gatita se hicieron grandes amigos."
elif amistad > 0:
perrito "Bueno, estuvo bien, ¿no?"
gatita "Sí, supongo... Pero podría haber sido mejor."
"Final neutral: Perrito y Gatita pasaron un día decente."
else:
perrito "Creo que no nos llevamos muy bien..."
gatita "Hmph, no quiero volver a la playa contigo."
"Final malo: Perrito y Gatita no se hicieron amigos."
```
- `if amistad >= 3`: Si la amistad es 3 o más, obtienen el final bueno.
- `elif amistad > 0`: Si la amistad es mayor que 0 pero menor que 3, obtienen el final neutral.
- `else`: Si la amistad es 0 o negativa, obtienen el final malo.
#### 5. Cerrar la escena
Termina la escena para regresar al menú principal:
```
return
```
#### 6. Código completo
Aquí está el código completo de la escena:
```
define perrito = Character("Perrito", color="#00B7EB")
define gatita = Character("Gatita", color="#FF69B4")
label start:
scene bg playa
show perrito at left
show gatita at right
$ amistad = 0
perrito "¡Hola, Gatita! ¿Quieres construir un castillo de arena conmigo?"
menu:
"¡Claro, suena divertido!":
$ amistad += 2
gatita "¡Genial! Vamos a hacerlo."
"No, prefiero tomar el sol.":
$ amistad -= 1
gatita "Hmph, qué aburrido..."
"¡No seas tonto, Perrito!":
$ amistad -= 3
gatita "¡Oye, no seas grosero!"
perrito "¿Trajiste algo para compartir? Yo tengo un helado."
menu:
"Sí, tengo unas galletas para compartir.":
$ amistad += 2
gatita "¡Qué rico! Gracias por compartir."
"No, no traje nada.":
$ amistad -= 1
gatita "Oh... Bueno, está bien."
if amistad >= 3:
perrito "¡Fue un día increíble, Gatita!"
gatita "Sí, me la pasé muy bien contigo. ¡Hagámoslo de nuevo!"
"Final bueno: Perrito y Gatita se hicieron grandes amigos."
elif amistad > 0:
perrito "Bueno, estuvo bien, ¿no?"
gatita "Sí, supongo... Pero podría haber sido mejor."
"Final neutral: Perrito y Gatita pasaron un día decente."
else:
perrito "Creo que no nos llevamos muy bien..."
gatita "Hmph, no quiero volver a la playa contigo."
"Final malo: Perrito y Gatita no se hicieron amigos."
return
```
#### 7. Ejercicios para practicar
Aquí tienes algunos ejercicios para que practiques lo que aprendiste:
1. **Cambia los valores del contador**:
- Modifica los puntos que se suman o restan en cada opción. Por ejemplo, haz que ser grosero reste 5 puntos en lugar de 3. ¿Cómo cambia el final?
2. **Añade una tercera decisión**:
- Agrega otro menú con una nueva pregunta (p. ej., "¿Vamos a nadar?") y tres opciones que afecten el contador de `amistad`.
3. **Crea más finales**:
- Añade un nuevo rango para un "final súper bueno" si `amistad` es mayor o igual a 5. Escribe un diálogo especial para este final.
4. **Usa una variable diferente**:
- Crea una nueva variable (p. ej., `$ diversion = 0`) y haz que las decisiones afecten esta variable en lugar de `amistad`. Ajusta los finales según el valor de `diversion`.
#### 8. ¡Tu turno!
Copia este código en tu proyecto de Ren'Py y prueba las diferentes opciones. ¿Qué final obtuviste? ¿Lograste un final bueno, neutral o malo? Intenta los ejercicios y comparte tus resultados en los comentarios. ¡Nos leemos el 6 de abril!
Comentarios
Publicar un comentario