簡體   English   中英

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()

暫無
暫無

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM