Descripción - EdwinESM/Codec-de-Audio GitHub Wiki

Descripción del código

image

  • Primero se importan las librerias necesarias para gráficos, sonido, y manejo de errores, todas estan vienen de la libreria principal "Pygame".

image

  • Se inicia el sistema de sonido y en las siguientes dos líneas hay advertencias en caso de que no se puede usar fuentes o audio.

image

  • main_dir: es la ruta donde está este script.
  • data_dir: es la carpeta donde están imágenes y sonidos.

image

  • Esta función carga una imagen desde una ruta específica.

Si colorkey = -1, hace que el fondo de la imagen sea transparente (set_colorkey para manejar transparencia).

image

  • Representa un sprite controlado por el mouse (Puede golpear).
  • Un sprite es un objeto que representa un personaje, enemigo, objeto o cualquier elemento visible que tiene comportamiento propio.
  • Sigue el ratón (update()).
  • Tiene una animación de golpe (punch()) y vuelve a la posición original (unpunch()).

image

  • Sprite que camina de lado a lado y gira cuando lo golpeas.
  • En el método init, se carga la imagen del mapache (chimp.bmp) y se coloca en la esquina superior izquierda de la pantalla, después se define la velocidad de movimiento horizontal (self.move = 9) y una bandera dizzy que indica si el mono está girando (cuando recibe un golpe).
  • En el método update(), se revisa si el mapache está mareado (self.dizzy > 0). Si es así, se llama al método privado _spin() que hace girar la imagen. Si no, se llama a _walk() para mover al mono horizontalmente. *El método _walk() mueve al mapache de izquierda a derecha. Si choca con los bordes de la pantalla, cambia de dirección y voltea la imagen horizontalmente usando pygame.transform.flip().
  • El método _spin() hace girar la imagen del mapache como si estuviera mareado. Usa pygame.transform.rotate() para rotar la imagen paso a paso hasta completar un giro completo de 360°. Después, vuelve a su estado normal.
  • El método punched() se activa cuando el mapache recibe un golpe (cuando el puño lo toca). Solo si no está ya mareado, empieza la animación de giro (self.dizzy = 1) y guarda la imagen original para poder restaurarla más tarde.

image

  • En la línea pygame.init() se inicializan todos los módulos de Pygame necesarios para correr el juego (gráficos, sonido, etc.).
  • Luego, se configura la ventana principal con pygame.display.set_mode((468, 60)) y se oculta el cursor del mouse con pygame.mouse.set_visible(0). También se le asigna un título con pygame.display.set_caption().
  • Se crea una superficie de fondo (una "imagen" vacía del tamaño de la ventana) y se llena con color blanco usando background.fill((250, 250, 250)).
  • Luego, se copia ese fondo sobre la ventana con screen.blit(background, (0, 0)) y se actualiza la pantalla con pygame.display.flip().
  • Se crea un reloj con pygame.time.Clock() para controlar la velocidad del juego (en cuadros por segundo), y se cargan los sonidos whiff.wav (fallo) y punch.wav (golpe).
  • Se instancian los objetos del juego:

chimp = Chimp() crea el mapache, fist = Fist() crea el puño, y ambos se agrupan en allsprites para manejarse como conjunto de sprites.

image

  • Se ejecuta continuamente mientras going sea True.
  • Controla la velocidad del juego con clock.tick(60) (60 FPS).
  • Escucha eventos del usuario:

Cierra el juego si se presiona ESC o se cierra la ventana. Si se hace clic:

Si el puño golpea al mapache → se reproduce el sonido de golpe y el mapache gira. Si no lo golpea → se reproduce el sonido de fallo. Al soltar el clic, el puño regresa a su posición.

  • Actualiza los movimientos del mapache y el puño (allsprites.update()).
  • Redibuja la pantalla con el fondo y los sprites actualizados.
  • Cuando el usuario cierra la ventana o presiona Escape, se sale del bucle y se ejecuta pygame.quit() para cerrar correctamente todos los módulos de Pygame.

image

  • Cuando el script se ejecuta llama a la función main.