Я пытаюсь написать игру менеджер/контроллер для игры, как крестики-нолики или шашки/шахматы, которая работает так:скриптов Python общаться
игры Арбитр: Управляют геймплей игры и реле противника перемещается к каждому игроку. Также определяет, является ли движение является юридическим один
GamePlayer.py
- Сыграет движение, отвечая на вопрос Арбитра
GameArbiter.py
- будет решить, какой игрок идет первым
- Решает, является ли закон движением
- будет держать ссылку на двух игроков
- задаст правильный плеер для движения и обеспечить текущий GameState
Проблема у меня есть, как будет Арбитра общаться с игроками? Я хотел использовать PIPE.communicate(), но кажется, что он работает только в том случае, если Player заканчивается после каждого запроса .communicate(). Мой код как таковой:
GameArbiter.py:
import subprocess
import sys
player1 = subprocess.Popen([sys.executable, "GamePlayer.py"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
instruction = "GetMove"
out, _ = player1.communicate(instruction.encode())
print(out.decode()) # process input from player
# do some stuff
instruction = "GetMove"
out, _ = player1.communicate(instruction.encode())
print(out.decode()) # process input from player
GamePlayer.py:
instruction = input()
if(instruction == "GetMove"):
print("Bc4xc5")
else:
print("InvalidInstruction")
Конечно, после второго .communicate() питон падает, так как player1 больше не является открытым файл
Мой вопрос: как я могу написать (на python) делегата, который мог бы активно разговаривать с несколькими дочерними асинхронно?
Код абзаца для завершения моих целей - это одно, но я не знаю, как заставить его работать в теории. Это на первый взгляд – Parad0x13