Как подделать событие мыши в pygame? - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь создать бота, который играет в игру Tetris. Но в исходном коде (он имеет графический интерфейс) я должен нажать кнопку, чтобы начать игру, и новая игра запускается. Но так как я хочу, чтобы бот играл в нее, у меня естьпревзойти / пропустить "кнопку воспроизведения".Я использую библиотеку pygame в Python. Как я могу создать такое событие или обойти факт нажатия кнопки воспроизведения?

1 Ответ

0 голосов
/ 09 декабря 2018

Мышь (или любое другое событие) может быть создана следующим образом: создайте экземпляр pygame.event.Event и передайте тип события (в верхней части связанной страницы есть список) и соответствующийатрибуты в качестве словаря или аргументы ключевого слова (в данном случае pos и button).

mouse_event = pg.event.Event(pg.MOUSEBUTTONDOWN, {'pos': (245, 221), 'button': 1})

Это событие необходимо добавить в очередь событий с помощью pygame.event.post функция, так что она может быть обработана в цикле событий.Минимальный, полный пример:

import pygame as pg


pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray12')
BLUE = pg.Color('dodgerblue')
button = pg.Rect(200, 200, 90, 40)
# Create an Event instance and pass the event type
# and a dict with the necessary event attributes.
mouse_event = pg.event.Event(pg.MOUSEBUTTONDOWN, {'pos': (245, 221), 'button': 1})

done = False
while not done:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            done = True
        elif event.type == pg.MOUSEBUTTONDOWN:
            if button.collidepoint(event.pos):
                print('collision')

    # I just add the event to the queue once per frame.
    pg.event.post(mouse_event)

    screen.fill(BG_COLOR)
    pg.draw.rect(screen, BLUE, button)
    pg.display.flip()
    clock.tick(60)

pg.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...