[英]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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.