首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >退出算法游戏不能正常工作

退出算法游戏不能正常工作
EN

Stack Overflow用户
提问于 2020-11-01 18:00:08
回答 1查看 41关注 0票数 1

在这里,我希望程序在他们按下退出按钮时关闭,但是如果我启用了我的Close()函数,那么Check_Key_Press()函数就会运行而不是,但是如果我注释掉Check_Key_Press()函数,那么它就会再次工作。

代码语言:javascript
复制
import pygame

pygame.init()
width, height = 500,500
win = pygame.display.set_mode((width, height))
pygame.display.set_caption("Tic Tac Toe(GUI)")
clock = pygame.time.Clock()

white = (255,255,255)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)

Tile_dime = 59
Diff = (Tile_dime+1)/2
board_det = [['-',(width/2-3*Diff,height/2-3*Diff)],['-',(width/2-Diff,height/2-3*Diff)],['-',(width/2+Diff,height/2-3*Diff)],
            ['-',(width/2-3*Diff,height/2-Diff)],['-',(width/2-Diff,height/2-Diff)],['-',(width/2+Diff,height/2-Diff)],
            ['-',(width/2-3*Diff,height/2+Diff)],['-',(width/2-Diff,height/2+Diff)],['-',(width/2+Diff,height/2+Diff)]]

def draw_board():
    for i in range(len(board_det)):
        pygame.draw.rect(win, white, [board_det[i][1], (Tile_dime, Tile_dime)])

def Close():
    global run
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

def Check_Key_Press():
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            pass
            if event.key == pygame.K_LEFT:
                pass

run = True
while run:
    clock.tick(60)
    draw_board()
    Check_Key_Press()
    Close()
    pygame.display.update()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-01 18:03:28

pygame.event.get()获取所有消息并将它们从队列中删除。如果在多个事件循环中调用pygame.event.get (),则只有一个循环接收事件,但从来没有所有循环接收所有事件。因此,有些事件似乎被忽略了。

获取事件一次,并在多个循环中使用它们,或者将列表或事件传递给处理它们的函数和方法:

代码语言:javascript
复制
def Close(event_list):
    global run
    for event in event_list:
        if event.type == pygame.QUIT:
            run = False
代码语言:javascript
复制
def Check_Key_Press(event_list):
    for event in event_list:
        if event.type == pygame.KEYDOWN:
            pass
            if event.key == pygame.K_LEFT:
                pass
代码语言:javascript
复制
run = True
while run:
    clock.tick(60)
    event_list = pygame.event.get()
    draw_board()
    Check_Key_Press(event_list)
    Close(event_list)
    pygame.display.update()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64635157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档