He estado escribiendo una función de prueba para aprender un ratón, haga ‘clic’ a la acción en una pygame.rect resultará en una respuesta.

Hasta ahora:

def test():
    pygame.init()
    screen = pygame.display.set_mode((770,430))
    pygame.mouse.set_visible(1)
    background = pygame.Surface(screen.get_size())
    background = background.convert()
    background.fill((250,250,250))
    screen.blit(background, (0,0))
    pygame.display.flip()

    ## set-up screen in these lines above ##

    button = pygame.image.load('Pictures/cards/stand.png').convert_alpha()
    screen.blit(button,(300,200))
    pygame.display.flip()

    ## does button need to be 'pygame.sprite.Sprite for this? ##
    ## I use 'get_rect() ##
    button = button.get_rect()

    ## loop to check for mouse action and its position ##
    while True:
        for event in pygame.event.get():
            if event.type == pygame.mouse.get_pressed():
                ## if mouse is pressed get position of cursor ##
                pos = pygame.mouse.get_pos()
                ## check if cursor is on button ##
                if button.collidepoint(pos):
                    ## exit ##
                    return

Me han llegado a través de las páginas en google donde la gente está usando o se recomienda el uso de un pygame.sprite.Sprite clase para las imágenes, y estoy pensando que esta es donde está mi problema. He comprobado el pygames docs y no hay mucha cohesión entre los métodos, en mi humilde opinión. Obviamente estoy perdiendo algo simple pero, pensé get_rect tendría que hacer una imagen en pygames ser capaz de comprobar si la posición del ratón está sobre ella cuando se presiona?

Editar:
Estoy pensando que tengo que llamar a la pygame.sprite.Sprite método para hacer que las imágenes/rects interactivo?

OriginalEl autor tijko | 2012-08-27

2 Comentarios

  1. 11

    Bueno, si alguien está interesado o tiene un problema similar, esto es lo que necesitaba para cambiar.

    Primero apagar el quitar:

    button = button.get_rect()

    A continuación:

    screen.blit(button, (300, 200))

    Debe ser:

    b = screen.blit(button, (300, 200))

    Esto para crear una Rect de la zona de donde se encuentra el botón en la pantalla.

    A:

    if event.type == pygame.mouse.get_pressed()

    He cambiado a:

    if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:

    La pygame.mouse.get_pressed() obtiene el estado de los tres botones del ratón (MOUSEBUTTONDOWN, MOUSEBUTTONUP, o MOUSEMOTION). Yo también necesitaba añadir en event.button == 1 para especificar que esta era la » izquierda del ratón en el botón que se presiona.

    Finalmente:

    `if button.collidepoint(pos):` 

    :

    `if b.collidepoint(pos):`

    Utilizando Rect b collidepoint método

    OriginalEl autor tijko

  2. 2

    Creo rect llamada al método collidepoint, no chocan*r*punto.
    Aquí está el enlace a la documentación!

    Buena captura, yo estaba más que probable ligeramente la mezcla de collide*r*ect y en collidepoint. He editado para mostrar esto, pero, creo que podría haber comentado en lugar de hacer de esta una respuesta 😛

    OriginalEl autor ivan133

Dejar respuesta

Please enter your comment!
Please enter your name here