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