python - Pygame 中的曲面绘制

标签 python pygame

我创建了许多表面来充当 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/

相关文章:

python - 如何在pygame中更改光标?

python - Django:使用 gevent-socketio 和 WSGIHandler 时捕获/记录异常

python - 如何创建 'pure' virtualenv?

python - 使用django在模板页面中显示列表值

python - pygame 移动用户控制的对象直到释放键?

python - 如何在函数上添加多个矩形?

python - 从另一个类访问方法变量

python - 如何从纬度转换为邮政编码或州以生成等值线 map

Python Wifi问题连接到神秘相机

python - 一旦玩家达到 Python 游戏的设定时间,如何停止程序