鱼C论坛

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

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

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

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

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

x
本帖最后由 fffccc8080 于 2023-7-20 08:59 编辑


按C键实现功能,弹出一个UI界面,再按C关闭,C键是个开关,但现在只能开,再按C时没反应了UI界面还在显示着呢。





  1. import pygame,sys
  2. pygame.init()
  3. WINDOW_SIZE = (800, 600)
  4. screen = pygame.display.set_mode(WINDOW_SIZE)
  5. font = pygame.font.Font('joystix.ttf',30)

  6. text = font.render('Hello,world!',True,(255,255,255))
  7. text_rect = text.get_rect(center=(400,300))


  8. #初始化UI界面状态
  9. ui_visible = False

  10. #游戏循环
  11. while True:
  12.         for event in pygame.event.get():
  13.                 if event.type == pygame.QUIT:
  14.                         pygame.quit()
  15.                         sys.exit()
  16.                 elif event.type == pygame.KEYDOWN:
  17.                         if event.key == pygame.K_c:
  18.                                 #切换UI状态
  19.                                 ui_visible = not ui_visible
  20.         #如果UI界面可见,渲染UI界面
  21.         if ui_visible:
  22.                 pygame.draw.rect(screen,(255,0,0),(100,100,600,400))
  23.                 screen.blit(text, text_rect)

  24.         #更新屏幕
  25.         pygame.display.update()


复制代码





如果UI界面可见,渲染UI界面。如果不可见的话,怎么关掉UI界面而不影响它底下的内容。
当然这种代码非常简单的,在if ui_visible的反向判断处直接 screen.fill((0,0,0))就好了。
如果是复杂的游戏界面的话,怎么办,总不能直接用screen.fill((0,0,0))吧。
那个游戏代码详见B站UP主,小豆冰棍儿说人话的视频,怎么用Python(pygame)写出塞尔达!


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 08:16:44 | 显示全部楼层
你这不是ui界面,所以不存在窗口,更无法关闭所谓的窗口
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-18 08:29:17 | 显示全部楼层
你这是干嘛用的,如果想关闭窗口,直接用sys.exit()不就行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-19 20:37:43 | 显示全部楼层
本帖最后由 fffccc8080 于 2023-7-19 21:03 编辑
  1. import pygame,sys
  2. pygame.init()
  3. WINDOW_SIZE = (800, 600)
  4. screen = pygame.display.set_mode(WINDOW_SIZE)
  5. font = pygame.font.Font('joystix.ttf',30)
  6. img = pygame.image.load('moshanshan.png')

  7. text = font.render('Hello,world!world!',True,(255,255,255))
  8. text_rect = text.get_rect(center=(400,300))

  9. #初始化UI界面状态
  10. ui_visible = False

  11. def uixrfun():
  12.         if ui_visible:
  13.                 screen.blit(img,(200,200))
  14.                 screen.blit(text, text_rect)

  15. #游戏循环
  16. while True:
  17.         for event in pygame.event.get():
  18.                 if event.type == pygame.QUIT:
  19.                         pygame.quit()
  20.                         sys.exit()
  21.                 elif event.type == pygame.KEYDOWN:
  22.                         if event.key == pygame.K_c:
  23.                                 #切换UI状态
  24.                                 ui_visible = not ui_visible
  25.                                 #print(ui_visible)
  26.        
  27.         # 渲染其他内容
  28.         pygame.draw.rect(screen,(0,255,0),(100,100,600,400))

  29.         #如果UI界面可见,渲染UI界面
  30.         uixrfun()

  31.         #更新屏幕
  32.         pygame.display.update()
复制代码





但这么写又可以了,达到了按C弹出图片以及文字,再按C关掉了图片及文字。用到了一个函数,函数调用前先渲染了一个其他内容。这个还是我自己勉强解决了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-23 12:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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