본문 바로가기

C++87

C++ 빙고 게임 제작 : 게임 결과 출력 VictoryCheck 함수에서 914번째 줄에 있는BingoPlay 함수가 종료되었다면 어느 한쪽(또는 둘 다) 빙고 테이블에서3개 이상의 빙고가 완성되었다는 의미일 겁니다. 916 ~ 917번째 줄을 보시면두 개의 변수에 플레이어의 빙고 완성 개수 또는CPU의 빙고 완성 개수를 저장하고 있습니다.  플레이어의 빙고 완성 개수가 더 높다면PLAYER_WIN에 대응하는 값이 반환되고  CPU의 빙고 완성 개수가 더 높다면CPU_WIN에 대응하는 값이 반환되며, 플레이어와 CPU의 완성된 빙고의 개수가 같다면무승부로 처리하기 위해 DRAW에 대응하는 값이 반환됩니다.  또한 3개의 빙고를 완성하면 승패가 결정되긴 하지만,920번째 줄에 있는 if 문에 의해 더 많은 빙고를 완성한 쪽이최종 승리하게 됩니다... 2024. 6. 14.
C++ 빙고 게임 제작 : 빙고 게임 진행 플레이어의 빙고 테이블 객체 AnimalBingo_player를 만들고빙고 데이터를 직접 입력하여 삽입하였습니다. 이후 CPU의 빙고 테이블 객체도 만들었죠. CPU의 빙고 테이블 객체를 생성하는 과정은 플레이어 빙고 테이블 객체를생성하는 과정과 다르지 않지만, 데이터를 삽입하는 과정은 조금 차이가 있었습니다. CPU의 빙고 데이터는 이미 존재하는 파일을 읽어 데이터를 삽입하였죠. 이제 CPU와 플레이어가 돌아가면서 빙고 데이터를 하나씩오픈할 것이고 먼저 3개의 빙고를 완성하는 쪽이 승리하도록 할 겁니다. 두 빙고 테이블을 비교하는 구문은 아래 코드에서 36번째 줄에서 시작됩니다.VictoryCheck 함수가 가장 먼저 실행되겠네요. VictoryCheck 함수의 동작을 살펴 봅시다. 해당 함수는 CPU.. 2024. 6. 13.
C++ 빙고 게임 제작 : 빙고 데이터 입력 Menu 함수가 호출되고 나면객체 selectedGameMode의 멤버 변수의 값들이모두 설정이 되었을 겁니다. 만약 플레이어가 동물 카테고리를 선택하였다면 selectedGameMode의 멤버 Mode의 값은 GMAE_MODE_WORD로,멤버 Category의 값은 GAME_CATEGORY_ANIMAL로 초기화되었을 겁니다. 이 경우 23번째 줄에 있는 if 문 안의 코드가 실행되겠죠. 이후 cBingoTable형 객체 AnimalBingo_player를 만듭니다.IS_PLAYER라는 enum class에 있는 PLAYER를 통해 초기화해 주면해당 빙고 테이블은 플레이어의 빙고 테이블임을 의미하게 됩니다.  cBingoTable의 멤버 변수를 살펴 봅시다. tBingoInfo형 객체 m_pBingoIn.. 2024. 6. 12.
C++ 빙고 게임 제작 : 메인 메뉴 콘솔 창을 통해 진행할 수 있는 빙고 게임을 만들겠습니다. 기본적으로 3 x 3 크기의 빙고로 진행됩니다.빙고 한 줄의 사이즈만큼 빙고를 완성한 사람이 승리합니다. 3 x 3 크기의 빙고니까 3개의 빙고를 먼저 완성하는 쪽이 승리하죠. 게임이 시작되면 메인 메뉴에서 플레이어는고를 수 있는 빙고 카테고리는 3개가 있습니다.동물, 과일, 숫자이죠.   선택한 후에는 빙고 칸에 원하는 데이터를하나씩 입력하게 됩니다. 모두 입력하면 본격적으로 빙고 게임이시작되는데 먼저 CPU 빙고가 하나 오픈이 되며 플레이어는방향키와 엔터를 통해 오픈하고 싶은 데이터를 선택합니다.   이후 다시 CPU가 자신의 빙고를 하나 오픈하고,이를 플레이어와 CPU 중 빙고 3개가 먼저 완성될 때까지반복합니다. 다음에는 승자를 판별하고 .. 2024. 6. 8.
C++ 기초 : 다형성 (2) 동물이라는 부모 클래스를 만들었습니다. 그리고 이를 상속받은 사자, 인간, 독수리 등의자식 클래스를 만들었죠.  이때 동물이라는 부모 클래스로 만든 포인터는사자, 인간, 독수리라는 자식 클래스로 만든객체를 가리킬 수 있습니다.  하지만 각 객체의 앞에 존재하는 부모 클래스인 동물이라는 곳까지만접근이 가능하기 때문에 동물 클래스로 만든 포인터는 자신이 가리키고 있는객체가 어떤 자식 클래스로 만든 객체인지 알 수가 없습니다. 그래서 동물 클래스로 만든 포인터로 오버라이딩된 함수를호출하면 무조건 동물 클래스에 있는 함수가 호출됩니다. 이러면 자식 클래스로 만든 객체라면 무엇이든가리킬 수 있는 동물 포인터의 의미가 없어지는 것이죠.  이러한 문제점을 보완해 주는 것이 가상 함수이죠. 부모 클래스로 가서 오버라이.. 2024. 5. 4.
C++ 기초 : 다형성 (1) 다형성에 대해서 알아 봅시다.  아래와 같은 코드가 있습니다. 부모 클래스로 만든 객체와자식 클래스로 만든 객체가 있습니다. 부모 클래스로 만든 포인터에부모 클래스로 만든 객체의 주솟값을 저장합니다. 자식 클래스로 만든 포인터에자식 클래스로 만든 객체의 주솟값도 저장을 합니다. 이는 문제가 되지 않죠? 기본적인 포인터 문법입니다.       그럼 아래와 같은 경우는 어떨까요? 부모 클래스로 만든 포인터에자식 클래스로 만든 객체의 주솟값을 저장하는 건문제가 없습니다.  근데 자식 클래스로 만든 포인터에부모 클래스로 만든 객체의 주솟값을 저장하는 건문제가 발생합니다. 왜 그럴까요?  아래 그림을 보시죠. 위에는 부모 클래스형 포인터로 자식 클래스형 객체를가리킬 때이며 아래는 자식 클래스형 포인터로부모 클래스.. 2024. 5. 4.