回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试为我的游戏创建两个精灵,一个是<code>Player1</code>,另一个是<code>Player2</code>,因此它们的属性非常相似。我正在尝试解决如何将我的<code>Player1</code>类的所有方法与我的<code>Player2</code>类一起使用</p>
<pre><code>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
</code></pre>
<p>创建<code>Player2</code>类时,我从<code>Player1</code>继承。然而,在我的update方法中,理论上它与<code>Player1</code>是相同的。如何使用<code>Player1</code>的方法进行更新</p>
<p>以下是<code>Player1</code>的更新方法:</p>
<pre><code> 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
</code></pre>