Skip to content

JiHyeok47/TicTacToe

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TicTacToe

MEGA-Z_GAME

🙂 Learnning Point

  • 객체지향에 대하여 생각해봅니다.
  • 짧게 플레이 할 수 있는 게임을 직접 구현해봅니다.
  • 인터페이스를 활용하여 플레이할 수 있는 게임의 규격을 통일합니다.

🔖 Commit Convention

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을 받아주세요.

git 명령어 참고


🎨 GameUtil 클래스

GameUtil 클래스는 각각의 게임 모듈 제작시에 편의성을 위한 메소드를 포함하고 있습니다.

1. colorFont()

public static String fontColor(String color, String words) {
    return colorList.get(color) + words + "\u001B[0m";
}

colorFont()는 게임모듈 제작시 콘솔창에 폰트색을 변경 할 수 있는 기능을 지원합니다.

fontColor({String : 색}, {String : 문자});

ex)
fontColor("red", "X")
image

이미지와 같이 "X""red"로 나타납니다.

지원 하는 폰트 색상
  • black
  • red
  • green
  • yellow
  • blue
  • purple
  • cyan
  • white

2. waitSecond()

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 레포지토리의 구성

TicTacToe는 단순히 자바가지고 짧은 게임을 만들다가 다른 게임도 할 수 있도록 확장성을 생각하다가 GameManager로 확장되었습니다.

src

manager 패키지

GameLauncher : Playable 타입만 실행이 가능하도록 강제합니다. GameManager가 실행 시 선택한 게임을 실행하도록 합니다.
GameList : 만든 게임의 리스트를 저장합니다. GameList를 바탕으로 GameManager 선택지를 표시합니다.
GameManager : 싱글톤으로 애플리케이션 실행시 자동으로 한 번만 생성됩니다. 사용자의 UI와 조작할 수 있는 명령을 제공합니다.

module 패키지

Playable : GameLauncher가 게임을 실행하기 위해서는 Playable 인터페이스의 메서드를 구현해야 합니다.
TicTacToe : TicTacToe 게임의 코드가 작성되어있습니다.

🎾 게임 규칙

1.1 TicTacToe

두 명이 번갈아 가며 O와 X를 3X3판에 써서 가로, 세로, 대각선 상에 놓이도록 하는 놀이입니다.
판에 적힌 좌표값을 스페이스로 구분하여 입력하면 O, X를 표시 할 수 있습니다.
스크린샷 2024-06-02 오후 5 43 25
image

1.2 TicTacToe Infinite Mode

무한모드 TicTacToe는 기존 게임 규칙에 3개의 O와 X를 유지하게되며, 3개가 넘어가면 가장 나중에 입력된 O와 X가 사라지는 규칙이 추가되었습니다. image image image

2. Hanoi

A타워에 있는 원반을 전부 C타워로 옮기면 이기는 게임입니다.
입력 예시는 A B 또는 a b 옮길 현재 위치에서, 옮겨질 위치를 뜻합니다.
Hanoi_start
Hanoi_win

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%