구현 기능 목록
1. 마작게임의 뼈대를 구현
2. 유효패를 계산하여 가장 효율적인 조패를 계산
3. 화료 시 점수를 계산
4. 타가들의 버림패를 구현.
5. 다른 여러 기능을 구현. (리치 퐁 깡 등)
6. 1인 마작 게임 구현.
0. 프로젝트 생성
InteliJ를 사용하여 프로젝트를 생성 후 git reporsitory에 연동하였다.
https://github.com/Hi-Imjaeyoung/Test
assertj를 불러오기위해 gradle.build에 의존성을 추가하였다.
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
testImplementation("org.assertj:assertj-core:3.22.0") //assertj 의존성 추가
}
1. 마작게임의 뼈대 구현
마작 게임 (한판 혹은 한 장) : Game
마작을 진행하는 객체 패를 하나 뽑거나 버리기
패산 > 패들의 집합 : Deck
뽑아올 패의 집합, 유효패 계산을 위해 남아있는 패들에 대한 정보가 필요함
패 > 3가지 수패와 4가지 풍패 그리고 3가지 역패 : Card
종류(type) 과 숫자(number)로 카드의 정보를 저장.
- Card의 type에는 Man, Tong, Sak(수패) East, South, West, North,(풍패) White, Green,Red(역패)으로 구분하였다.
- Deck의 인스턴스 객체를 생성하면, 136개의 Card를 List에 저장 후 Shuffle 메서드를 이용하여 임의로 정렬했다.
- 패의 정렬을 위해 Card 객체에 private id_code를 설정하여 정렬에 용이하게 하였다.
- Game 객체에는 손패(List<Card> Hands)와 Deck 객체가 존재한다. Deck에서 카드를 뽑아 Hands로 넣어준다.
- 각 객체들에서 method를 만들때, 3가지로 구분해보았다. 1) 무엇인가를 만드는 기능, 2) 객체가 가져야할 필수적인 기기능, 3) 객체가 가지는 부수적인 기능
- 테스트 코드를 작성하며 보다 복잡한 값을 검증하는데에는 어려움이 있었다.
'푸로젝트 > 마작' 카테고리의 다른 글
3.1 화료 - 필수적인 게임의 진행 과정의 구현 (0) | 2023.09.22 |
---|---|
2.3 각 카드의 유효패를 계산하여 가장 효율적인 타패를 찾음 (0) | 2023.09.18 |
2.2 패의 샨텐을 계산하는 기능 구현 2부 (2) | 2023.09.17 |
2.2 패의 샨텐을 계산하는 기능 구현 (0) | 2023.09.17 |
2. 유효패에 대한 개념 (1) | 2023.09.04 |