빙고 게임 / c++

2022. 12. 17. 15:10게임/내가 만든 게임

지금까지 배운 내용을 활용해서 빙고 게임을 만들었다.

 

게임규칙

1. 3X3 판에 1~20 숫자를 중복되는 숫자 없이 9개를 선택해서 판을 구성한다.

2. 나와 컴퓨터가 순서대로 숫자를 입력해서 빙고 칸을 채운다.

3. 먼저 3빙고를 만든 사람이 승리한다.

 

헤더파일

빙고 클래스

빙고의 멤버함수로는 나의 빙고칸과 컴퓨터의 빙고칸을 배열로 저장하였다.

그리고 나와 컴퓨터의 빙고 카운트는 int 자료형을 사용하였는데 0~3 이므로 1바이트 자료형을 사용해도 상관없었다.

CallNumber 의 경우에는 입력한 숫자를 가지는  경우의수보다 넉넉하게 20개로 선택했다.

 

생성자

생성자의 경우에는  컴퓨터의 빙고는 보이지 않는 상태로 설정했으므로 ShowNum 값을 0 

나의 빙고판을 보여야 하므로 1 로 설정했다.

 

 

1번째로 게임 순서로는 칸에 한칸씩 순서대로 빙고판에 숫자를 채움니다 

이 과정에서 숫자범위를 지정해서 범위 밖의 수와 중복되는 숫자를 제거하였습니다.

하지만 std::cin 의 경우에 의도하지않은 문자열을 입력했을때 컴파일 결과에서 끝없는

오류가 발생하였다.  문자열을 int자료형으로 받으면 생기는 오류인듯 했다 이오류도

검색을 통해서 코드를 수정하였다.

std::cin 클래스내에서 의도하지 않은 입력을 받으면 fail 이 true 가되어 clear 함수를 와 쓰레기 값이 저장되어있으므로

ignore 을 이용해서 \n 을 만나면 탈출하는 조건을 만들었다.

하지만 \n 을 만나면 탈출을 해서 그런가 숫자 + 문자열을 입력하면 2번 루프를 돈다.

여기의 정확한 원리는 이해하지 못했지만 성공적으로 다시 입력할 수 있기 때문에 그대로 나뒀다.

 

이후에는 숫자를 한개씩 입력해서 입력한 숫자는 빨간색으로 표시하였다 입력하는 과정에서 

긴장감을 주기 위해서 Sleep(3000) 함수를 이용해서 지연하는 방법으로 게임을 진행시켰다.

마지막으로 3빙고를 기준으로 무승부, 승리, 패배를 나눴다.

 

 

소감

처음으로 c++을 이용해서 게임을 제작하였는데 생각보다 시간이 하루정도 소요됬다. 금방 뚝딱뚝딱 만들줄 알았지만

생각보다 조건을 설정하는 과정에서 어려움이 많았다. 물론 완성 단계에 가까워질수록 성취감도 생겼다.

하지만 아쉬운점으로는 2가지가 있다 컴퓨터 ai와 확장성이다.

처음으로 만드는 것이다 보니 간단한 구조로만 코딩하였기에 컴퓨터는 자신이 가지고있는 숫자만 랜덤하게 부른다.

난이도로 보면 쉬움 -> 중간 -> 어려움이 있다면 중간쯤 단계일 것이다 쉬움은 1~20의 무작위

어려움은 자기가 가지고 있는 정보로 승리하는 알고리즘을 가지는 컴퓨터이다.

다음에 좀더 실력이 좋아지면 이러한 단계도 만들어 보고 싶다.

그리고 확장성의 경우 빙고의칸을 늘린다던가 숫자가 아닌 다른 여러가 언어같은 것으로 설정하는것이 불가능하기때문에

다음에는 확장성을 고려해서 코딩하고싶다.