Python Pygame:Can';t在“后”屏幕上绘制任何图像;pygame.Surface.fill();
我在下国际象棋,遇到了一个问题: 我正在尝试使用pygame.Surface.fill(black_sc)更新每个“滴答”的显示。 但结果,我似乎无法在现在的黑屏上画任何东西: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
#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():
...