Skip to content

WooSeob/web-catchmind-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

  1. 개요

    • '캐치마인드'라는 게임을 node.js와 Angular, socket.io를 통해서 웹 버전으로 구현했습니다. 웹서버 프레임워크는 Express를 사용했으며 데이터베이스는 mongoDB를, ODM은 mongoose를 사용했습니다. 객체지향적 특징을 더 잘 활용할 수 있도록 백엔드 또한 TypeScript로 구현했습니다.

    • DB server는 mongoDB atlas cloud를 사용했으며 프로덕트는 heroku에 배포중입니다.

      캐치마인드

      자기 차례에 해당하는 유저는 제시어에 대해 그림을 그리고 나머지 유저들은 그림을 통해 제시어를 추측하는 게임입니다.

  2. 특징

    • MAP 자료구조를 통한 방 관리

      서버에서 방을 관리하기 위해서 방 id를 키로 하고 방 객체를 값으로 하는 Map을 사용하고 방 찾기 요청이 들어오면 존재하는 방 중 참여인원이 가장 작은방의 id를 반환하거나 새로 방을 생성하고 방의 id를 반환하도록 구현했습니다.

    • 스테이트 패턴과 템플릿 메서드 패턴을 통한 게임 진행 로직 구현

      설정된 게임 시간과 라운드 수에 따라 게임은 자동적으로 진행되어야 하고 각 상황마다 유저들이 행할 수 있는 행동이 다르기 때문에 스테이트 패턴을 사용해 게임 진행 로직을 구성했습니다. 또한 스테이트가 바뀔 때마다 클라이언트 모두 스테이트를 동기화하고 필요한 정보를 송신해야 했기 때문에 템플릿 메서드 패턴을 사용했습니다.

    • 스트래티지 패턴을 통한 그리기 모드 구현

      클라이언트에서 유저가 그림을 그릴 때 펜 모드 인지 지우개 모드인지에 따라 다르게 작동할 수 있도록, 더욱이 다른 그리기 도구가 추가될 가능성을 염두에 두어 스트래티지 패턴을 통해 그림 그리기를 구현했습니다.

About

Express, Socket.io를 활용했고, TypeScript로 작성된 캐치마인드 웹버전 Node 서버 입니다.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors