I'm FanJae.

[Two Faced Poker] Day 2. Server 로직 개선 및 Client Game 판 구성. 본문

Toy Project/Two Faced Poker

[Two Faced Poker] Day 2. Server 로직 개선 및 Client Game 판 구성.

FanJae 2024. 10. 14. 23:14

1. Server 로직 개선

 

1-1. 서버 입장 및 퇴장시 ID 정보 처리.

- 입장 처리

if (chatRooms.find(roomName) != chatRooms.end())
{
	send_message = roomName;
	chatRooms[message].insert(socket);
	for (SOCKET target_socket : chatRooms[this->roomName])
	{
		if (socket != target_socket)
		{
			join_message = this->ID + " Joined.";
			send(target_socket, join_message.c_str(), join_message.length(), 0);
		}
	}
}
else
{
	send_message = NOT_EXIST_ROOM;
}

- 퇴장 처리

for (SOCKET target_socket : chatRooms[this->roomName])
{
	if (socket != target_socket)
	{
		exit_message = this->ID + " exited.";
		send(target_socket, exit_message.c_str(), exit_message.length(), 0);
	}
}

chatRooms[roomName].erase(this->socket);
const std::lock_guard<std::mutex> lock(chatRoom_mutex);
if (chatRooms[roomName].empty())
{
	chatRooms.erase(roomName);
}

 

- 방에 입장하는 인원 및 나가는 인원에 대한 처리를 진행하였다.

 

1-2. 채팅시 ID 처리

void ClientEventHandler:: Handle_Room_Message(const std::string& message)
{
	std::cout << "[Log] : roomName : " << this->roomName << "Message : " << message << std::endl;
	std::string send_message = "[" + this->ID + "]" + message;

	for (SOCKET target_socket : chatRooms[this->roomName])
	{
		send(target_socket, send_message.c_str(), send_message.length(), 0);
	}
}

- 채팅시 ID를 구분할 수 있게 처리 해놨다. 


2. Client Game 판 구성

- 채팅룸 옆에 기본적인 게임판이 만들어지도록 처리해놨다.

- 적당한 위치에 게임 시작을 위한 버튼이나 실제 게임에서 사용할 베팅 버튼 등을 넣고 실제 게임 진행을 처리 해야한다.


3. TODO

 

1) Server

- 방의 인원수 제한 처리 (게임하는 인원외에 들어갈 수 없도록 처리)

- 게임 로직 처리 (카드 비교 및 베팅에 따른 정보 처리 등)

 

2) Client

- 게임 판에서 사용될 버튼 GUI 넣는 작업

- 게임 로직 처리

 

※ 게임 로직 처리에 대해서는 별도로 포스트를 다루고자 한다. (Server가 처리하는 영역과 Client가 처리하는 영역을 구분하기 위함이다.)

Comments