鱼C论坛

 找回密码
 立即注册
查看: 2089|回复: 3

[技术交流] 能不能帮看看这个UI界面能弹出,但关不掉(已自己解决在四楼)

[复制链接]
发表于 2023-7-18 06:57:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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)写出塞尔达!


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 08:16:44 | 显示全部楼层
你这不是ui界面,所以不存在窗口,更无法关闭所谓的窗口
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 08:29:17 | 显示全部楼层
你这是干嘛用的,如果想关闭窗口,直接用sys.exit()不就行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-19 20:37:43 | 显示全部楼层
本帖最后由 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关掉了图片及文字。用到了一个函数,函数调用前先渲染了一个其他内容。这个还是我自己勉强解决了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 09:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表