mirror of
https://github.com/DavidGailleton/42-Piscine_Python.git
synced 2026-03-14 05:06:55 +01:00
module 7 ex 3
This commit is contained in:
@@ -2,6 +2,7 @@ from .CardFactory import CardFactory
|
||||
from random import choice
|
||||
from ex0 import Card, CreatureCard
|
||||
from ex1 import SpellCard, ArtifactCard
|
||||
from copy import deepcopy
|
||||
|
||||
creature_cards = [
|
||||
CreatureCard("Fire Dragon", 20, "Rare", 7, 20),
|
||||
@@ -9,10 +10,10 @@ creature_cards = [
|
||||
]
|
||||
|
||||
spell_cards = [
|
||||
SpellCard("Fire Ball", 5, "Rare", "Decrase health by 1 for 3 round"),
|
||||
SpellCard("Ice Spike", 3, "Common", "Reduce damage by 2 for 1 round"),
|
||||
SpellCard("Fire Ball", 5, "Rare", "Decrase health by 1 for 3 round", 5),
|
||||
SpellCard("Ice Spike", 3, "Common", "Reduce damage by 2 for 1 round", 3),
|
||||
SpellCard(
|
||||
"Lightning bolt", 10, "Legendary", "Card can't play for 3 round"
|
||||
"Lightning bolt", 10, "Legendary", "Card can't play for 3 round", 10
|
||||
),
|
||||
]
|
||||
|
||||
@@ -20,13 +21,15 @@ artifact_cards = [
|
||||
ArtifactCard(
|
||||
"Mana Ring", 2, "Common", 3, "Increase mana by 1 for each round"
|
||||
),
|
||||
ArtifactCard("Witch Staff", 6, "Legendary", 5, ""),
|
||||
ArtifactCard(
|
||||
"Witch Staff", 6, "Legendary", 5, "Decrease 5 mana of a card"
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
class FantasyCardFactory(CardFactory):
|
||||
def create_creature(self, name_or_power: str | int | None = None) -> Card:
|
||||
card = choice(creature_cards)
|
||||
card = deepcopy(choice(creature_cards))
|
||||
if isinstance(name_or_power, str):
|
||||
card.name = name_or_power
|
||||
elif isinstance(name_or_power, int):
|
||||
@@ -34,13 +37,40 @@ class FantasyCardFactory(CardFactory):
|
||||
return card
|
||||
|
||||
def create_spell(self, name_or_power: str | int | None = None) -> Card:
|
||||
return super().create_spell(name_or_power)
|
||||
card = deepcopy(choice(spell_cards))
|
||||
if isinstance(name_or_power, str):
|
||||
card.name = name_or_power
|
||||
elif isinstance(name_or_power, int):
|
||||
card.mana = name_or_power
|
||||
return card
|
||||
|
||||
def create_artifact(self, name_or_power: str | int | None = None) -> Card:
|
||||
return super().create_artifact(name_or_power)
|
||||
card = deepcopy(choice(artifact_cards))
|
||||
if isinstance(name_or_power, str):
|
||||
card.name = name_or_power
|
||||
elif isinstance(name_or_power, int):
|
||||
card.durability = name_or_power
|
||||
return card
|
||||
|
||||
def create_themed_deck(self, size: int) -> dict:
|
||||
return super().create_themed_deck(size)
|
||||
deck: dict[str, list[Card]] = {}
|
||||
for _ in range(size):
|
||||
card = choice(
|
||||
[
|
||||
self.create_creature(),
|
||||
self.create_artifact(),
|
||||
self.create_spell(),
|
||||
]
|
||||
)
|
||||
if card.name in deck:
|
||||
deck[card.name] += [card]
|
||||
else:
|
||||
deck[card.name] = [card]
|
||||
return deck
|
||||
|
||||
def get_supported_types(self) -> dict:
|
||||
return super().get_supported_types()
|
||||
return {
|
||||
"creatures": [card.name for card in creature_cards],
|
||||
"spells": [card.name for card in spell_cards],
|
||||
"artifacts": [card.name for card in artifact_cards],
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user