Pygame中的表面绘图

时间:2019-09-23 06:36:16

标签: python pygame

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

import pandas as pd
import numpy as np

d = {'RollNo':[1,2,3],'Name':['ABC','DEF','XYZ'],'Marks':[90,91,92]}
dd = pd.DataFrame.from_dict(d)
def transform(data,var):
    data[var + '_log'] = data[var].apply(np.log)
transform(dd,'Marks')

1 个答案:

答案 0 :(得分:2)

您没有显示所有相关代码,但我的推测是什么也没显示出来,这是因为您的绘制逻辑像这样的循环工作:

  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))