问题描述
我目前正在尝试使用 pygame 模块在 pyton 中开发我的第一个游戏。我在两个单独的图层中渲染我的地图,背景和前景。如果我想创建另一个 pygame.Surface
对象,我将前景 blit 到背景上。以下是 pygame.Surface
对象的原始统计信息。
背景:
前景:
这是在名为 IMAGE 的新 Surface 上对图像进行 blitting 的代码:
self.IMAGE = pygame.Surface((self.width*self.tile_size,self.height*self.tile_size))
self.IMAGE.blit(self.Image_background,(0,0))
self.IMAGE.blit(self.Image_foreground,0))
self.WINDOW.blit(self.MAP.IMAGE,0))
即使我这样做:
self.WINDOW.blit(self.MAP.Image_background,0))
self.WINDOW.blit(self.MAP.Image_foreground,0))
我总是以空白屏幕结束,只显示背景颜色。返回的图像 MAP.IMAGE
除外具有所有需要的属性:
非常感谢您的帮助!提前致谢!
def update_display(self):
pygame.display.update()
self.WINDOW.fill(BLACK)
if self.SCREEN == "MENU":
self.render_menu()
if self.SCREEN == "NEW MAP":
self.render_builder()
pygame.display.flip()
def render_builder(self):
if self.LAYER == self.layers[0]:
self.display(self.MAP.Image_background,(self.MAP.pos_x,self.MAP.pos_y),scale=False)
elif self.LAYER == self.layers[1]:
self.display(self.MAP.Image_foreground,scale=False)
elif self.LAYER == self.layers[2]:
print(self.LAYER)
self.display(self.MAP.Image_background,scale=False)
self.display(self.MAP.Image_foreground,scale=False)
self.display(self.right_bar,self.right_bar.topleft,(123,100,123))
def display(self,what,where=None,color=None,scale=True):
'''"WHAT" is either a Rect,Surface or String
If displaying a String,no "WHERE" is needed,otherwise use a Tuple (x,y)
Default "COLOR" is White,use a tuple to change that (Red,Green,Blue)'''
if type(what) == pygame.Rect:
if color:
pygame.draw.rect(self.WINDOW,color,what)
else:
pygame.draw.rect(self.WINDOW,WHITE,what)
elif type(what) == pygame.Surface:
if scale:
what = pygame.transform.scale(what,(self.true_tilesize,self.true_tilesize))
self.WINDOW.blit(what,where)
else:
self.WINDOW.blit(what,where)
elif type(what) == str:
if color:
text_surface = self.FONT.render(what,False,color)
else:
text_surface = self.FONT.render(what,BLACK)
text_rect = text_surface.get_rect()
text_rect.center = where
self.WINDOW.blit(text_surface,text_rect)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)