Я пытаюсь сделать доску, которая меняет цвет при щелчке левой кнопкой мыши. Но когда я нажимаю, он циклически проходит через is_square_clicked() 3 раза. Это проблема, я только хочу, чтобы она сделала это один раз. Как вы можете догадаться, это вызывает проблему для моей программы. Итак, как я могу ограничить его 1 проход через клик? Благодаря!несколько кликов, зарегистрированных в pygame
def is_square_clicked(mousepos):
x, y = mousepos
for i in xrange(ROWS):
for j in xrange(COLS):
for k in xrange(3):
if x >= grid[i][j][1] and x <= grid[i][j][1] + BLOCK:
if y >= grid[i][j][2] and y <= grid[i][j][2] + BLOCK:
if grid[i][j][0] == 0:
grid[i][j][0] = 1
elif grid[i][j][0] == 1:
grid[i][j][0] = 0
while __name__ == '__main__':
tickFPS = Clock.tick(fps)
pygame.display.set_caption("Press Esc to quit. FPS: %.2f" % (Clock.get_fps()))
draw_grid()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONUP and event.button == 1:
mousepos = pygame.mouse.get_pos()
is_square_clicked(mousepos)
pygame.display.update()
У меня он активируется только на mousebuttonUP, поэтому держать мышью не будет проблемой, но каков подходящий способ заставить ее ждать по щелчку? Имеет ли смысл приостанавливать всю программу во время ожидания нажатием кнопки? Законные вопросы, а не сарказм. – BradleyMoore
@thefritobandit зависит от программы. Что вы хотите сделать? если это единственная часть программы, да, это имеет смысл. Кроме того, это может быть отдельно от основного цикла программы, поэтому только это остановит. – Pip