Pygame 精灵不移动
Pygame sprite doesn't move
我试图在 pygame 中将一个精灵 blit 到屏幕上。
这是我的代码:
import pygame
from pygame.locals import (
K_UP,
K_DOWN,
K_LEFT,
K_RIGHT,
K_ESCAPE,
KEYDOWN,
QUIT
)
WINDOW = pygame.display.set_mode((800,800))
class Player(pygame.sprite.Sprite):
def __init__(self):
self.x = 0
self.y = 0
super().__init__()
self.surf = pygame.Surface((50,50))
self.surf.fill((20, 115, 224))
self.rect = self.surf.get_rect()
def update(self):
print("Updated")
GRAVITY = 10
self.y += GRAVITY
self.rect = (self.x,self.y)
def game_loop():
run = True
while run:
WINDOW.fill((52, 183, 235))
Player().update()
WINDOW.blit(Player().surf,(Player().x,Player().y))
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
run = False
pygame.quit()
if __name__ == "__main__":
game_loop()
我遇到问题的具体部分是:
def update(self):
print("Updated")
GRAVITY = 10
self.y += GRAVITY
self.rect = (self.x,self.y)
和
Player().update()
WINDOW.blit(Player().surf,(Player().x,Player().y))
当我 运行 这段代码时,精灵不会从屏幕上移开,即使 self.y 是通过重力添加的。如有任何帮助,我们将不胜感激。
据我了解您的代码,您每次引用 Player()
.
时都会使用默认设置实例化一个新的 Player()
尝试:
import pygame
from pygame.locals import (
K_UP,
K_DOWN,
K_LEFT,
K_RIGHT,
K_ESCAPE,
KEYDOWN,
QUIT
)
WINDOW = pygame.display.set_mode((800,800))
class Player(pygame.sprite.Sprite):
def __init__(self):
self.x = 0
self.y = 0
super().__init__()
self.surf = pygame.Surface((50, 50))
self.surf.fill((20, 115, 224))
self.rect = self.surf.get_rect()
def update(self):
print("Updated")
GRAVITY = 10
self.y += GRAVITY
self.rect = (self.x, self.y)
def game_loop():
run = True
player = Player()
while run:
WINDOW.fill((52, 183, 235))
player.update()
WINDOW.blit(player.surf, (player.x, player.y))
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
run = False
pygame.quit()
if __name__ == "__main__":
game_loop()
我试图在 pygame 中将一个精灵 blit 到屏幕上。
这是我的代码:
import pygame
from pygame.locals import (
K_UP,
K_DOWN,
K_LEFT,
K_RIGHT,
K_ESCAPE,
KEYDOWN,
QUIT
)
WINDOW = pygame.display.set_mode((800,800))
class Player(pygame.sprite.Sprite):
def __init__(self):
self.x = 0
self.y = 0
super().__init__()
self.surf = pygame.Surface((50,50))
self.surf.fill((20, 115, 224))
self.rect = self.surf.get_rect()
def update(self):
print("Updated")
GRAVITY = 10
self.y += GRAVITY
self.rect = (self.x,self.y)
def game_loop():
run = True
while run:
WINDOW.fill((52, 183, 235))
Player().update()
WINDOW.blit(Player().surf,(Player().x,Player().y))
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
run = False
pygame.quit()
if __name__ == "__main__":
game_loop()
我遇到问题的具体部分是:
def update(self):
print("Updated")
GRAVITY = 10
self.y += GRAVITY
self.rect = (self.x,self.y)
和
Player().update()
WINDOW.blit(Player().surf,(Player().x,Player().y))
当我 运行 这段代码时,精灵不会从屏幕上移开,即使 self.y 是通过重力添加的。如有任何帮助,我们将不胜感激。
据我了解您的代码,您每次引用 Player()
.
尝试:
import pygame
from pygame.locals import (
K_UP,
K_DOWN,
K_LEFT,
K_RIGHT,
K_ESCAPE,
KEYDOWN,
QUIT
)
WINDOW = pygame.display.set_mode((800,800))
class Player(pygame.sprite.Sprite):
def __init__(self):
self.x = 0
self.y = 0
super().__init__()
self.surf = pygame.Surface((50, 50))
self.surf.fill((20, 115, 224))
self.rect = self.surf.get_rect()
def update(self):
print("Updated")
GRAVITY = 10
self.y += GRAVITY
self.rect = (self.x, self.y)
def game_loop():
run = True
player = Player()
while run:
WINDOW.fill((52, 183, 235))
player.update()
WINDOW.blit(player.surf, (player.x, player.y))
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
run = False
pygame.quit()
if __name__ == "__main__":
game_loop()