Я пишу этот код, потому что хочу переместить спрайт с помощью стрелки. Думаю, ничего особенного.
Я потратил много времени на поиск руководств, которые показывают и перемещают простую картинку.
Ниже мой код:
Первая часть вполне стандартная, импортирует библиотеки и определяет характерное значение программы:
import sys
import pygame
pygame.init()
#refer value
border_X=800
border_Y=600
FPS=30
POS_X=300
POS_Y=300
INCREASE_X=0
INCREASE_Y=0
screen=pygame.display.set_mode((border_X,border_Y))
clock=pygame.time.Clock()
Здесь я определяю класс спрайта, возможно, вы неправильно поняли определение класса, возможно, я неправильно использовал rect.center
.
class Ship(pygame.sprite.Sprite):
image = pygame.image.load("fighter_0.png")
image = image.convert_alpha()
def __init__(self, X_INIT, Y_INIT):
super(Ship, self).__init__()
self.image = Ship.image
self.rect = self.image.get_rect()
self.rect.center = (X_INIT, Y_INIT)
def update(self,x,y):
self.rect.center = (x,y)
Здесь я создаю группу спрайтов, возможно, это не обязательно для одного спрайта, но основная цель этой программы - обучение.
В любом случае я пытался отобразить спрайт, не создавая групповой «персонаж».
character = pygame.sprite.Group()
Ship.groups=character
ship=Ship(POS_X,POS_Y)
ship.add(character)
И, наконец, цикл цикла, возможно, есть ошибка в модальностях обновления
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.type == pygame.KEYUP:
'''i've removed the if cycle of event.type
because it's long and unnecessary to
explain why the sprite doesn't appear'''
POS_X+=INCREASE_X
POS_Y+=INCREASE_Y
ship.update(POS_X,POS_Y)
clock.tick(FPS)
#i've tried both, flip and update
pygame.display.flip()
pygame.display.update()
pygame.quit()
В случае, если я полностью просчитал модальности спрайта класса, может ли кто-нибудь объяснить, как установить для этой ситуации класс Ship?