能不能帮看看这个UI界面能弹出,但关不掉(已自己解决在四楼)
本帖最后由 fffccc8080 于 2023-7-20 08:59 编辑按C键实现功能,弹出一个UI界面,再按C关闭,C键是个开关,但现在只能开,再按C时没反应了UI界面还在显示着呢。
import pygame,sys
pygame.init()
WINDOW_SIZE = (800, 600)
screen = pygame.display.set_mode(WINDOW_SIZE)
font = pygame.font.Font('joystix.ttf',30)
text = font.render('Hello,world!',True,(255,255,255))
text_rect = text.get_rect(center=(400,300))
#初始化UI界面状态
ui_visible = False
#游戏循环
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_c:
#切换UI状态
ui_visible = not ui_visible
#如果UI界面可见,渲染UI界面
if ui_visible:
pygame.draw.rect(screen,(255,0,0),(100,100,600,400))
screen.blit(text, text_rect)
#更新屏幕
pygame.display.update()
如果UI界面可见,渲染UI界面。如果不可见的话,怎么关掉UI界面而不影响它底下的内容。
当然这种代码非常简单的,在if ui_visible的反向判断处直接 screen.fill((0,0,0))就好了。
如果是复杂的游戏界面的话,怎么办,总不能直接用screen.fill((0,0,0))吧。
那个游戏代码详见B站UP主,小豆冰棍儿说人话的视频,怎么用Python(pygame)写出塞尔达!
你这不是ui界面,所以不存在窗口,更无法关闭所谓的窗口
你这是干嘛用的,如果想关闭窗口,直接用sys.exit()不就行了{:10_277:} 本帖最后由 fffccc8080 于 2023-7-19 21:03 编辑
import pygame,sys
pygame.init()
WINDOW_SIZE = (800, 600)
screen = pygame.display.set_mode(WINDOW_SIZE)
font = pygame.font.Font('joystix.ttf',30)
img = pygame.image.load('moshanshan.png')
text = font.render('Hello,world!world!',True,(255,255,255))
text_rect = text.get_rect(center=(400,300))
#初始化UI界面状态
ui_visible = False
def uixrfun():
if ui_visible:
screen.blit(img,(200,200))
screen.blit(text, text_rect)
#游戏循环
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_c:
#切换UI状态
ui_visible = not ui_visible
#print(ui_visible)
# 渲染其他内容
pygame.draw.rect(screen,(0,255,0),(100,100,600,400))
#如果UI界面可见,渲染UI界面
uixrfun()
#更新屏幕
pygame.display.update()
但这么写又可以了,达到了按C弹出图片以及文字,再按C关掉了图片及文字。用到了一个函数,函数调用前先渲染了一个其他内容。这个还是我自己勉强解决了。
页:
[1]