🟡 Capítulo 7: Pulido profesional (hacer el juego divertido)

Tu juego ya funciona:

  • Hay movimiento
  • Hay enemigo
  • Hay vidas
  • Hay puntos
  • Hay GAME OVER

Pero ahora viene lo importante:

👉 hacer que el juego se sienta bien.

🎮 ¿Qué es el “pulido”?

Es lo que hace que un juego pase de ser “correcto” a ser divertido.

  • Respuestas rápidas
  • Feedback visual
  • Sensación de impacto

👉 Son pequeños detalles… pero muy importantes.

🧠 Idea clave

El jugador necesita saber SIEMPRE qué está pasando.

👉 si recibe daño → debe notarse

👉 si gana puntos → debe verse

💻 Mejora 1: Feedback al recibir daño

Ahora mismo solo pierde vida… pero casi no se nota.

Vamos a hacerlo visible:

tobi.setsize(130)
tobi.say("¡OUCH!", 0.3)
time.sleep(0.2)
tobi.setsize(100)

👉 Efecto: parece que el personaje “recibe el golpe”.

💻 Mejora 2: Aviso de poca vida

Cuando el jugador está a punto de perder:

if vidas == 1:
  tobi.say("¡CUIDADO!", 0.5)

👉 Genera tensión en el juego.

💻 Mejora 3: Puntos más claros

Hacemos el marcador más visible:

tobi.say("⭐ " + str(puntos), 0.5)

👉 Más visual, más estilo videojuego.

💻 Mejora 4: Enemigo más “vivo”

Hacemos que el enemigo cambie de tamaño:

enemy.setsize(110)
time.sleep(0.1)
enemy.setsize(100)

👉 Parece que “late” o está activo.

💻 Mejora 5: Mensaje final con puntuación

En el GAME OVER:

tobi.say("GAME OVER - Puntos: " + str(puntos), 3)

👉 Muy importante para el jugador.


🎮 Resultado final

  • El daño se siente
  • El jugador recibe avisos
  • El juego tiene estilo visual
  • La experiencia mejora muchísimo

👉 Esto es lo que hace que un juego sea divertido.


🚀 Reto Abutuber: Mejora tu juego

Añade a tu juego:

  • Efecto visual al recibir daño
  • Aviso cuando queda 1 vida
  • Marcador más bonito
  • Mensaje final con puntos

👉 Si no te sale, aquí tienes el código completo:

👀 Ver código completo
# SPRITE TOBI

import time

tobi = Sprite("Tobi")

vidas = 3
puntos = 0
game_over = False
puede_recibir_dano = True

while not game_over:

  if tobi.iskeypressed("w"):
    tobi.move(10)

  puntos = puntos + 1
  tobi.say("⭐ " + str(puntos), 0.5)

  if tobi.istouching("Enemy") and puede_recibir_dano:
    vidas = vidas - 1
    puede_recibir_dano = False

    tobi.setsize(130)
    tobi.say("¡OUCH!", 0.3)
    time.sleep(0.2)
    tobi.setsize(100)

    time.sleep(1)
    puede_recibir_dano = True

  if vidas == 1:
    tobi.say("¡CUIDADO!", 0.5)

  if vidas <= 0:
    game_over = True
    tobi.say("GAME OVER - Puntos: " + str(puntos), 3)

  time.sleep(0.2)

tobi.say("Pulsa R para reiniciar", 2)

while True:
  if tobi.iskeypressed("r"):
    break

# SPRITE ENEMY

import time

enemy = Sprite("Enemy")
tobi = Sprite("Tobi")

while True:

  if enemy.x < tobi.x:
    enemy.move(2)

  if enemy.x > tobi.x:
    enemy.move(-2)

  enemy.setsize(110)
  time.sleep(0.1)
  enemy.setsize(100)

💡 Consejo Abutuber: Los juegos profesionales no son difíciles… son agradables de jugar.