- 객체지향에 대하여 생각해봅니다.
- 짧게 플레이 할 수 있는 게임을 직접 구현해봅니다.
- 인터페이스를 활용하여 플레이할 수 있는 게임의 규격을 통일합니다.
Tag | Description |
---|---|
Init | 레포지토리 생성 후 최초의 커밋 |
Create | .java 파일 및 새로운 class 생성 |
Feat | 기능 구현시 |
Mod | 커밋이 완료된 코드를 수정 |
Fix | 구현된 기능의 버그 및 오류를 발견하고 수정 완료 |
Refactor | 구현된 기능변화 없이 더 효율 좋은 구조로 변경 |
Test | 테스트 코드 추가후 동작확인 및 수정(프로덕션 코드 수정 X) |
Docs | README.md 와 같은 문서 수정 |
Style | 코드의 변경 없이 코드 포멧팅, 세미콜론 누락에대한 수정(프로덕션 코드 수정 X) |
Chore | 빌드 설정, 패키지 매니저 설정(프로덕션 코드 수정 X) |
Remove | 파일 삭제 |
Rename | 파일 혹은 폴더명을 수정한 경우 |
커밋 포맷
Tag : 커밋 메시지
ex)
$ git commit -m"Feat : TicTacToe 승리 조건 체크"
-
Tag의 앞글자는
대문자
로 작성합니다. - Tag를 기입후 한칸의 공백후
:
을 기입하고 다시 한 번 한 칸의 공백을 기입하고 커밋 메시지를 작성합니다.
ex)Style : {커밋 메시지}
- 커밋 메시지는 되도록 상세하게 작성합니다.
- ❗❗ 각자의
fork
받은 레포지토리에서 브랜치를 생성하여 작업 후main
브랜치로merge
하기 전에 반드시fork
받은 레포지토리에서Sync Fork
후애git pull origin main
명령어로pull
을 받아주세요.
GameUtil
클래스는 각각의 게임 모듈 제작시에 편의성을 위한 메소드를 포함하고 있습니다.
public static String fontColor(String color, String words) {
return colorList.get(color) + words + "\u001B[0m";
}
colorFont()
는 게임모듈 제작시 콘솔창에 폰트색을 변경 할 수 있는 기능을 지원합니다.
fontColor({String : 색}, {String : 문자});
ex)
fontColor("red", "X")
이미지와 같이 "X"
가 "red"
로 나타납니다.
- black
- red
- green
- yellow
- blue
- purple
- cyan
- white
waitSecond()
는 Thread
를 기반으로 "초"(second)
단위로 "지연"(delay)
을 줄 수 있습니다. waitSecond()
는 게임 모듈 내부의 예외를 작성하지 않고 "지연"(delay)
을 주고자 하는 목적으로 만들었습니다.
ex)
private void ready() {
int count = 3;
waitSecond(); // 1초 지연
for (int i = count; i > 0; i--) {
System.out.println(i + "!");
waitSecond(); // 1초 지연
}
System.out.println("Battle!");
waitSecond(); // 1초 지연
}
TicTacToe는 단순히 자바가지고 짧은 게임을 만들다가 다른 게임도 할 수 있도록 확장성을 생각하다가 GameManager로 확장되었습니다.
src
manager 패키지
GameLauncher : Playable 타입만 실행이 가능하도록 강제합니다. GameManager가 실행 시 선택한 게임을 실행하도록 합니다.
GameList : 만든 게임의 리스트를 저장합니다. GameList를 바탕으로 GameManager 선택지를 표시합니다.
GameManager : 싱글톤으로 애플리케이션 실행시 자동으로 한 번만 생성됩니다. 사용자의 UI와 조작할 수 있는 명령을 제공합니다.module 패키지
Playable : GameLauncher가 게임을 실행하기 위해서는 Playable 인터페이스의 메서드를 구현해야 합니다.
TicTacToe : TicTacToe 게임의 코드가 작성되어있습니다.