내 게임에 두 개의 스프라이트를 만들려고합니다. 하나는 Player1
이고 다른 하나는 Player2
입니다. 따라서 매우 유사한 속성을 갖게됩니다. 내 Player1
클래스에 대해 가지고있는 모든 메소드를 어떻게 사용할 수 있는지 알아 내려고 노력 중입니다. Player2
클래스입니다. 내 Player2
클래스를 만들 때다른 클래스에서 한 클래스의 메서드를 사용합니까?
class Player2(pygame.sprite.Sprite):
def __init__(self):
Player1.__init__(self)
self.rect.x = 400
self.walkImages = ["p2 walk/Run (1).png", "p2 walk/Run (2).png", "p2 walk/Run (3).png", "p2 walk/Run (4).png", "p2 walk/Run (5).png", "p2 walk/Run (6).png", "p2 walk/Run (7).png",
"p2 walk/Run (8).png"]
self.idleImages = ["p2 idle/Idle (1).png", "p2 idle/Idle (2).png", "p2 idle/Idle (3).png", "p2 idle/Idle (4).png", "p2 idle/Idle (5).png", "p2 idle/Idle (6).png", "p2 idle/Idle (7).png",
"p2 idle/Idle (8).png", "p2 idle/Idle (9).png", "p2 idle/Idle (10).png"]
def update(Player1, blocksGroup):
pass
, 나는 Player1
에서 상속합니다. 그러나, 내 업데이트 방법으로 이론적으로 Player1
동일합니다. Player1
의 업데이트 방법을 어떻게 사용합니까? 여기
Player1
의 업데이트 방법 :
Player1
에서
def update(self, blocksGroup):
self.gravity()
if self.velx == 0:
self.walkFrame = 1
self.idleFrame += 1
if self.idleFrame == 42:
self.idleFrame = 0
if self.idleFrame % 3 == 0:
self.image = pygame.image.load(self.idleImages[self.idleFrame // 3])
if self.direction == "left":
self.image = pg.transform.flip(self.image, True, False)
#Block collision
self.rect.x += self.velx
block_hit_list = pygame.sprite.spritecollide(self, blocksGroup, False)
for block in block_hit_list:
if self.velx > 0:
self.rect.right = block.rect.left
elif self.velx < 0:
self.rect.left = block.rect.right
self.rect.y += self.vely
block_hit_list = pygame.sprite.spritecollide(self, blocksGroup, False)
for block in block_hit_list:
if self.vely > 0:
self.rect.bottom = block.rect.top
self.jumps = 2
elif self.vely < 0:
self.rect.top = block.rect.bottom
'Player2'가'Player1'에서 [s]를 상속한다고 말하면, 표시된 코드가 일치하지 않습니다. 아마도'class Player2 (Player1)'을 원할 것입니다. 문제를 해결하는보다 자연스러운 방법은 공통 부분을 두 플레이어가 상속 할 수있는 기본 클래스로 이동하는 것입니다. – Blckknght
당신이 실제로 같은 클래스의 두 개의 다른 인스턴스를 원한다고합니다. 하나는 플레이어 1의 이미지이고 다른 하나는 플레이어 2의 이미지입니다.이 가정은 맞습니까? BTW, 업데이트 방법에서 하드 디스크의 이미지를로드하지 마십시오. 글로벌 범위 또는 다른 모듈에서이를 수행하고 클래스에서 참조하십시오. – skrx