write_game_code.py
1 import asyncio 2 import time 3 4 from metagpt.environment.mgx.mgx_env import MGXEnv 5 from metagpt.roles.di.engineer2 import Engineer2 6 from metagpt.roles.di.team_leader import TeamLeader 7 from metagpt.schema import Message 8 9 10 async def main(requirement="", user_defined_recipient="", enable_human_input=False, allow_idle_time=30): 11 env = MGXEnv() 12 env.add_roles([TeamLeader(), Engineer2()]) 13 14 msg = Message(content=requirement) 15 env.attach_images(msg) # attach image content if applicable 16 17 if user_defined_recipient: 18 msg.send_to = {user_defined_recipient} 19 env.publish_message(msg, user_defined_recipient=user_defined_recipient) 20 else: 21 env.publish_message(msg) 22 23 allow_idle_time = allow_idle_time if enable_human_input else 1 24 start_time = time.time() 25 while time.time() - start_time < allow_idle_time: 26 if not env.is_idle: 27 await env.run() 28 start_time = time.time() # reset start time 29 30 31 if __name__ == "__main__": 32 requirement = "Write code for a 2048 game" 33 user_defined_recipient = "" 34 35 asyncio.run( 36 main( 37 requirement=requirement, 38 user_defined_recipient=user_defined_recipient, 39 enable_human_input=False, 40 allow_idle_time=60, 41 ) 42 )