Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygame中的鼠标按钮事件_Python_Python 3.x_Pygame - Fatal编程技术网

Python pygame中的鼠标按钮事件

Python pygame中的鼠标按钮事件,python,python-3.x,pygame,Python,Python 3.x,Pygame,我在pygame中制作了一种类似cookie clicker的游戏,但是当我在分数中添加大量分数后单击鼠标时。我假设这是因为游戏循环,但是我想知道如何停止,并使每次点击的分数增加1,无论鼠标按钮被按住多长时间。使用两个变量,如单击鼠标是否和单击鼠标是否 在游戏的初始化过程中(甚至在第一个循环之前),将False分配给它们两个 在游戏循环开始时,将鼠标单击是否的值分配给鼠标单击是否 然后,加载是否按下鼠标按钮以是否单击鼠标的信息变量 然后,如果单击的值与先前单击的值不同,则添加该点。 选项1:

我在pygame中制作了一种类似cookie clicker的游戏,但是当我在分数中添加大量分数后单击鼠标时。我假设这是因为游戏循环,但是我想知道如何停止,并使每次点击的分数增加1,无论鼠标按钮被按住多长时间。

使用两个变量,如
单击鼠标是否
单击鼠标是否

  • 在游戏的初始化过程中(甚至在第一个循环之前),将
    False
    分配给它们两个
  • 在游戏循环开始时,将
    鼠标单击是否
    的值分配给
    鼠标单击是否
  • 然后,加载是否按下鼠标按钮以
    是否单击鼠标的信息
    变量
  • 然后,如果单击的
    值与先前单击的
    值不同,则添加该点。
    
    • 选项1:在
      中添加点数如果之前单击过鼠标而未单击过鼠标:
      将立即增加分数(从您开始按下按钮的那一刻起)
    • 选项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()

您如何检测鼠标点击?您可能应该使用
pygame.event.get()
而不是。您应该显示您的代码。如果太长,则创建一个小的代表性示例。寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现此问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参见:如何创建-