Pygame鼠标检测减慢了我的程序

2024-10-02 04:22:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想制作一个图片拼图,使用鼠标输入来移动碎片,我编写了这个模块来获取鼠标输入,但是当它被使用时,它只允许我用任务管理器关闭pygame窗口

它似乎也会使程序冻结,直到满足其中一个条件

我应该完全重写这个模块还是我只是犯了一个错误

谢谢你的帮助

import Data

import pygame
pygame.init()



def MD():

    event = pygame.event.wait()


    det_gen_pos = None #determen general position # return index 0
    det_gen_mov = None #determen general movement # return index 1

    det_L_D = False #determen left press # return index 2
    det_L_U = False #determen left release # return index 3

    det_M_D = False #determen right press # return index 4
    det_M_U = False #determen right release # return index 5

    det_R_D = False #determem wheel press # return index  6
    det_R_U = False #determen wheel release # return index 7

    # 0 turning forward # 1 turning backwards # 2 stop turning forward # 3 stop turning backwards
    det_W_T = None #determens 4 different states of the wheel # return index 8


    if event.type == pygame.MOUSEMOTION:
        det_gen_pos = event.pos
        det_gen_mov = event.rel

    if event.type == pygame.MOUSEBUTTONDOWN:
        if event.button == 1:
            det_L_D = True
        if event.button == 2:
            det_M_D = True
        if event.button == 3:
            det_R_D = True
        if event.button == 4:
            det_W_T = 0
        if event.button == 5:
            det_R_D = 2

        det_gen_pos = event.pos

    if event.type == pygame.MOUSEBUTTONUP:
        if event.button == 1:
            det_L_U = True
        if event.button == 2:
            det_M_U = True
        if event.button == 3:
            det_R_U = True
        if event.button == 4:
            det_W_T = 1
        if event.button == 5:
            det_R_D = 3

        det_gen_pos = event.pos


    Data.LastMotion.append((det_gen_pos, det_gen_mov, det_L_D, det_L_U, det_M_D, det_M_U, det_R_D, det_R_U ,det_W_T))
    if len(Data.LastMotion) == Data.MotionCount:
        Data.LastMotion.pop(0)

    return Data.LastMotion[len(Data.LastMotion) - 1]

Tags: poseventfalsetruedataindexreturnif
1条回答
网友
1楼 · 发布于 2024-10-02 04:22:17

我认为问题在于{}。这将导致程序在继续之前等待事件发生,从而在等待时“冻结”程序

您可以尝试改用此检查方法:

for event in pygame.event.get():
    # Check for left click
    if event.type == pygame.MOUSEBUTTONDOWN: # or any other event types
        # some action

相关问题 更多 >

    热门问题