More silly bits with hyrule modeling/sim

This commit is contained in:
Dan Buch 2022-01-27 21:25:44 -05:00
parent fbb04df86d
commit c52d9b9563
Signed by: meatballhat
GPG Key ID: A12F782281063434

View File

@ -1,6 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import argparse import argparse
import dataclasses
import pprint import pprint
import sys import sys
import typing import typing
@ -8,15 +9,6 @@ import typing
import cards import cards
class Player:
hand: typing.Set[cards.Card]
captured: typing.Set[cards.Card]
@property
def score(self):
return len(self.captured)
def main(): def main():
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter formatter_class=argparse.ArgumentDefaultsHelpFormatter
@ -33,25 +25,41 @@ def main():
) )
args = parser.parse_args() args = parser.parse_args()
for turn in _simulate_game( Hyrule(player_count=args.player_count, turn_count=args.turn_count).play()
player_count=args.player_count, turn_count=args.turn_count
):
_show_turn(turn)
return 0 return 0
def _simulate_game(player_count=2, turn_count=5): @dataclasses.dataclass
for turn in range(turn_count): class Player:
yield _simulate_turn(player_count=player_count) index: int
hand: typing.Set[cards.Card]
captured: typing.Set[cards.Card]
@property
def score(self):
return len(self.captured)
def _simulate_turn(player_count=2): 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 _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__": if __name__ == "__main__":