【发布时间】:2018-09-02 18:14:06
【问题描述】:
我正在学习如何在 pygame 中编写游戏代码,我编写了一个简单的 pygame 代码来加载背景并绘制玩家精灵。我画了背景图,之后只画玩家,所以图片不会和玩家图片重叠,然后调用pygame.display.flip()来翻转屏幕。还是不行,为什么?我粘贴了下面使用的图像
import pygame
pygame.init()
black = (0, 0, 0)
width = 800
height = 600
screen = pygame.display.set_mode((width, height))
clock = pygame.time.Clock()
FPS = 60
background_img = pygame.image.load("environment_forest_alt1.png")
backgroundimg_rect = background_img.get_rect()
player_img_idle = pygame.image.load("adventurer-idle-00.png")
player_img_run = pygame.image.load("adventurer-run-00.png")
player_img_attack = pygame.image.load("adventurer-attack1-01.png")
player_img_attack2 = pygame.image.load("adventurer-attack1-02.png")
player_img_attack3 = pygame.image.load("adventurer-attack1-03.png")
player_img_attack4 = pygame.image.load("adventurer-attack1-04.png")
player_img_attacks = [player_img_attack, player_img_attack2, player_img_attack3, player_img_attack4]
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.transform.scale(player_img_idle, (200, 100))
self.image.set_colorkey(black)
self.rect = self.image.get_rect()
self.rect.x = 10
self.rect.y = height - 10
all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
exitGame = False
while not exitGame:
clock.tick(FPS)
screen.blit(background_img, backgroundimg_rect)
for event in pygame.event.get():
if event.type == pygame.QUIT:
exitGame = True
all_sprites.draw(screen)
pygame.display.flip()
pygame.quit()
quit()
【问题讨论】:
-
我试图通过使用我自己制作的两张图片来重现这个问题,但是,“玩家”仍然可见。如果您发布使用的两张图片,
player_img_idle和background_img,我将再次尝试重现该问题。但是,您可以尝试重构您的while循环,使其看起来更像常规的 pygame 代码:first (for event in pygame.ev...) 执行所有事件处理,然后渲染背景图像和精灵,翻转屏幕,然后然后调用clock.tick(FPS)。 -
@MichealO'Dwyer 发布了图片!
-
我相信你必须对精灵进行 blit,而不是绘制它们?
标签: pygame