2010-05-19 3 views
1

Так что я просто хотел получить некоторые мнения о общей структуре игры, которую я должен построить для класса программирования.C CLI концепция игры

По существу - я строю две программы - клиент и сервер для игры с линкорами. Я уже написал реальную программу, которая играет в игру линкоров. Программа, которую я написал, - это место, где считывается карта и файл правил, и пользователь пытается угадать местоположение кораблей, пока они не погружат все корабли.

Для этой новой программы - серверу разрешено группировать двух человек друг против друга с помощью игры с линкорами. Клиенты подключаются к игре с использованием имени игры, и как только игра получит двух клиентов, она может начинаться. Мы должны использовать TCP на локальном компьютере для связи между сервером и клиентами, а также потоки, по крайней мере, на сервере.

Вот что я имел в виду ..

После того, как клиент присоединяется - проверить, в какую игру они хотят подключиться. Если это новая игра - создайте новый поток для этой игры и дайте дескриптор сокета для первого клиента. В противном случае, если в игре уже есть один человек, сообщите игровому потоку нового участника, и он может начать игру.

Когда игра началась - игровой поток должен был бы порождать еще два потока. Один экземпляр игры с линкором для каждого игрока. Экземпляром для каждого игрока будет место, где размещаются их корабли. Затем поток будет прослушивать ввод от каждого клиента по очереди и передавать эту информацию в соответствующую игру.

Правильно ли эта интерпретация? Что мне понадобится 3 потока за ход игры? А также, можно ли использовать exec() в потоке для запуска нового экземпляра боевых кораблей, а затем передать информацию в stdin этого экземпляра с помощью потоков (и получить stdout)?

Пожалуйста, дайте мне знать, если я был туман на все, и я уточню. Большое спасибо за любую помощь!

+0

Это не вопрос. –

+1

@Tadeusz A. Kadlubowski: Это куча размытых вопросов, но они определенно * настоящие *. – ereOn

+0

извините, на самом деле не думал об окончательном вопросе. мы могли бы просто сказать, что мой вопрос: действительно ли моя интерпретация или какие-то проблемы? – Gary

ответ

1

Я бы использовал столько потоков, как подключенные клиенты, и использовал их только для обработки соединений. Игры сами по себе являются только данными/объектами и не нуждаются в конкретной теме.

+0

Но как я мог бы запустить игру из программы. Мне нужно будет использовать одну из функций exec() как-то, чтобы начать программу линкоров, нет? – Gary

+0

Подумайте, шаблон MVC. Соединения - это виды, игры - это модели. Вам нужен контроллер для подключения видов и моделей, но он может запускаться из основного потока и управлять множеством игр и подключений. – mouviciel

+0

Я должен не согласиться. Я пробовал это раньше, и это провалилось. Что произойдет, если у вас 1000 подключений? Это означает размножение 1000 потоков и, таким образом, это замедлит все. Но это всего лишь мой оппонент – Sanctus2099

Смежные вопросы