본문 바로가기
푸로젝트/마작

중간 점검 및 수정

by 눕는게최고야 2023. 10. 20.

구현 기능 목록

1. 마작게임의 뼈대를 구현 : )

2. 유효패를 계산하여 가장 효율적인 조패를 계산

2-1. 유효패에 대한 개념 정하기

2-2. 패의 샨텐을 계산하는 기능 구현

2-3 각 카드의 유효패를 계산하여 가장 효율적인 타패를 찾음

3. 화료 

3.1 필수적인 게임의 진행 과정의 구현

4. 타가들의 버림 배를 구현. 

5. 다른 여러 기능을 구현. (리치 퐁 깡 등)

6. 1인 마작 게임 구현. 


중간 점검

한 명의 패에 대한 조패 시뮬레이션을 구현함에 있어 기능이 적절하게 수행되는지와 수정이 필요한 부분에 대하여 고민하는 시간을 갖기로 하였다.

 

시뮬레이션을 돌리다보니 문제점과 보완점을 몇 개 찾았다.

 

1. 조패 알고리즘

 

2. 텐파이라는 조건

 

3. 입력형식

 

4. 출력형식

 

1. 조패 알고리즘

저번 게시물에서도 언급하였지만, 조패 알고리즘이 엉망인 것을 눈치챘다.

 

아마 알고리즘을 전면 수정 해야 할 것 같다.ㅠ

 

- 샨텐의 감소 유무로만 조패를 진행해도 괜찮은지에 대해 생각해 보기

 

- 구현에서 문제가 있는지 점검하기

 

2. 텐파이 조건

텐파이 조건에 대한 오류 또한 발견했다. 

 

텐파이는 = 샨텐수가 1 일 때로 조건을 설정했는데, 적절하게 작동하지 못했다

 

조건 자체의 문제가 아닌 조패 알고리즘에서 샨텐수를 계산하는 기능에 문제가 있을 것이라고 예상된다.

 

- 조패 알고리즘을 수정 후 다시 점검

 

3. 입력형식

버림패를 지정하는 과정에서 나열되어 있는 카드들을 보고 직접 index를 계산해서 입력했는데, 그 과정이 눈이 너무 아팠다.

그래서 버림패의 종류를 입력하여 버림패를 지정할 수 있도록 코드를 수정하였다.

 

카드에 대한 String 형태의 정보를 저장

(ex 3Man > String cardinfo = "3M")

입력 형식을 기존 int에서  String으로 정정. 

카드 리스트를 순회하며 cardinfo와 input값을 비교하여 index를 찾음

카드를 버림

4. 출력형식

출력형식의 보기 불편하여 줄 바꿈 및 단어들을 줄였다. 

큰 어려움은 없었지만, 상수들을 수정하는 것에서 여러 클래스를 돌아다니며 하나씩 수정하다 보니 시간이 걸리기도 하고 놓치기도 하였다. 

 

- Enum을 사용하여 상수관리하기