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