Pygame 精灵不会移动

Pygame sprite won't move

所以我正在尝试为学校项目编写一个简单的游戏,但我现在有点受苦。我试图让精灵移动,但它只是不想有人能告诉我我做错了什么吗?到目前为止,这是我的代码:

import pygame
from pygame.locals import *

clock = pygame.time.Clock()
fps = 60
size = 1000, 700
screen = pygame.display.set_mode(size)
pygame.display.set_caption('game')

sky = pygame.image.load("bilder/sky.png")
sky = pygame.transform.scale(sky, (1000, 700))
def draw_sky():
    screen.blit(sky, (0,0))


class Ekkdie(pygame.sprite.Sprite):
    def __init__(self, x, y):
       super().__init__()
       self.image = pygame.image.load("bilder/ekkdie.png")
       self.rect = self.image.get_rect()
       self.rect.center = [x,y]
    def update(self):
       keys = pygame.key.get_pressed()
       if keys[pygame.K_LEFT]:
           self.rect.x -= 7
       if keys[pygame.K_RIGHT]:
           self.rect.x += 7
       if keys[pygame.K_UP]:
           self.rect.y -= 7
       if keys[pygame.K_DOWN]:
           self.rect.y += 7

ekkdie = Ekkdie(100, 100)
ekkdie_group = pygame.sprite.Group()
ekkdie_group.add(ekkdie)
                                        
run = True
while run:

    clock.tick(fps)
    draw_sky()
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    pygame.display.flip()
    ekkdie_group.draw(sky)
    ekkdie.update()
    pygame.display.update()

pygame.quit()

您必须在屏幕中而不是在天空图像中绘制精灵。 我还使用了一个表面,因为你没有上传你的图片。 pygame.display.flip() 不是必需的,因为您正在使用 pygame.display.update()

import pygame
from pygame.locals import *

clock = pygame.time.Clock()
fps = 60
size = 1000, 700
screen = pygame.display.set_mode(size)
pygame.display.set_caption('game')

sky = pygame.Surface(size)
def draw_sky():
    screen.blit(sky, (0,0))


class Ekkdie(pygame.sprite.Sprite):
    def __init__(self, x, y):
       super().__init__()
       self.image = pygame.Surface((100,100))
       self.image.fill('red')
       self.rect = self.image.get_rect()
       self.rect.center = [x,y]
    def update(self):
       keys = pygame.key.get_pressed()
       if keys[pygame.K_LEFT]:
           self.rect.x -= 7
       if keys[pygame.K_RIGHT]:
           self.rect.x += 7
       if keys[pygame.K_UP]:
           self.rect.y -= 7
       if keys[pygame.K_DOWN]:
           self.rect.y += 7

ekkdie = Ekkdie(100, 100)
ekkdie_group = pygame.sprite.Group()
ekkdie_group.add(ekkdie)
                                        
run = True
while run:

    clock.tick(fps)
    
    
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    
    draw_sky()
    ekkdie_group.draw(screen)
    ekkdie.update()
    pygame.display.update()

pygame.quit()