mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-05-01 20:03:28 +02:00
use WerewolfEnv
This commit is contained in:
parent
05b0f5782b
commit
f54bb159b5
9 changed files with 67 additions and 200 deletions
|
|
@ -1,51 +1,12 @@
|
|||
import asyncio
|
||||
import random
|
||||
|
||||
import fire
|
||||
|
||||
from metagpt.ext.werewolf.roles import Guard, Moderator, Seer, Villager, Werewolf, Witch
|
||||
from metagpt.ext.werewolf.roles.human_player import prepare_human_player
|
||||
from metagpt.ext.werewolf.werewolf_game import WerewolfGame
|
||||
from metagpt.logs import logger
|
||||
|
||||
|
||||
def init_game_setup(
|
||||
shuffle=True,
|
||||
add_human=False,
|
||||
use_reflection=True,
|
||||
use_experience=False,
|
||||
use_memory_selection=False,
|
||||
new_experience_version="",
|
||||
):
|
||||
roles = [Villager, Villager, Werewolf, Werewolf, Guard, Seer, Witch]
|
||||
if shuffle:
|
||||
# random.seed(2023)
|
||||
random.shuffle(roles)
|
||||
if add_human:
|
||||
assigned_role_idx = random.randint(0, len(roles) - 1)
|
||||
assigned_role = roles[assigned_role_idx]
|
||||
roles[assigned_role_idx] = prepare_human_player(assigned_role)
|
||||
|
||||
players = [
|
||||
role(
|
||||
name=f"Player{i+1}",
|
||||
use_reflection=use_reflection,
|
||||
use_experience=use_experience,
|
||||
use_memory_selection=use_memory_selection,
|
||||
new_experience_version=new_experience_version,
|
||||
)
|
||||
for i, role in enumerate(roles)
|
||||
]
|
||||
|
||||
if add_human:
|
||||
logger.info(f"You are assigned {players[assigned_role_idx].name}({players[assigned_role_idx].profile})")
|
||||
|
||||
game_setup = ["Game setup:"] + [f"{player.name}: {player.profile}," for player in players]
|
||||
game_setup = "\n".join(game_setup)
|
||||
|
||||
return game_setup, players
|
||||
|
||||
|
||||
async def start_game(
|
||||
investment: float = 3.0,
|
||||
n_round: int = 5,
|
||||
|
|
@ -57,7 +18,10 @@ async def start_game(
|
|||
new_experience_version: str = "",
|
||||
):
|
||||
game = WerewolfGame()
|
||||
game_setup, players = init_game_setup(
|
||||
game_setup, players = game.env.init_game_setup(
|
||||
role_uniq_objs=[Villager, Werewolf, Guard, Seer, Witch],
|
||||
num_werewolf=2,
|
||||
num_villager=2,
|
||||
shuffle=shuffle,
|
||||
add_human=add_human,
|
||||
use_reflection=use_reflection,
|
||||
|
|
@ -65,10 +29,12 @@ async def start_game(
|
|||
use_memory_selection=use_memory_selection,
|
||||
new_experience_version=new_experience_version,
|
||||
)
|
||||
logger.info(f"game_setup\n{game_setup}")
|
||||
|
||||
players = [Moderator()] + players
|
||||
game.hire(players)
|
||||
game.invest(investment)
|
||||
game.start_project(game_setup)
|
||||
game.run_project(game_setup)
|
||||
await game.run(n_round=n_round)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue