[英]How can my Pause display work properly in Pygame?
因此,在我單擊繼續所有內容的按鈕后,我的暫停顯示會不斷返回。
這包含在代碼中:“def paused(): global pause clock = pygame.time.Clock()”
while pause:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
screen.fill(0)
screen.blit(intropic, (0, 0))
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
# print(mouse)
if 270 + 120 > mouse[0] > 270 and 590 + 50 > mouse[1] > 590:
pygame.draw.rect(screen, (0, 0, 0), (268, 588, 124, 54))
pygame.draw.rect(screen, (0, 255, 0), (270, 590, 120, 50))
if click[0] == 1:
pause = False
else:
pygame.draw.rect(screen, (0, 0, 0), (268, 588, 124, 54))
pygame.draw.rect(screen, (100, 255, 100), (270, 590, 120, 50))
if 770 + 150 > mouse[0] > 770 and 590 + 50 > mouse[1] > 590:
pygame.draw.rect(screen, (0, 0, 0), (768, 588, 154, 54))
pygame.draw.rect(screen, (255, 0, 0), (770, 590, 150, 50))
if click[0] == 1:
pygame.quit()
exit()
else:
pygame.draw.rect(screen, (0, 0, 0), (768, 588, 154, 54))
pygame.draw.rect(screen, (255, 100, 100), (770, 590, 150, 50))
healthfont = pygame.font.Font(None, 40)
start = healthfont.render("Weiter", True, (0, 0, 0))
textRect1 = start.get_rect()
textRect1.topright = [370, 603]
screen.blit(start, textRect1)
healthfont = pygame.font.Font(None, 40)
end = healthfont.render("Beenden", True, (0, 0, 0))
textRect1 = end.get_rect()
textRect1.topright = [900, 603]
screen.blit(end, textRect1)
pausefont = pygame.font.Font(None, 80)
pausetxt = pausefont.render("Pause", True, (0, 0, 0))
textRect1 = pausetxt.get_rect()
textRect1.center = [800, 300]
screen.blit(pausetxt, textRect1)
pygame.display.flip()
如果按 P,這是代碼:
if keys[4]:
pause = True
paused()
還有一個全局暫停 = False
任何幫助深表感謝
暫停或不暫停,它只是一個boolean。 你的程序必須決定這意味着什么。
也許這意味着屏幕沒有更新,也許輸入處理不同。
下面是對您的代碼的重新處理,如果設置了暫停標志global_paused
,則屏幕將停止繪制除“*** PAUSED ***”橫幅之外的所有內容。
請注意使用pyagme.Rect
來存儲矩形、顏色常量、更簡單的碰撞測試。 Fonts 只需要加載一次,所以這些已經移到主循環之外。
global_paused = False
BLACK = (0, 0, 0)
RED = (0, 255, 0)
GREENISH = (100, 255, 100)
area1 = pygame.Rect( 268, 588, 124, 54 )
area2 = pygame.Rect( 270, 590, 120, 50 )
area3 = pygame.Rect(768, 588, 154, 54)
area4 = pygame.Rect(770, 590, 150, 50)
healthfont = pygame.font.Font(None, 40)
start = healthfont.render("Weiter", True, BLACK )
textRect1 = start.get_rect()
textRect1.topright = [370, 603]
healthfont = pygame.font.Font(None, 40)
end = healthfont.render("Beenden", True, BLACK )
textRect1 = end.get_rect()
textRect1.topright = [900, 603]
pausefont = pygame.font.Font(None, 80)
pausetxt = pausefont.render("Pause", True, BLACK )
textRect1 = pausetxt.get_rect()
textRect1.center = [800, 300]
pause_mode = pausefont.render( "*** PAUSED ***", True, RED, BLACK )
clock = pygame.time.Clock()
exiting = False
while not exiting:
mouse_click = None
mouse_pos = pygame.mouse.get_pos()
# Handle Events
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
elif ( event.type == pygame.MOUSEBUTTONUP ):
mouse_click = pygame.mouse.get_pressed()
if ( area1.collidepoint( event.pos ) ):
global_paused = not global_paused
elif ( area3.collidepoint( event.pos ) ):
exiting = True
elif ( event.type == pygame.KEYUP ):
if ( event.key == pygame.K_p ):
global_paused = not global_paused
# draw the screen
screen.fill( BLACK )
if ( not global_paused ):
screen.blit(intropic, (0, 0))
pygame.draw.rect(screen, BLACK, area1 )
if ( area1.collidepoint( mouse_pos ) ):
pygame.draw.rect(screen, RED, area2 )
else:
pygame.draw.rect(screen, GREENISH, area2 )
pygame.draw.rect(screen, BLACK, area3 )
pygame.draw.rect(screen, RED, area4 )
else:
pygame.draw.rect(screen, GREENISH, area4 )
screen.blit(start, textRect1)
screen.blit(end, textRect1)
screen.blit(pausetxt, textRect1)
else:
# everything is paused
screen.blit( pause_mode, ( 0, 0 ) )
pygame.display.flip()
clock.tick( 60 )
pygame.quit()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.