From 2cb7f24a8ee60c64bd1010f32fd1241e1c3bf061 Mon Sep 17 00:00:00 2001 From: David GAILLETON Date: Sat, 28 Feb 2026 14:45:21 +0100 Subject: [PATCH] module 7 01 WIP --- 07/ex1/ArtifactCard.py | 13 ++++++++++++- 07/ex1/Deck.py | 28 +++++++++++++++++++++++++--- 07/ex1/SpellCard.py | 15 +++++++++++++-- 07/ex1/__init__.py | 5 +++++ 4 files changed, 55 insertions(+), 6 deletions(-) diff --git a/07/ex1/ArtifactCard.py b/07/ex1/ArtifactCard.py index 7abe792..47d41fa 100644 --- a/07/ex1/ArtifactCard.py +++ b/07/ex1/ArtifactCard.py @@ -1,4 +1,5 @@ from ex0.Card import Card +from typing import Union class ArtifactCard(Card): @@ -10,7 +11,17 @@ class ArtifactCard(Card): self.effect = effect def play(self, game_state: dict) -> dict: - return super().play(game_state) + try: + res: dict[str, Union[int, str]] = {} + if game_state["mana"] < 2: + raise Exception("Not enough mana") + res["card_played"] = self.name + res["mana_used"] = 2 + res["effect"] = self.effect + return res + except Exception as err: + print(err) + return {} def activate_ability(self) -> dict: pass diff --git a/07/ex1/Deck.py b/07/ex1/Deck.py index f468809..e4b42d1 100644 --- a/07/ex1/Deck.py +++ b/07/ex1/Deck.py @@ -1,4 +1,4 @@ -from ex0.Card import Card +from ex0 import Card, CreatureCard class Deck: @@ -16,10 +16,32 @@ class Deck: print("{card_name} not found") def shuffle(self) -> None: - pass + from random import shuffle + + shuffle(self.cards) def draw_card(self) -> Card: pass def get_deck_stats(self) -> dict: - pass + from . import ArtifactCard, SpellCard + + creatures = 0 + spells = 0 + artifacts = 0 + total_cost = 0.0 + for card in self.cards: + if isinstance(card, CreatureCard): + creatures += 1 + elif isinstance(card, ArtifactCard): + artifacts += 1 + elif isinstance(card, SpellCard): + spells += 1 + total_cost += card.cost + return { + "total_card": len(self.cards), + "creatures": creatures, + "spells": spells, + "artifacts": artifacts, + "avg_cost": total_cost / len(self.cards), + } diff --git a/07/ex1/SpellCard.py b/07/ex1/SpellCard.py index 63e8063..b797dc3 100644 --- a/07/ex1/SpellCard.py +++ b/07/ex1/SpellCard.py @@ -1,4 +1,5 @@ from ex0.Card import Card +from typing import Union class SpellCard(Card): @@ -9,7 +10,17 @@ class SpellCard(Card): self.effect_type = effect_type def play(self, game_state: dict) -> dict: - return super().play(game_state) + try: + res: dict[str, Union[int, str]] = {} + if game_state["mana"] < 3: + raise Exception("Not enough mana") + res["card_played"] = self.name + res["mana_used"] = 3 + res["effect"] = self.effect_type + return res + except Exception as err: + print(err) + return {} - def resolve_effect(self, targets: list) -> dict: + def resolve_effect(self, targets: list) -> dict: pass diff --git a/07/ex1/__init__.py b/07/ex1/__init__.py index e69de29..9b12d58 100644 --- a/07/ex1/__init__.py +++ b/07/ex1/__init__.py @@ -0,0 +1,5 @@ +from . import ArtifactCard, Deck, SpellCard + +__version__ = "1.0.0" +__author__ = "David GAILLETON" +__all__ = ["ArtifactCard", "Deck", "SpellCard"]