Advanced Tic-Tac-Toe
객체 지향 프로그래밍과 자료구조 강의 설계 프로젝트
C++ MFC



본 프로젝트는 Advanced Tic-Tac-Toe 게임을 개발하는 것이 목표입니다. 클래스를 적절히 설계하고 두 종류 이상의 자료구조를 사용하여야 합니다.
저는 다음과 같이 클래스를 설계하였습니다.
Card는 카드 모양과 번호를 가집니다.Player는 하나 이상의Card를 가집니다.Slot은 하나 이상의Card를 가지며, 조건에 따라Card가 추가될 수 있습니다.Board는 하나 이상의Slot을 가지며, 빙고가 완성되었는지 확인할 수 있습니다.Dealer는 중복되지 않는Card를 생성합니다.Game은 다른 클래스를 초기화하고 게임의 상태를 업데이트합니다.
Player로부터 임의의 Card를 가져올 수 있어야 하므로 Card를 Linked-List로 관리하였습니다.
Board는 Slot으로 구성된 토폴로지에서 빙고를 찾아야 하므로 Slot을 Graph로 관리하였습니다.
Dealer는 중복 없이 생성된 무작위 순서의 숫자를 Queue로 가지고 있습니다.
한 세션의 게임에서 Card의 모양과 번호 조합은 유일해야 하고 반드시 하나의 인스턴스만 존재해야 하므로 Delaer만이 Card를 std::unique_ptr로 인스턴스화할 수 있도록 설계했습니다.
추가 구현으로 게임의 상태를 JSON으로 저장하고 불러올 수 있는 기능을 구현했습니다. 불러오기 기능은 게임의 상태가 정상적인지 확인하는 로직을 포함합니다.