pygame中的MOUSEBUTTON事件

时间:2018-02-12 23:36:20

标签: python python-3.x pygame

我在pygame中制作了一种类似于游戏的cookie点击器,但是当我点击鼠标时,一旦将大量点数添加到乐谱中。我认为这是因为游戏循环,但是我想知道如何停止,并且无论鼠标按钮按下多长时间,都要为每次点击添加1分。

2 个答案:

答案 0 :(得分:2)

这是一个只增加鼠标按钮事件得分的示例:

import pygame
pygame.init()
pygame.font.init()

clock = pygame.time.Clock()
screen = pygame.display.set_mode([320,240])
sys_font = pygame.font.SysFont(pygame.font.get_default_font(), 18)

pygame.display.set_caption("Clicker")
clicks = 0  # initialise the score counter
done = False
while not done:
    #Events
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        elif event.type == pygame.MOUSEBUTTONDOWN:
            clicks += 1

    #Graphics
    screen.fill(pygame.color.Color("white"))
    score_txt = sys_font.render(f"Clicks: {clicks}", True, pygame.color.Color("blue"))
    screen.blit(score_txt, (20, 220))
    #Frame Change
    pygame.display.update()
    clock.tick(60)
pygame.quit()

Example Clicker GUI

答案 1 :(得分:1)

使用is_mouse_clickedwas_mouse_clicked_previously等2个变量。

  • 在游戏初始化过程中(甚至在第一个循环之前),将False分配给它们。
  • 在游戏循环开始时,将is_mouse_clicked的值分配给was_mouse_clicked_previously
  • 然后,将鼠标按钮被按下的信息加载到is_mouse_clicked变量
  • 然后,如果is_mouse_clickedwas_mouse_clicked_previously的值不同,请添加该点。
    • 选项1:在if is_mouse_clicked and not was_mouse_clicked_previously:内添加点会立即提高分数(当您开始按下按钮时)
    • 选项2:在if not is_mouse_clicked and was_mouse_clicked_previously:内添加点会稍微提高分数(当您释放按钮时)