Skip to content

Commit

Permalink
Merge pull request #118 from jbw3/alchemy
Browse files Browse the repository at this point in the history
Alchemy
  • Loading branch information
evanofslack authored Sep 3, 2024
2 parents 1029a42 + c1d47d4 commit d39b4fd
Show file tree
Hide file tree
Showing 42 changed files with 2,866 additions and 566 deletions.
58 changes: 29 additions & 29 deletions pyminion/bots/bot.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import TYPE_CHECKING, Iterator, List, Optional, Sequence
from typing import TYPE_CHECKING, Iterator, Sequence

from pyminion.core import Card
from pyminion.decider import Decider
Expand Down Expand Up @@ -36,10 +36,10 @@ def action_priority(self, player: "Player", game: "Game") -> Iterator[Card]:

def action_phase_decision(
self,
valid_actions: List["Card"],
valid_actions: list[Card],
player: "Player",
game: "Game",
) -> Optional["Card"]:
) -> Card|None:
for card in self.action_priority(player, game):
if card in player.hand.cards:
return card
Expand All @@ -48,10 +48,10 @@ def action_phase_decision(

def treasure_phase_decision(
self,
valid_treasures: List["Card"],
valid_treasures: list[Card],
player: "Player",
game: "Game",
) -> List["Card"]:
) -> list[Card]:
return valid_treasures

def buy_priority(self, player: "Player", game: "Game") -> Iterator[Card]:
Expand All @@ -66,10 +66,10 @@ def buy_priority(self, player: "Player", game: "Game") -> Iterator[Card]:

def buy_phase_decision(
self,
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
) -> Optional["Card"]:
) -> Card|None:
for card in self.buy_priority(player, game):
if game.supply.pile_length(card.name) > 0:
return card
Expand All @@ -90,67 +90,67 @@ def binary_decision(
card: Card,
player: "Player",
game: "Game",
relevant_cards: Optional[List[Card]] = None,
relevant_cards: list[Card]|None = None,
) -> bool:
return True

def multiple_option_decision(
self,
card: "Card",
options: List[str],
options: list[str],
player: "Player",
game: "Game",
num_choices: int = 1,
unique: bool = True,
) -> List[int]:
) -> list[int]:
return list(range(num_choices))

def discard_decision(
self,
prompt: str,
card: "Card",
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
min_num_discard: int = 0,
max_num_discard: int = -1,
) -> List["Card"]:
) -> list[Card]:
return valid_cards[:min_num_discard]

def trash_decision(
self,
prompt: str,
card: "Card",
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
min_num_trash: int = 0,
max_num_trash: int = -1,
) -> List["Card"]:
) -> list[Card]:
return valid_cards[:min_num_trash]

def gain_decision(
self,
prompt: str,
card: "Card",
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
min_num_gain: int = 0,
max_num_gain: int = -1,
) -> List["Card"]:
) -> list[Card]:
return valid_cards[:min_num_gain]

def topdeck_decision(
self,
prompt: str,
card: "Card",
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
min_num_topdeck: int = 0,
max_num_topdeck: int = -1,
) -> List["Card"]:
) -> list[Card]:
return valid_cards[:min_num_topdeck]

def deck_position_decision(
Expand All @@ -167,47 +167,47 @@ def reveal_decision(
self,
prompt: str,
card: "Card",
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
min_num_reveal: int = 0,
max_num_reveal: int = -1,
) -> List["Card"]:
) -> list[Card]:
return valid_cards[:min_num_reveal]

def pass_decision(
self,
prompt: str,
card: "Card",
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
min_num_pass: int = 0,
max_num_pass: int = -1,
) -> List["Card"]:
) -> list[Card]:
return valid_cards[:min_num_pass]

def name_card_decision(
self,
prompt: str,
card: "Card",
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
min_num_name: int = 0,
max_num_name: int = -1,
) -> List["Card"]:
) -> list[Card]:
return valid_cards[:min_num_name]

def multi_play_decision(
self,
prompt: str,
card: "Card",
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
required: bool = True,
) -> Optional["Card"]:
) -> Card|None:
if required:
return valid_cards[0]
else:
Expand All @@ -217,12 +217,12 @@ def set_aside_decision(
self,
prompt: str,
card: "Card",
valid_cards: List["Card"],
valid_cards: list[Card],
player: "Player",
game: "Game",
min_num_set_aside: int = 0,
max_num_set_aside: int = -1,
) -> List["Card"]:
) -> list[Card]:
return valid_cards[:min_num_set_aside]


Expand All @@ -234,7 +234,7 @@ class Bot(Player):

def __init__(
self,
decider: Optional[Decider] = None,
decider: Decider|None = None,
player_id: str = "bot",
):
decider = decider if decider else BotDecider()
Expand Down
Loading

0 comments on commit d39b4fd

Please sign in to comment.