Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 더 지니어스 양면포커
- virtual function
- vector capacity
- constructor
- member function pointer
- pointer to member data
- discord bot
- virtual function table
- vector size
- diamond inheritance
- increment operator
- delete function
- placement new
- return by reference
- this call
- operator overloading
- base from member
- new&delete
- std::vector
- virtual destructor
- std::cout
- c++ basic practice
- dynamic_cast
- std::ostream
- conversion constructor
- virtual inheritance
- std::endl
- C++
- suffix return type
- c++ multi chatting room
Archives
- Today
- Total
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:141. 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가 처리하는 영역을 구분하기 위함이다.)
'Toy Project > Two Faced Poker' 카테고리의 다른 글
[Two Faced Poker] Day 5. Server 리팩토링 I. 대공사 (0) | 2024.10.17 |
---|---|
[Two Faced Poker] Day 4. 방에 아이디 정보나 준비 상태 정보를 받아오기 (7) | 2024.10.16 |
[Two Faced Poker] Day 3. Server 방 인원수 제한 및 GameManager 추가, Client GUI 버튼 추가 (1) | 2024.10.15 |
[Two Faced Poker] Day 1. 일부 기능 추가 및 Client 로직 개선 (7) | 2024.10.08 |
[Two Faced Poker] Day 0. 양면 포커 프로젝트 (0) | 2024.10.07 |
Comments