Uso de diccionarios en Ren'Py
¡Hola, creadores de novelas visuales! Bienvenidos a la decimoséptima entrada de esta guía de Ren'Py en español. En el [post anterior] creamos un proyecto final básico y aprendimos a organizarlo en múltiples archivos `.rpy`. Hoy vamos a dar un paso hacia temas intermedios explorando los **diccionarios** en Ren'Py. Aprenderemos qué son, cómo usarlos y por qué son útiles para manejar datos en tu novela visual. ¡Empecemos!
1. ¿Qué es un diccionario y para qué sirve?
Un diccionario en Ren'Py (y en Python) es una estructura de datos que almacena información en pares **clave-valor**. Piensa en un diccionario como una libreta de direcciones: cada "clave" (como el nombre de una persona) está asociada a un "valor" (como su número de teléfono).
**¿Por qué usar diccionarios en Ren'Py?**
- **Organización**: Puedes almacenar datos relacionados en un solo lugar (por ejemplo, las estadísticas de un personaje).
- **Flexibilidad**: Puedes acceder y modificar los datos fácilmente durante el juego.
- **Escalabilidad**: Son ideales para proyectos más grandes, como manejar relaciones entre personajes, inventarios o elecciones complejas.
2. Crear un diccionario en Ren'Py
Vamos a crear un diccionario para almacenar las estadísticas de Perrito y Gatita, como su energía y felicidad.
1. **Definir un diccionario**:
- Usa la sintaxis de Python `{clave: valor}` para crear un diccionario.
- Ejemplo:
```
define perrito_stats = {"energia": 50, "felicidad": 70}
define gatita_stats = {"energia": 60, "felicidad": 40}
```
- Aquí, `perrito_stats` es un diccionario con dos claves (`energia` y `felicidad`) y sus valores.
2. **Acceder a los valores**:
- Usa la clave para obtener el valor asociado. Por ejemplo:
```
$ energia_perrito = perrito_stats["energia"]
```
- Esto guarda el valor de `energia` (50) en la variable `energia_perrito`.
3. **Modificar valores**:
- Puedes cambiar los valores del diccionario en cualquier momento:
```
$ perrito_stats["energia"] = perrito_stats["energia"] + 10
```
- Esto aumenta la energía de Perrito en 10 (de 50 a 60).
3. Usar diccionarios en una escena
Vamos a crear una escena donde Perrito y Gatita juegan en la playa, y sus estadísticas cambian según las elecciones del jugador.
1. **Configurar la escena**:
```
define perrito = Character("Perrito", color="#00B7EB")
define gatita = Character("Gatita", color="#FF69B4")
# Diccionarios para las estadísticas
define perrito_stats = {"energia": 50, "felicidad": 70}
define gatita_stats = {"energia": 60, "felicidad": 40}
label start:
scene bg playa with fade
show perrito at left
show gatita at right
narrator "Perrito y Gatita están en la playa. Vamos a ver cómo están hoy."
perrito "Mi energía está en [perrito_stats[energia]], y mi felicidad en [perrito_stats[felicidad]]."
gatita "Mi energía está en [gatita_stats[energia]], y mi felicidad en [gatita_stats[felicidad]]."
menu:
"Jugar a correr por la playa.":
jump correr
"Descansar bajo una sombrilla.":
jump descansar
```
2. **Escena de correr**:
```
label correr:
narrator "Perrito y Gatita corren por la playa, gastando energía pero aumentando su felicidad."
$ perrito_stats["energia"] -= 20
$ perrito_stats["felicidad"] += 10
$ gatita_stats["energia"] -= 20
$ gatita_stats["felicidad"] += 10
perrito "¡Qué divertido! Ahora mi energía está en [perrito_stats[energia]], y mi felicidad en [perrito_stats[felicidad]]."
gatita "¡Sí, me siento mejor! Mi energía está en [gatita_stats[energia]], y mi felicidad en [gatita_stats[felicidad]]."
jump final
```
3. **Escena de descansar**:
```
label descansar:
narrator "Perrito y Gatita descansan bajo una sombrilla, recuperando energía pero sin cambiar su felicidad."
$ perrito_stats["energia"] += 10
$ gatita_stats["energia"] += 10
perrito "Qué relajante. Ahora mi energía está en [perrito_stats[energia]]."
gatita "Sí, me siento más descansada. Mi energía está en [gatita_stats[energia]]."
jump final
```
4. **Final**:
```
label final:
narrator "Perrito y Gatita terminan su día en la playa."
perrito "¡Fue un día genial!"
gatita "Sí, estoy lista para volver mañana."
return
```
4. Código completo
Aquí está el código completo con los diccionarios:
```
define perrito = Character("Perrito", color="#00B7EB")
define gatita = Character("Gatita", color="#FF69B4")
define perrito_stats = {"energia": 50, "felicidad": 70}
define gatita_stats = {"energia": 60, "felicidad": 40}
label start:
scene bg playa with fade
show perrito at left
show gatita at right
narrator "Perrito y Gatita están en la playa. Vamos a ver cómo están hoy."
perrito "Mi energía está en [perrito_stats[energia]], y mi felicidad en [perrito_stats[felicidad]]."
gatita "Mi energía está en [gatita_stats[energia]], y mi felicidad en [gatita_stats[felicidad]]."
menu:
"Jugar a correr por la playa.":
jump correr
"Descansar bajo una sombrilla.":
jump descansar
label correr:
narrator "Perrito y Gatita corren por la playa, gastando energía pero aumentando su felicidad."
$ perrito_stats["energia"] -= 20
$ perrito_stats["felicidad"] += 10
$ gatita_stats["energia"] -= 20
$ gatita_stats["felicidad"] += 10
perrito "¡Qué divertido! Ahora mi energía está en [perrito_stats[energia]], y mi felicidad en [perrito_stats[felicidad]]."
gatita "¡Sí, me siento mejor! Mi energía está en [gatita_stats[energia]], y mi felicidad en [gatita_stats[felicidad]]."
jump final
label descansar:
narrator "Perrito y Gatita descansan bajo una sombrilla, recuperando energía pero sin cambiar su felicidad."
$ perrito_stats["energia"] += 10
$ gatita_stats["energia"] += 10
perrito "Qué relajante. Ahora mi energía está en [perrito_stats[energia]]."
gatita "Sí, me siento más descansada. Mi energía está en [gatita_stats[energia]]."
jump final
label final:
narrator "Perrito y Gatita terminan su día en la playa."
perrito "¡Fue un día genial!"
gatita "Sí, estoy lista para volver mañana."
return
```
5. Más formas de usar diccionarios
Los diccionarios tienen muchas aplicaciones en Ren'Py. Aquí algunos ejemplos:
- **Relaciones entre personajes**: Usa un diccionario para rastrear la afinidad entre personajes (por ejemplo, `relaciones = {"perrito_gatita": 50}`).
- **Inventarios**: Almacena los objetos del jugador (por ejemplo, `inventario = {"concha": 3, "frisbee": 1}`).
- **Condiciones**: Usa los valores del diccionario para tomar decisiones (por ejemplo, `if perrito_stats["felicidad"] > 50:`).
6. Consejos para usar diccionarios
- **Claves únicas**: Asegúrate de que las claves sean únicas dentro de cada diccionario (por ejemplo, no uses dos veces "energia").
- **Valores iniciales**: Define valores iniciales razonables para evitar errores (por ejemplo, no dejes que la energía baje de 0).
- **Prueba cambios**: Usa diálogos para mostrar los valores del diccionario (como `[perrito_stats[energia]]`) y verifica que los cambios se apliquen correctamente.
7. Ejercicios para practicar
Aquí tienes algunos ejercicios para que practiques el uso de diccionarios:
1. **Añade una nueva estadística**:
- Agrega una estadística de "hambre" a los diccionarios de Perrito y Gatita, y cámbiala según las elecciones (por ejemplo, correr aumenta el hambre, descansar la reduce).
2. **Usa condiciones**:
- Añade una condición que verifique si la felicidad de Gatita es mayor a 50, y si es así, haz que diga algo especial (por ejemplo, "¡Estoy muy feliz hoy!").
3. **Crea un inventario**:
- Crea un diccionario para un inventario (por ejemplo, `inventario = {"concha": 0, "frisbee": 0}`) y haz que el jugador gane un objeto según la elección (por ejemplo, buscar conchas aumenta `inventario["concha"]`).
8. ¡Tu turno!
Copia este código en tu proyecto de Ren'Py y prueba los diccionarios. ¿Lograste cambiar las estadísticas de Perrito y Gatita según las elecciones? ¿Entendiste cómo acceder y modificar los valores de un diccionario? Intenta los ejercicios y comparte tus resultados en los comentarios. En la próxima entrada, seguiremos explorando temas intermedios para que mejores tus proyectos. ¡Nos leemos el 17 de abril!
Comentarios
Publicar un comentario