InicioLinuxMoviendo un Objeto Con el Mouse en Pygame

Moviendo un Objeto Con el Mouse en Pygame




Bueno hola a todos de nuevo, en esta ocasión les traigo la explicación de cómo mover un objeto con el mouse y detectar una colisión cuando presionamos un botón del mouse.

Código


class pelota( pygame.sprite.Sprite):
#--------------------------------------------------------------------------------
    def __init__(self):
    
        pygame.sprite.Sprite.__init__(self)
        self.image=cargar_img('Zero.png')
        self.rect = self.image.get_rect()
        self.rect.center = (200,200)
        self.velosidad=[10,11]

#--------------------------------------------------------------------------------
    def update(self):

        self.rect.move_ip((self.velosidad[0], self.velosidad[1]))
        self.control()
#--------------------------------------------------------------------------------
    def pintar(self,pantalla,pintar_rect):

        pantalla.blit(self.image,self.rect)
        if pintar_rect:
            pygame.draw.rect(pantalla,(255,0,0),self.rect)
            self.rect.center=(200,200)
#--------------------------------------------------------------------------------
    def control(self):

        if self.rect.left <=0 or self.rect.right>=640:
            self.velosidad[0]=-self.velosidad[0]
        if self.rect.top <=0 or self.rect.bottom>=480 :
            self.velosidad[1]=-self.velosidad[1]
#--------------------------------------------------------------------------------



Bueno en la clase pelota agregue la función pintar, que hace dos cosas muy importantes primero dibuja la imagen de nuestro personaje y segundo tiene una condicional que si es de valor positivo dibuja un cuadro de color rojo además de mover a nuestro personaje a una posición diferente

Código


class Cursor():
#--------------------------------------------------------------------------------
    def __init__(self,x,y):

        self.imagen=cargar_img('mira.png')
        self.rect=pygame.Rect((x-15,y-15),(5,5)) 
#--------------------------------------------------------------------------------
    def pintar(self,pantalla,x,y):

    self.rect.topleft=(x+5,y+5)
    pantalla.blit(self.imagen,(x-15,y-15))
    pygame.draw.rect(pantalla,(255,0,0),self.rect)
#--------------------------------------------------------------------------------


Bueno la clase cursor es la que mueve nuestra mira por la ventana, primero cargamos la imagen, luego y a qui viene el cambio definimos el rectángulo pero con dos variables x,y que nosotros enviaremos al momento de llamar esta función así la imagen de la mira cambiara de posición, los números que le restamos a estas variables, nos permite centrar nuestra imagen con el cursor y el rectángulo de la función rect, los valores (5,5) determinar el tamaño de este rectángulo si los aumentamos podemos ver como este cambia de tamaño.

La Función pintar lo que realiza es la ubicación de nuestro cursor, además de dibujar la imagen de la mira y por ultimo dibujar un rectángulo de color rojo.



x,y=pygame.mouse.get_pos()

Luego definimos la funcion main en la cual la línea que toma las coordenadas de nuestro mouse es x,y=pygame.mouse.get_pos() que nos devuelve la posición x,y de nuestro puntero


cursor1=Cursor(x,y)

Luego enviamos estas coordenadas a la clase cursor que las toma par ala ubicación de nuestra imagen.

if event.type ==pygame.MOUSEBUTTONDOWN:
    if cursor1.rect.colliderect(pelota1.rect):
        pintar_rect=True

Por último averiguamos la colisión entre nuestros objetos, primero le decimos que detecte si presionamos cualquiera de los botones de nuestro mouse, luego que defina su existe una colisión entre los dos objetos Sprite y que cambie el valor de la variable a verdadero

Realizado por

Mikey


Comunidad




Bueno a qui esta el archivo con todos los elementos del juego las imágenes y el sonido, apenas termine el manual lo publicare para que se entienda de una manera mejor el código, dentro de la comunidad esta el enlace para descargar el código
Datos archivados del Taringa! original
20puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

No hay comentarios nuevos todavía

Autor del Post

m
mikey8668🇦🇷
Usuario
Puntos0
Posts171
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.