Full width home advertisement

Primeros pasos

Algunos de nuestros cursos

Post Page Advertisement [Top]

Esta función nos permite comprobar la colisión entre un punto y un rectángulo, retornará un bool que será True si el punto está dentro, False en caso contrario.

Rect.collidepoint (x, y)
Rect.collidepoint ((x, y))

Nos será muy útil en nuestros juegos, conforme lo utilices verás los diversos aspectos en los que te servirá, por el momento vamos a analizarlo con un sencillo ejemplo que nos va a permitir 'arrastrar' un sprite por nuestra ventana. Esto lo conseguimos mirando en todo momento el estado y la posición del mouse, si se está haciendo clic, y ese clic se está haciendo sobre nuestro sprite, le asignamos la posición del cursor del mouse al centro de nuestro objeto, haciendo que este se 'desplace' hacia este en todo momento que se esté haciendo clic.


Esta manera de arrastrar un sprite tiene el inconveniente de que si se arrastra muy rápido el punto ya queda fuera del rect y 'se suelta', pero sirve perfectamente para ilustrar el uso de la función que estamos analizando.

Para ello utilizaremos otras funciones como:

pygame.mouse.get_pressed ()
pygame.mouse.get_pos ()
pygame.event.get ()

Ejemplo

#   La clase objeto que deriva de pygame.sprite.Sprite
#   Utilizaremos su propiedad rect 
#   para utilizar como Rectángulo

class objeto(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("imagen.jpg").convert()
        
        #   Este es el rect que         
        #   utilizaremos con rectángulo
        self.rect = self.image.get_rect()

#   Y nuestro main quedaría

def main():
    screen = pygame.display.set_mode((500, 500))
    pygame.display.set_caption("collidepoint - ANCODI VideoGames")
    
    obj = objeto()
    
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        
        #   Miramos el estado de
                                      #   los botones del mouse
        mouse = pygame.mouse.get_pressed()
        
        #   Si el botón izquierdo
                                      #   del mouse está presionado ...
        if mouse[0]: 
            #   Guardamos la actual
            #   posición del puntero del mouse
            pos = pygame.mouse.get_pos()
            
            #   Utilizamos la función
            #   collidepoint para             #   detectar si el puntero
            #   del mouse está dentro del 
            #   rect del objeto
            #   En otras palabras, mira si
            #   se está haciendo clic
            #   sobre el objeto
            if obj.rect.collidepoint(pos):
                #   Ubicamos el centro del
                #   objeto en la posición del cursor
                #   Con esto conseguimos el
                #   efecto de 'arrastrar' que queremos
                obj.rect.center = pos
        
        #   Un bello fondo azul
        screen.fill((179, 245, 255))
        #   Un grupo con los objetos de la escena
        #   Completamente innecesario en este ejemplo
        todos = pygame.sprite.Group(obj)
        todos.draw(screen)
        pygame.display.flip()




El anterior gif refleja el resultado final, no se ve el cursor en la captura pero ahí está moviendo al personaje. Este es solo un ejemplo de los múltiples usos de esta función.

No hay comentarios:

Publicar un comentario

Bottom Ad [Post Page]

| Designed by Colorlib