Pygame.blit()在类中或游戏循环中不起作用



我遵循了一个pygame教程,测试了玩家blit是否有效,检查了问题,但没有发现,然后我直接在游戏循环中测试了一个.blit((,但它不起作用,所以我现在被难住了。

低于玩家等级;Player_Down"应该是无关的rn,因为它只是一个图像

class Player():
def __init__(self, x, y):
direction = "down"
self.image = player_down
self.rect = self.image.get_rect()
self.rect.center = (x, y)
def draw(self):
screen.blit(self.image, self.rect)

ply = Player(SCREEN_WIDTH // 2 , SCREEN_HEIGHT - 150)

具有称为的平局功能的游戏循环

running = True
while running:
screen.fill((83,90,83))
ply.draw()

#event handler
for event in pygame.event.get():
if event.type == pygame.QUIT:
print("Game quit via X button")
running = False
pygame.display.update()

问题中的代码没有问题。你怀疑blit不起作用是错误的(参见如何在pygame中绘制图像和精灵?(。代码运行良好
但是,我建议将screenSurface作为draw方法的参数传递。请参阅最小值和工作示例:

import pygame
pygame.init()
SCREEN_WIDTH, SCREEN_HEIGHT = 400, 400
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
player_down = pygame.Surface((30, 30))
player_down.fill((255, 0, 0))
class Player():
def __init__(self, x, y):
direction = "down"
self.image = player_down
self.rect = self.image.get_rect()
self.rect.center = (x, y)
def draw(self, surf):
surf.blit(self.image, self.rect)

ply = Player(SCREEN_WIDTH // 2 , SCREEN_HEIGHT - 150)
running = True
while running:

#event handler
for event in pygame.event.get():
if event.type == pygame.QUIT:
print("Game quit via X button")
running = False
screen.fill((83,90,83))
ply.draw(screen)
pygame.display.update()
pygame.quit()
exit()

最新更新