Я новичок в pygame и пытаюсь заставить изображение (Player1) двигаться в ООП.Сначала я использовал процедурный метод, и он работал, но когда я перевел его в формат ООП, изображение больше не работает.
Это код, который я использовал при выполнении процедурного программирования, который я получил, адаптировав код, найденный из https://www.pygame.org/docs/ref/key.html#comment_pygame_key_name
#Moving player
import pygame
pygame.init()
ScreenSize = 1200, 600
Screen = pygame.display.set_mode(ScreenSize)
Screen.fill([255, 255, 255])
XPos = 0
YPos = 0
Plyr = []
PlyrRct = []
Background = pygame.image.load('carpet.jpg')
Player = pygame.image.load('player.jpg')
PlayerTemp = Player.subsurface(1, 0, 64, 64)
PlayerRectTemp = PlayerTemp.get_rect()
Plyr.append(PlayerTemp)
PlyrRct.append(PlayerRectTemp)
End = False
while not End:
Key = pygame.key.get_pressed()
if Key[pygame.K_a]:
XPos -= 4
if Key[pygame.K_d]:
XPos += 4
if Key[pygame.K_w]:
YPos -= 4
if Key[pygame.K_s]:
YPos += 4
Background = pygame.image.load('carpet.jpg')
Screen.blit(Background, (0, 0))
PlyrRct[0].left = XPos
PlyrRct[0].top = YPos
Screen.blit(Plyr[0], PlyrRct[0])
for event in pygame.event.get():
if event.type==pygame.QUIT:sys.exit()
pygame.display.flip()
Это в настоящее время моя программа oop
# Player Move test
import pygame
pygame.init()
class LoadImages(object):
def __init__(self, Image, Top, Left, Width, Height):
self.Image = pygame.image.load(Image)
self.Top = Top
self.Bottom = Top + Height
self.Left = Left
self.Right = Left + Width
class Player(LoadImages):
def __init__(self, Image, Top, Left, Width, Height):
LoadImages.__init__(self, Image, Top, Left, Width, Height)
def Move(self, A, D, W, S):
#self.CheckCollision()
if A:
self.Left -= 4
self.Right -= 4
if D:
self.Left += 4
self.Right += 4
if W:
self.Top += 4
self.Bottom += 4
if S:
self.Top -= 4
self.Bottom -= 4
#def CheckCollision(self):
#print ()
class Item(LoadImages):
def __init__(self, Image, Top, Left, Width, Height):
LoadImages.__init__(self, Image, Top, Left, Width, Height)
#def Examine(self):
#print ()
Player1 = Player("player.jpg", 0, 0, 300, 300)
Item1 = Item("player.jpg", 0, 0, 300, 300)
Background = pygame.image.load("carpet.jpg")
ScreenSize = 1200, 600
Screen = pygame.display.set_mode(ScreenSize)
Screen.fill([255, 255, 255])
End = False
while not End:
Screen.blit(Background, (0, 0))
Screen.blit(Player1.Image, (Player1.Top, Player1.Left))
pygame.display.update()
Key = pygame.key.get_pressed()
Player1.Move(Key[pygame.K_a], Key[pygame.K_d], Key[pygame.K_w], Key[pygame.K_s])
Я ожидаю, что изображение (Player1) будет двигаться на экране, но оно никуда не будет перемещаться.Изображения в программе используются только для тестирования и будут заменены на .png