Python Pygame:Can';t在“后”屏幕上绘制任何图像;pygame.Surface.fill();

Python Pygame:Can';t在“后”屏幕上绘制任何图像;pygame.Surface.fill();,python,pygame,pygame-surface,Python,Pygame,Pygame Surface,我在下国际象棋,遇到了一个问题: 我正在尝试使用pygame.Surface.fill(black_sc)更新每个“滴答”的显示。 但结果,我似乎无法在现在的黑屏上画任何东西: #GAME LOOP while True: screen.fill(black_sc) #SQUARE DRAWING LOOP s_draw_loop() #DRAW THE PIECES draw_pieces() m_pos = pyg

我在下国际象棋,遇到了一个问题: 我正在尝试使用pygame.Surface.fill(black_sc)更新每个“滴答”的显示。 但结果,我似乎无法在现在的黑屏上画任何东西:

#GAME LOOP
while True:
    screen.fill(black_sc)
    
    #SQUARE DRAWING LOOP
    s_draw_loop()
    
    #DRAW THE PIECES
    draw_pieces()
    
    m_pos = pygame.mouse.get_pos()
    
    for x in pygame.event.get():
        if x.type == pygame.QUIT or pygame.key.get_pressed()[pygame.K_ESCAPE] == True:
            exit()
        
        if x.type == pygame.MOUSEBUTTONDOWN:
            for space in range(len(rect_database)):
                if rect_database[space].collidepoint(m_pos) == True:
                    print(space)
    
    pygame.display.flip()
这是s_draw_循环()

class s\u draw\u loop():
s_posx=0
s_posy=0
s_w=大小[0]/8
s_h=尺寸[1]/8
行=0
i=0
而我<64:
如果i%2==0:
如果行%2==0:
current_rect=pygame.rect(s_posx,s_posy,s_w,s_h)
屏幕填充(白色,当前右)
其他:
current_rect=pygame.rect(s_posx,s_posy,s_w,s_h)
屏幕填充(黑色,当前矩形)
s_posx+=s_w
i+=1
其他:
如果行%2==0:
current_rect=pygame.rect(s_posx,s_posy,s_w,s_h)
屏幕填充(黑色,当前矩形)
其他:
current_rect=pygame.rect(s_posx,s_posy,s_w,s_h)
屏幕填充(白色,当前右)
s_posx+=s_w
i+=1
如果i%8==0:
s_posx=0
s_posy+=s_h
行+=1
除非您需要,否则我不会让您使用整个函数来绘制片段,但它基本上只是使用pygame.Surface.blit()将图片绘制到显示屏上

我已经尝试将“绘图功能”包含到游戏循环本身中,但似乎没有什么不同


这是因为
s\u draw\u loop
是一个类,而不是一个函数

当python运行时读取类的代码时,
s_draw_loop
中的绘图代码在进入游戏循环之前只执行一次

在游戏循环中调用
s\u draw\u loop()
实际上没有任何作用(除了创建一个没有任何作用的类的无用instance)


简单地改变

class s_draw_loop():
    ...


所以
s\u draw\u loop
中的代码每帧都会执行一次。

非常感谢!这似乎奏效了!我想这是一个不幸的初学者错误。。。
class s_draw_loop():
    ...
def s_draw_loop():
    ...