在pygame程序中寻找解决逻辑错误的方法

时间:2014-11-28 23:15:59

标签: python pygame

我自学pygame,而且我试图制作一个程序,一旦点击它就会切换正方形的颜色。问题是如果用户点击方块超过1/60秒,那么方块将开始在蓝色和橙色之间循环,这是我选择的两种颜色。这是应该切换方块颜色的代码:

if event.type == pygame.MOUSEBUTTONUP:
    mousePos = pygame.mouse.get_pos()
    if 130 < mousePos[0] < 250:
        if 90 < mousePos[1] < 210:
            if switching:
                color = (255,100,0)
            else:
                color = (0,100,255)
            switching = not switching

我推断它是因为这段代码在游戏循环中,而event.type的值没有改变,除非用户移动鼠标。这意味着它每次经过游戏循环时都会经过代码段,这意味着从用户释放鼠标开始,每隔1/60秒,方块的颜色会发生变化,直到它们最终移动光标。 。关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:1)

您应该保存鼠标按钮的当前“状态” - 向上或向下。

如果它已经关闭并且之前已经启动,请执行切换操作,并将状态设置为down。如果是down,则不执行任何操作。

如果释放鼠标按钮,请将状态重置为up

答案 1 :(得分:0)

认为您可以使用pygame.MOUSEBUTTONUP来检查是否单击了鼠标。您还可以将游戏循环外的颜色设置为蓝色=(255,100,0)等变量,这样您就可以更轻松地阅读并轻松进行后续编程。

if event.type== pygame.MOUSEBUTTONDOWN: