将2个for循环组合为一个循环(循环对象)



所以我正在写一个非常基本的纸牌游戏,两个玩家每人有一副牌。每张牌(物体(都有生命值和伤害值。在";战斗;每个玩家都必须对敌人造成伤害(遍历他牌组中的每张牌(,然后轮到其他玩家。这是战斗的代码:

from project.player.player import Player

class BattleField:
@staticmethod
def fight(attacker: Player, enemy: Player):
for x in (attacker, enemy):
if x.is_dead:
raise ValueError("Player is dead!")
if x.__class__.__name__ == 'Beginner':
x.health += 40
for card in x.card_repository.cards:
card.damage_points += 30
health_bonus = sum(card.health_points for card in x.card_repository.cards)
x.health += health_bonus
for card in attacker.card_repository.cards:
enemy.health -= card.damage_points
if enemy.is_dead:
raise ValueError("Player is dead!")
for card in enemy.card_repository.cards:
attacker.health -= card.damage_points
if attacker.is_dead:
raise ValueError("Player is dead!")

我的问题是,这两个for循环(用于造成伤害(能否合并为一个循环,以及如何合并。提前谢谢。

您可以创建一个新方法并调用两次:

@staticmethod
def iterate_cards(attacker, enemy):
for card in attacker.card_repository.cards:
enemy.health -= card.damage_points
if enemy.is_dead:
raise ValueError("Player is dead!")

在您的fight方法中:

def fight(self, attacker: Player, enemy: Player):
...
self.iterate_cards(attacker, enemy)
self.iterate_cards(enemy, attacker)

最新更新