gpt4 book ai didi

python - Pygame 中的曲面绘制

转载 作者:行者123 更新时间:2023-12-01 00:32:35 24 4
gpt4 key购买 nike

我创建了许多表面来充当 UI 元素的占位符,其中之一是“游戏窗口”。我的玩家角色是使用 Freetype 字体模块创建的,并渲染到目标表面。每次循环都会填充目标表面以清除“框架”,但字符不会显示。如果没有填充,则会显示字符,但会复制每个“帧”。我知道字符是在正确的表面上绘制的,因为原点是 (0, 0),并且是在表面相对于屏幕偏移时偏移绘制的。

# Set up various surfaces for UI containers
GAME_SURFACE = pygame.Surface((1350, 755))
GAME_SURFACE_RECT = pygame.Surface.get_rect(GAME_SURFACE)
STATS_SURFACE = pygame.Surface((1350, 125))
CHAR_DETAILS_SURFACE = pygame.Surface((570, 540))
ENEMY_DETAILS_SURFACE = pygame.Surface((570, 540))
LOG_SURFACE = pygame.Surface((1350, 200))

# Initialise Objects
PLAYER = Entity(0, 0, PLAYER_CHAR, WHITE, GAME_SURFACE)

...

# --- Screen-clearing code goes here
SCREEN.fill(BLACK)
GAME_SURFACE.fill(BLACK)
STATS_SURFACE.fill(RED)
CHAR_DETAILS_SURFACE.fill(WHITE)
ENEMY_DETAILS_SURFACE.fill(GREEN)
LOG_SURFACE.fill(RED)

# --- Drawing code should go here
SCREEN.blit(STATS_SURFACE, (0, 0))
SCREEN.blit(CHAR_DETAILS_SURFACE, (1350, 0))
SCREEN.blit(ENEMY_DETAILS_SURFACE, (1350, 540))
SCREEN.blit(LOG_SURFACE, (0, 880))
SCREEN.blit(GAME_SURFACE, (0, 125))
PLAYER.draw()

最佳答案

您没有显示所有相关代码,但我有根据的猜测是,没有显示任何内容是因为您的绘图逻辑像这样的循环一样工作:

  1. 清屏
  2. 干净的游戏表面
  3. 将游戏表面传输到屏幕
  4. 将玩家图像传输到游戏界面
  5. 转到 1。

因此,当您将玩家图像绘制到游戏表面时,它会在更新的游戏表面被传输到屏幕表面之前立即被清除。

在这种情况下,请先更新游戏表面,然后再将其传输到屏幕表面。像这样的事情:

# --- Screen-clearing code goes here
SCREEN.fill(BLACK)
GAME_SURFACE.fill(BLACK)
STATS_SURFACE.fill(RED)
CHAR_DETAILS_SURFACE.fill(WHITE)
ENEMY_DETAILS_SURFACE.fill(GREEN)
LOG_SURFACE.fill(RED)

# --- Drawing code should go here
PLAYER.draw()

SCREEN.blit(STATS_SURFACE, (0, 0))
SCREEN.blit(CHAR_DETAILS_SURFACE, (1350, 0))
SCREEN.blit(ENEMY_DETAILS_SURFACE, (1350, 540))
SCREEN.blit(LOG_SURFACE, (0, 880))
SCREEN.blit(GAME_SURFACE, (0, 125))

关于python - Pygame 中的曲面绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58056829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com