🟡 Capítulo 5: Sistema de puntos real (con marcador en pantalla)
Ya tienes un juego donde:
- El enemigo persigue
- El jugador pierde vidas
Pero falta algo clave:
👉 ¿Para qué juega el jugador?
🎮 Objetivo del capítulo
Vamos a añadir:
- Un sistema de puntos
- Un marcador en pantalla
- Recompensa por sobrevivir
👉 Esto convierte tu proyecto en un juego de verdad.
🧠 Idea clave
En videojuegos, los puntos suelen funcionar así:
- Ganas puntos con el tiempo
- O por acciones (moverse, sobrevivir, recoger objetos)
👉 Nosotros usaremos puntos por supervivencia.
💻 Paso 1: Crear los puntos
En el sprite Tobi:
👉 Empezamos con 0 puntos.
💻 Paso 2: Sumar puntos con el tiempo
Añadimos esto dentro del while True:
👉 Cuanto más sobrevives, más puntos tienes.
💻 Paso 3: Mostrar puntos en pantalla
Usamos say() para mostrar el marcador:
👉 Convertimos el número a texto con str().
⚠️ Problema importante
Si lo haces así, pasará esto:
- Los puntos suben demasiado rápido
- El texto parpadea constantemente
👉 Necesitamos controlar la velocidad.
💡 Solución: controlar el tiempo
Añadimos una pequeña pausa:
time.sleep(0.2)
👉 Ahora el marcador es más estable.
🎮 Resultado final
- El jugador gana puntos al sobrevivir
- Puede ver su puntuación
- El juego tiene objetivo
👉 Ya no es solo sobrevivir… ahora compites.
⚡ Mejora PRO
Puedes hacer que los puntos suban más lento o más rápido:
- sleep(0.5) → más lento
- sleep(0.1) → más rápido
👉 Ajusta la dificultad del juego.
🚀 Reto Abutuber: Supervivencia con puntuación
Mejora tu juego:
- Tobi gana puntos con el tiempo
- Los puntos se muestran en pantalla
- El enemigo sigue persiguiendo
- El jugador pierde vidas
Extra: Intenta sobrevivir el mayor tiempo posible.
👉 Si no te sale, aquí tienes el código completo:
👀 Ver código completo
import time
tobi = Sprite("Tobi")
vidas = 3
puntos = 0
puede_recibir_dano = True
while True:
if tobi.iskeypressed("w"):
tobi.move(10)
puntos = puntos + 1
tobi.say("Puntos: " + str(puntos), 0.5)
if tobi.istouching("Enemy") and puede_recibir_dano:
vidas = vidas - 1
puede_recibir_dano = False
tobi.say("¡Golpe!", 0.5)
time.sleep(1)
puede_recibir_dano = True
time.sleep(0.2)
# SPRITE ENEMY
enemy = Sprite("Enemy")
tobi = Sprite("Tobi")
while True:
if enemy.x < tobi.x:
enemy.move(2)
if enemy.x > tobi.x:
enemy.move(-2)
💡 Consejo Abutuber: Un juego sin puntos no tiene objetivo. Un juego con puntos crea reto y motivación.