Eric Botti commited on
Commit
ae85ba5
·
1 Parent(s): 057fb29

started game abstraction

Browse files
Files changed (3) hide show
  1. src/app.py +3 -3
  2. src/game.py +17 -10
  3. src/main.py +3 -3
src/app.py CHANGED
@@ -3,7 +3,7 @@ from typing import Type
3
  import streamlit as st
4
  from streamlit import session_state
5
 
6
- from game import Game
7
  from agent_interfaces import HumanAgentInterface
8
  from message import Message
9
  from prompts import fetch_prompt, format_prompt
@@ -36,7 +36,7 @@ class StreamlitInterface(HumanAgentInterface):
36
  return session_state.user_input
37
 
38
 
39
- class StreamlitGame(Game):
40
  """A Streamlit version of the Game class that uses a state machine to manage the game state."""
41
 
42
  def run_game(self):
@@ -141,7 +141,7 @@ with center:
141
 
142
  if user_input:
143
  if "game" not in st.session_state:
144
- st.session_state.game = StreamlitGame(human_name=user_input, verbose=True, human_interface=StreamlitInterface)
145
  session_state.user_input = user_input
146
  st.session_state.game.run_game()
147
 
 
3
  import streamlit as st
4
  from streamlit import session_state
5
 
6
+ from game import ChameleonGame
7
  from agent_interfaces import HumanAgentInterface
8
  from message import Message
9
  from prompts import fetch_prompt, format_prompt
 
36
  return session_state.user_input
37
 
38
 
39
+ class StreamlitChameleonGame(ChameleonGame):
40
  """A Streamlit version of the Game class that uses a state machine to manage the game state."""
41
 
42
  def run_game(self):
 
141
 
142
  if user_input:
143
  if "game" not in st.session_state:
144
+ st.session_state.game = StreamlitChameleonGame(human_name=user_input, verbose=True, human_interface=StreamlitInterface)
145
  session_state.user_input = user_input
146
  st.session_state.game.run_game()
147
 
src/game.py CHANGED
@@ -16,7 +16,23 @@ NUMBER_OF_PLAYERS = 6
16
  WINNING_SCORE = 3
17
 
18
 
 
19
  class Game:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  """The main game class, handles the game logic and player interactions."""
21
 
22
  winning_score = WINNING_SCORE
@@ -30,15 +46,8 @@ class Game:
30
  verbose: bool = False,
31
  debug: bool = False
32
  ):
 
33
  # Instance Variables
34
- self.game_id = game_id()
35
- """The unique id of the game."""
36
- self.start_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
37
- """The time the game was started."""
38
- self.verbose = verbose
39
- """If True, the game will display verbose messages to the player."""
40
- self.debug = debug
41
- """If True, the game will display debug messages to the player."""
42
  self.chameleon_ids: List[str] = []
43
  """Record of which player was the chameleon for each round."""
44
  self.herd_animals: List[str] = []
@@ -49,8 +58,6 @@ class Game:
49
  """Record of what animal the chameleon guessed for each round."""
50
  self.herd_vote_tallies: List[List[dict]] = []
51
  """Record of the votes of each herd member for the chameleon for each round."""
52
- self.winner_id: str | None = None
53
- """The id of the player who has won the game."""
54
 
55
  # Gather Player Names
56
  if human_name:
 
16
  WINNING_SCORE = 3
17
 
18
 
19
+ # Abstracting the Game Class is a WIP so that future games can be added
20
  class Game:
21
+ """Base class for all games."""
22
+ def __init__(self, verbose: bool = False, debug: bool = False):
23
+ self.game_id = game_id()
24
+ """The unique id of the game."""
25
+ self.start_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
26
+ """The time the game was started."""
27
+ self.verbose = verbose
28
+ """If True, the game will display verbose messages to the player."""
29
+ self.debug = debug
30
+ """If True, the game will display debug messages to the player."""
31
+ self.winner_id: str | None = None
32
+ """The id of the player who has won the game."""
33
+
34
+
35
+ class ChameleonGame(Game):
36
  """The main game class, handles the game logic and player interactions."""
37
 
38
  winning_score = WINNING_SCORE
 
46
  verbose: bool = False,
47
  debug: bool = False
48
  ):
49
+ super().__init__(verbose, debug)
50
  # Instance Variables
 
 
 
 
 
 
 
 
51
  self.chameleon_ids: List[str] = []
52
  """Record of which player was the chameleon for each round."""
53
  self.herd_animals: List[str] = []
 
58
  """Record of what animal the chameleon guessed for each round."""
59
  self.herd_vote_tallies: List[List[dict]] = []
60
  """Record of the votes of each herd member for the chameleon for each round."""
 
 
61
 
62
  # Gather Player Names
63
  if human_name:
src/main.py CHANGED
@@ -1,4 +1,4 @@
1
- from game import Game
2
  from player import Player
3
  import asyncio
4
  from player import Player
@@ -8,9 +8,9 @@ def main():
8
  name = input()
9
 
10
  if name:
11
- game = Game(human_name=name, verbose=True)
12
  else:
13
- game = Game(verbose=True)
14
 
15
  asyncio.run(game.run_game())
16
 
 
1
+ from game import ChameleonGame
2
  from player import Player
3
  import asyncio
4
  from player import Player
 
8
  name = input()
9
 
10
  if name:
11
+ game = ChameleonGame(human_name=name, verbose=True)
12
  else:
13
+ game = ChameleonGame(verbose=True)
14
 
15
  asyncio.run(game.run_game())
16