2010-05-19 11 views
1

그래서 프로그래밍 클래스를 구축해야하는 게임의 전반적인 구조에 대한 의견을 듣고 싶었습니다.C CLI 게임 개념

기본적으로 나는 전함 게임을위한 클라이언트와 서버라는 두 가지 프로그램을 만들고 있습니다. 나는 이미 전함 게임을하는 실제 프로그램을 작성했습니다. 필자가 작성한 프로그램은지도와 규칙 파일을 읽고 사용자가 모든 함선을 가라 앉힐 때까지 배의 위치를 ​​추측하려고 시도하는 곳입니다.

이 새로운 프로그램의 경우 서버는 전장 게임을 사용하여 두 사람의 그룹이 서로 대결 할 수 있도록해야합니다. 클라이언트는 게임 이름을 사용하여 게임에 연결하고 일단 게임이 두 개의 클라이언트를 받으면 시작할 수 있습니다. 우리는 로컬 머신에서 TCP를 사용하여 서버와 클라이언트 사이의 통신은 물론 적어도 서버의 스레드까지 통신해야합니다. 그들이에 연결하고자하는 게임 확인 -

는 여기가 클라이언트 접속하면

.. 무슨 생각입니다. 새로운 게임 인 경우 - 해당 게임에 대한 새 스레드를 만들고 첫 번째 클라이언트에 대한 소켓 설명자를 제공하십시오. 그렇지 않으면 이미 게임에 사람이 한 명이 있다면 새로운 참가자의 게임 스레드에 경고하고 게임을 시작할 수 있습니다.

게임이 시작되면 게임 스레드가 두 개의 스레드를 생성해야합니다. 각 플레이어의 전함 게임 하나가 생성됩니다. 각 플레이어의 인스턴스는 배송 위치입니다. 스레드는 차례로 각 클라이언트로부터의 입력을 수신하고 해당 정보를 해당 게임에 전달합니다.

이 해석이 정확합니까? 달리기 게임 당 3 개의 쓰레드가 필요합니까? 또한 스레드에서 exec()를 사용하여 새로운 Battleships 인스턴스를 실행 한 다음 스레드를 사용하여 해당 인스턴스의 표준 입력 정보를 전달할 수 있습니까 (stdout 가져 오기)?

내가 헷갈 렸는지 여부를 알려 주시면 설명해 드리겠습니다. 어떤 도움을 주셔서 감사드립니다.

+0

그건 진짜 질문이 아닙니다. –

+1

@ Tadeusz A. Kadlubowski : 모호한 질문이지만, 분명히 * 진짜 *입니다. – ereOn

+0

죄송합니다. 확실한 질문은 실제로 생각하지 않았습니다. 우리는 단지 나의 질문은 내 해석이 유효한지 아니면 몇 가지 문제를 포함하고 있다고 말할 수 있을까? – Gary

답변

1

연결된 클라이언트만큼 많은 스레드를 사용하고 연결 처리에만 사용합니다. 게임 자체는 단지 데이터/객체이며 특정 스레드가 필요하지 않습니다.

+0

그러나 실제로 프로그램에서 게임을 실제로 실행하는 방법은 무엇입니까? 어떻게 든 전함 프로그램을 시작하려면 exec() 함수 중 하나를 사용해야 할 것입니다. – Gary

+0

MVC 패턴을 생각하십시오. 연결은 전망이고, 게임은 모델입니다. 뷰와 모델을 연결하는 컨트롤러가 필요하지만 메인 스레드에서 실행하고 많은 게임과 연결을 제어 할 수 있습니다. – mouviciel

+0

나는 동의해야한다. 전에도 해봤지만 실패했습니다. 1000 개의 연결이 있으면 어떻게됩니까? 이것은 1000 개의 스레드를 반대하므로 모든 것을 느리게 만듭니다. 하지만 그것은 내 동료 야. – Sanctus2099