box-o-sand/hyrule/hyrule.py

67 lines
1.4 KiB
Python

#!/usr/bin/env python3
import argparse
import dataclasses
import pprint
import sys
import typing
import cards
def main():
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
parser.add_argument(
"--player-count", "-c", default=2, type=int, help="The number of players"
)
parser.add_argument(
"--turn-count",
"-n",
default=5,
type=int,
help="The number of turns to play",
)
args = parser.parse_args()
Hyrule(player_count=args.player_count, turn_count=args.turn_count).play()
return 0
@dataclasses.dataclass
class Player:
index: int
hand: typing.Set[cards.Card]
captured: typing.Set[cards.Card]
@property
def score(self):
return len(self.captured)
class Hyrule:
def __init__(self, player_count=2, turn_count=5):
self._players = [
Player(index=i, hand=set(), captured=set()) for i in range(player_count)
]
self._turn_count = turn_count
def play(self):
for turn in self._each_turn():
self._show_turn(turn)
def _each_turn(self):
for turn_number in range(self._turn_count):
yield self._simulate_turn(turn_number)
def _simulate_turn(self, turn_number):
...
def _show_turn(self, turn):
print(turn)
if __name__ == "__main__":
sys.exit(main())