Ir al contenido principal

Entradas

Mostrando entradas de 2025

Python + Pygame (XXXII): Tutorial - Colisiones precisas (II)

En el post anterior puse un script para poder apreciar la diferencia de precisión existente entre las colisiones basadas en los rectángulos delimitadores de los sprites y aquellas basadas en las máscaras de sus formas, y en éste voy a poner un script de ejemplo de la utilización de la colisión por máscaras en un videojuego 2D, para lo que tomo otra vez como referencia uno de mis video juegos tipo arcade y género plataformas preferido, además de ser uno de los más populares de todos los tiempos: 'Donkey Kong'. Para este script de ejemplo parto del que incluí en la última entrada del tutorial correspondiente a 'Salto de personajes' . El script final, sobre el que, tras leer el  post anterior ,  no creo que haya que realizar explicaciones adicionales a los comentarios que en él figuran, es el siguiente: #!/usr/bin/env python # -*- coding: utf-8 -*- # # COLISIONES PRECISAS (MÁSCARAS): # # Colisiones entre sprites utilizando el método pygame.sprite.collide_mask(). # # Autor...

Python + Pygame (XXXI): Tutorial - Colisiones precisas (I)

En este blog ya he puesto algunos tutoriales sobre aspectos que posiblemente tengamos que implementar a la hora de programar un videojuego (arrastrar objetos mediante el ratón, el salto de personajes, etc.), y en este post pongo un pequeño tutorial respecto a quizá el aspecto más frecuente con el que nos encontraremos: las colisiones entre sprites, y, en concreto, me voy a referir a las colisiones precisas entre éstos. En la mayoría de los videojuegos nos bastará con las colisiones entre los rectángulos que delimitan los sprites, sin mayor precisión, pero en ocasiones necesitaremos la detección de las colisiones respecto a la forma del sprite, es decir, necesitaremos una mayor precisión en las mismas. En este tutorial voy a tomar como referencia dos de los videojuegos tipo arcade más famosos de todos los tiempos: 'Space invaders' y, al igual que en el último tutorial, 'Donkey Kong'. Me explico: en muchos juegos la forma de los sprites encaja o difiere poco de una forma ...

Python + Pygame (XXX): Tutorial - Salto de personajes (III)

En los posts anteriores ( 'Python + Pygame (XXVIII): Tutorial - Salto de personajes (I)' y 'Python + Pygame (XXIX): Tutorial - Salto de personajes (II)' ) puse sendos scripts para implementar el salto de un personaje en un videojuego 2D; en el primero de ellos me centré única y exclusivamente en el salto, mientras que en el segundo completé el primero con algunos aspectos adicionales (animación del personaje al andar y saltar, algunos sonidos y detección de la colisión entre el personaje y los tramos de la plataforma utilizando sprites). Pues bien, en éste completo el script para considerar la implementación del movimiento del personaje cuando la plataforma no es perfectamente horizontal, como es el caso, por ejemplo, del juego que he tomado como referencia, 'Donkey Kong', ya que el cafre del gorila, en la pantalla de presentación y para dificultarle a 'Jumpman' (Mario) la existencia, se pone a saltar sobre la plataforma como un poseso y deforma los tra...

Python + Pygame (XXIX): Tutorial - Salto de personajes (II)

En el anterior post puse un script con un código que puede servir (se puede hacer de otras muchas formas - utilizando la función seno, etc.) para implementar el salto del personaje de un videojuego 2D,  y en éste lo completo con algunos aspectos adicionales (animación del personaje al andar y saltar, se incluyen algunos sonidos y detección de la colisión entre el personaje y los tramos de la plataforma utilizando sprites para estos últimos). El código incluido y modificado más relevante es el siguiente (al igual que en el   anterior post , los comentarios en el código hacen que éste sea autoexplicativo, por lo que me limitaré a realizar sólo nuevos comentarios que puedan aportar algo a la explicación): 1.- Inicializar determinados aspectos: # Cargar archivos de sonidos. sonido_andar = pygame.mixer.Sound( 'recursos/sonidos/andar.wav') sonido_saltar = pygame.mixer.Sound( 'recursos/sonidos/sal...