Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[체스] 베디 미션 제출합니다. #2

Merged
merged 83 commits into from
Jun 26, 2019
Merged

Conversation

dpudpu
Copy link

@dpudpu dpudpu commented Jun 22, 2019

summer님 안녕하세요. 이번에 리뷰를 받게 된 베디입니다.
먼저 귀한 시간 내서 리뷰 해주셔서 감사합니다.

제 프로젝트에 대해서 간단하게 설명해 드리자면, 콘솔 UI는 구현하지 않고 웹 UI만 구현했습니다.
DB는 h2 메모리로 구현해서 따로 설정해주지 않으셔도 main을 실행하면 자동으로 테이블 생성 및 샘플코드가 추가됩니다..

실행하시면 main 페이지에 있는 1번, 2번은 아직 끝나지 않은 기존 게임으로 이어 하기입니다.
2번은 왕을 잡기 직전인 상태로 (E7 -> E8) 입력하시면 게임이 종료됩니다.

저는 이번 미션에서 설계하면서 신경 썼던 부분이 Rule이 이동, 공격, 점수 외의 상태 및 행동만 하는 것이었습니다.
이렇게 구현 했더니 장점은 유연해져서 추가사항이 있을 때 변경이 수월한 데요.
단점은 상위 모듈에서 계속 하위 모듈까지 여러 번 들어가서 복잡해지는 단점이 있더라고요.
이렇게 여러 단계로 나누는 방법이 괜찮은 방법일까요?
처음부터 Rule이 컬러, 포지션, 이동규칙 다 가졌다면 간단하긴 했을 거 같은데 너무 여러 행동을 하는 건 아닐까 생각도 들더라고요.
이 부분에서 의견 주시면 감사하겠습니다.

이번 미션에서는 규칙이 많다보니 코드가 복잡한데, 이해가 잘 되실지 걱정되네요.
혹시라도 DM 주시면 최대한 설명이나 혹은 빠르게 수정하겠습니다.

마지막으로 '이거까지 피드백해도 될까?' 싶은 부분도 피드백 해주시면 감사하겠습니다!
감사합니다.

dpudpu added 30 commits June 17, 2019 15:21
1. 우리팀 -> 빈칸 (이동)
2. 빈칸 -> 빈칸 (명령어 실행 안됨)
3. 말의 이동 규칙에 알맞지 않게 움직이면 이동 못한다
@dpudpu
Copy link
Author

dpudpu commented Jun 25, 2019

안녕하세요. 써머님. 피드백 주신 부분 다 반영했습니다.

피드백 중에서 Square 없애는 구조 변경에 가장 신경 썼는데요.
처음에는 Square를 없애고 Rule과 Piece를 합치려고 시도했습니다. 그러나 어느새 캡틴 포비의 코드와 비슷해지더라고요. 그래서 기존의 방식을 어느 정도 유지하면서 수정해보려고 Square만 없앴는데 확실히 더 깔끔해진 거 같습니다.
그 전에는 계층을 과하게 나눈 게 느껴지더라고요. 좋은 피드백 감사합니다.

그리고 한 가지 질문이 있습니다.
Piece가 Color, Type, Position 상태를 가지고 이동과 공격 모든 부분을 담당한다면, 너무 많은 역할을 가지는 게 아닐까요?

DM까지 주시고 질문에 친절하게 답변해주셔서 감사합니다.
덕분에 재미있게 피드백 반영할 수 있었습니다

Copy link

@jihan805 jihan805 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 베디님, 피드백 잘 반영해주셨네요 💯
간단한 피드백 남겼으니 확인 후 머지 진행할게요 ~!
감사합니다 :)

}

public int updateStatus(final long id, final String winner) {
String sql = "UPDATE room SET status = TRUE, winner = ? WHERE id = ?";

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 쿼리는 게임이 종료되면 status를 TRUE로 설정하고 있어요.
새로운 게임이 생성되면 PLAYING 끝나면 ENDED 등과 같이 상태를 확인할 수 있도록 구현하면 더 좋을 것 같아요.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bolean 보다는 문자열로 하라는 말씀이신가요?
그렇게 하는 이유는 종료, 진행 중 외에도 추가 될 수도 있어서인가요?

`origin` VARCHAR(10) NOT NULL,
`target` VARCHAR(10) NOT NULL,
`round` BIGINT UNSIGNED NOT NULL,
`room_id` BIGINT UNSIGNED NOT NULL,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 테이블을 처음 보는 사람은 room과 round가 헷갈릴 수 있을 것 같아요.
조금 더 명확하게 어떤 필드인지 나타낼 수 있는 네이밍 혹은 설명을 추가해도 좋을 것 같아요.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 확실히 그렇게 느껴질거 같아요 round -> turn으로 수정했습니다 피드백 감사합니다..

}
flag = true;

File file = new File("src/main/resources/schema.sql");

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

file에 대한 path도 상수로 추출하면 좋을 것 같아요.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 추출했습니다 피드백 감사합니다

}

public int add() {
String sql = "INSERT INTO room () VALUES()";

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 쿼리의 의미를 이해하는데 어려웠어요!
아래 남긴 피드백을 참고하여 변경해보면 어떨까요?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

변경했습니다 감사합니다!


import java.util.Objects;

public class Piece {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 작성된 코드 기준으로 Piece는 Color, Type, Rule(Pawn, King, Bishop 등) 모두를 가지고 있어요.
특히 getSecondPawnIfFirst 과 같이 Pawn의 움직임에 해당하는 로직으로 Pawn이 구현하는 것이 맞지 않을까요?

저는 Rule 클래스와 Piece 클래스를 합칠 수 있을 것 같아요.
Piece와 Rule을 분리된 클래스로 생각하기 보다 지금처럼 Color, Type, Postion등을 가진 추상 클래스로 변경하고
모든 말(King, Pawn 등)들을 움직임에 대한 Rule이 아닌 주체(움직이는 말)가 되어 자신의 움직임을 구현하면 어떨까요?

포비님의 코드와 비슷해졌다고 하더라도, 이미 베디님이 많은 고민을 하였기 때문에 조금 더 괜찮은 구조라는 생각이 든다면 기존의 방식을 유지하는 것도 좋지만 적용해보는 것도 좋은 연습이 될 것 같아요.

public static Map<Position, Piece> generate() {
Map<Position, Piece> map = new TreeMap<>();

initBlackPieces(map, 8);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 숫자가 가지는 의미를 상수로 표현할 수 있을 것 같아요!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 상수로 추출했습니다. 감사합니다!

@dpudpu
Copy link
Author

dpudpu commented Jun 26, 2019

써머님 조언해주신 대로 Rule과 Piece를 합쳐봤습니다.
확실히 간결해졌는데, 기존 방식을 지키면서 변경하려고 해서 그런지 코드가 깔끔하지 못해서 아쉬운 마음이 드네요.
완전히 새로 해볼까 생각도 들었지만, 시간이 모자라서 어쩔 수 없이 타협을 보게 되었네요 ㅜㅜ 방학 때 새로 다시 짜보려고요.

한가지 궁금한 게 있는데 Piece가 이동하면 Position 변경을 두 가지의 해결책을 찾았는데 어떤 방식이 더 좋을까요?

1번. move해주면 setter로 값 변경

public class Board{
     
  	...
       
    private void chanePiece(final Piece origin, final Piece target) {
      map.put(origin.getPosition(), Empty.create(origin.getPosition()));
      origin.move(target.getPosition());
      map.put(target.getPosition(), origin);
  }
}
public abstract class Piece {
    private final Type type;
    private final Color color;
    private Position position;
  
    void move(final Position position) {
        this.position = position;
    }
}

이렇게 하면 불변이 보장이 안되서 별로인거 같아서 2번 방법을 시도해봤는데요.

2번. copy(Position position) 메소드로 새로운 인스턴스 생성해서 리턴

public class Board{
     
  	...
       
    private void chanePiece(final Piece origin, final Piece target) {
       map.put(origin.getPosition(), Empty.create(origin.getPosition()));
       map.put(target.getPosition(), origin.copy(target.getPosition()));
  }
}
public class Piece {
  ...
    
  protected abstract Piece copy(final Position position);
	
  ...
}

public class Queen extends Piece {
    ...
    
    @Override
    protected Piece copy(final Position position) {
        return new Queen(this.getColor(), position);
    }
}

이렇게 copy 메소드를 만들어주는 방식인데요

이렇게 하면 단점은 Piece의 하위클래스에서 copy를 구현해줘야 하는 단점이 있는데요.

어떤 방식이 더 좋을까요?

Copy link

@jihan805 jihan805 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 베디님.
피드백 잘 반영해주셔서 감사합니다~ 마지막 미션까지 끝내셨네요 ㅎㅎ
꼭 방학기간동안 체스 다시 구현해보세요!
그동안 고생 많으셨어요, 머지 진행할게요 :)

return false;
}

private void chanePiece(final Piece origin, final Piece target) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

chane->change로 바뀌어야 할 것 같아요!

추가로 1번 방법으로 사용해도 괜찮을 것 같아요.
값을 직접 setting 해준다는 의미로 해석되어 setter의 역할이 아닐까에 대해 고민하고 있는데요,
우선 이 메서드는 움직이라는 메시지를 보낸다라고 해석하는게 더 좋을 것 같아요(setter로 사용하려고 만든 메서드가 아니니까)
이해를 돕기 위해 첫번째 과제였던 자동차 경주에서도 자동차를 move를 구현한 메서드를 떠올려보면 어떨까요?
자동차의 경우 move에 조건이 있었기 때문에 setter와 같이 느껴지지 않았을지 모르겠지만 결국 이 역시 position의 위치를 변경하는 메서드니까요.

@jihan805 jihan805 merged commit 780eeec into woowacourse:dpudpu Jun 26, 2019
dave915 pushed a commit that referenced this pull request Mar 31, 2020
feat : 체스판 초기화 기능 구현
hongsii pushed a commit that referenced this pull request Mar 31, 2020
* docs: 1단계 요구사항 작성

* feat: 위치 정보 생성

* feat: 체스 말 생성

* feat: 체스판 초기화 및 테스트

* feat: 명령어 입력 기능 구현

* feat: 체스판 출력 기능 구현

* refactor: 2중 for문 stream으로 수정

* docs: Level2 요구사항 추가

* feat: 기물이 움직이는 방법을 나타내는 MoveRule Interface 구현

* feat: 각 기물에 맞는 움직임 상태 추가

* feat: move 명령어를 입력했을 때, King 이동 가능한 범위인지 확인

* feat: 사용자 추가, 체스 기물 분리

* feat: 이동 시 장애물 처리를 위한 이동 경로 확인

* refactor : 이동 경로 장애물 확인 수정

* feat: Knight 이동 구현

* faet : Pawn 이동 기능 구현

* refactor: Pawn 예외 처리

* refactor: Pawn 예외 추가 처리 및 전반적인 수정

* test : 킹 기물에 대한 테스트 수정 및 테스트 추가, empty 테스트 추가

* test : 체스 기물에 대한 테스트 케이스 추가

* test: Chess Board 리팩토링

* docs: 3단계 요구 사항 추가

* feat: 체스 점수 계산 구현

* refactor: 불필요한 import 제거

* feat : Pawn 점수 계산 예외 처리

* refactor: 상태를 저장하는 Status 생성

* feat : 승패결과를 구하는 기능 구현

* feat : status 명령 시, 각 플레이어의 점수와 승패 결과를 출력 하는 기능 구현

* 리팩토링한 부분이에요! (#2)

* refactor : 입력 로직에 대한 리팩토링

* refactor : controller while문을 do while로 변경

* refactor : Custom Exception 생성 및 초기 가이드 출력 리팩토링

* refactor : isSamePlayer 메소드 if문 return으로 리팩토링

* refactor : 나이트 이동 방향 내부 클래스 리팩토링

* refactor : 폰 전진 기능 리팩토링

* reafactor : Direction에 있는 PositionsBetween 중복코드 제거 리팩토링

Co-authored-by: Seyun <ksy90101@gmail.com>

* refacotr: parameter null 체크 추가

* feat: 무승부일 때 추가

* feat: King이 잡혔을 때 게임 종료

* refactor: Column, Row 비교 수정

* test: Display Name 수정

* refactor: Pawn 이동 오류 수정

* refactor: Piece 및 move 검증하는 구조 수정

* refactor : Direction 리팩토링

* refactor : validateTileSize 중복 코드 제거

* refactor: Empty 제거 및 Chess Board Piece 생성 방식 수정

* refactor: 피드백 반영

- Optional 잘못 사용한 부분 수정
- 팩토리 수정
- enum 비교 수정

* refactor: Optional 수정

* refactor: Input 받는 부분 수정

* refactor: exception 분리

* style: formatting

* refactor: Controller 구조 수정

Co-authored-by: moonyoungCHAE <xpf_fl@naver.com>
Co-authored-by: Seyun <ksy90101@gmail.com>
kingbbode pushed a commit that referenced this pull request Apr 2, 2020
* docs: 1단계 요구사항 작성

* feat: 위치 정보 생성

* feat: 체스 말 생성

* feat: 체스판 초기화 및 테스트

* feat: 명령어 입력 기능 구현

* feat: 체스판 출력 기능 구현

* refactor: 2중 for문 stream으로 수정

* docs: Level2 요구사항 추가

* feat: 기물이 움직이는 방법을 나타내는 MoveRule Interface 구현

* feat: 각 기물에 맞는 움직임 상태 추가

* feat: move 명령어를 입력했을 때, King 이동 가능한 범위인지 확인

* feat: 사용자 추가, 체스 기물 분리

* feat: 이동 시 장애물 처리를 위한 이동 경로 확인

* refactor : 이동 경로 장애물 확인 수정

* feat: Knight 이동 구현

* faet : Pawn 이동 기능 구현

* refactor: Pawn 예외 처리

* refactor: Pawn 예외 추가 처리 및 전반적인 수정

* test : 킹 기물에 대한 테스트 수정 및 테스트 추가, empty 테스트 추가

* test : 체스 기물에 대한 테스트 케이스 추가

* test: Chess Board 리팩토링

* docs: 3단계 요구 사항 추가

* feat: 체스 점수 계산 구현

* refactor: 불필요한 import 제거

* feat : Pawn 점수 계산 예외 처리

* refactor: 상태를 저장하는 Status 생성

* feat : 승패결과를 구하는 기능 구현

* feat : status 명령 시, 각 플레이어의 점수와 승패 결과를 출력 하는 기능 구현

* 리팩토링한 부분이에요! (#2)

* refactor : 입력 로직에 대한 리팩토링

* refactor : controller while문을 do while로 변경

* refactor : Custom Exception 생성 및 초기 가이드 출력 리팩토링

* refactor : isSamePlayer 메소드 if문 return으로 리팩토링

* refactor : 나이트 이동 방향 내부 클래스 리팩토링

* refactor : 폰 전진 기능 리팩토링

* reafactor : Direction에 있는 PositionsBetween 중복코드 제거 리팩토링

Co-authored-by: Seyun <ksy90101@gmail.com>

* refacotr: parameter null 체크 추가

* feat: 무승부일 때 추가

* feat: King이 잡혔을 때 게임 종료

* refactor: Column, Row 비교 수정

* test: Display Name 수정

* refactor: Pawn 이동 오류 수정

* refactor: Piece 및 move 검증하는 구조 수정

* refactor : Direction 리팩토링

* refactor : validateTileSize 중복 코드 제거

* refactor: Empty 제거 및 Chess Board Piece 생성 방식 수정

* refactor: 피드백 반영

- Optional 잘못 사용한 부분 수정
- 팩토리 수정
- enum 비교 수정

* refactor: Optional 수정

* refactor: Input 받는 부분 수정

* refactor: exception 분리

* style: formatting

* refactor: Controller 구조 수정

* refactor: Controller 구조 수정

* style: formatting

* refactor : PositionBetween 관련 Class 중복코드 제거

* refactor : 전반적인 컨벤션 수정 및 OutputView 체스판 출력 리팩토링

* 체리픽중 수정

* refactor : ChessController 리팩토링

Co-authored-by: Seyun <ksy90101@gmail.com>
Co-authored-by: SeYun <53366407+ksy90101@users.noreply.github.com>
kingbbode pushed a commit that referenced this pull request Apr 17, 2020
* [럿고] 체스 1주차 미션 제출합니다. (#96)

* docs: 1단계 요구사항 작성

* feat: 위치 정보 생성

* feat: 체스 말 생성

* feat: 체스판 초기화 및 테스트

* feat: 명령어 입력 기능 구현

* feat: 체스판 출력 기능 구현

* refactor: 2중 for문 stream으로 수정

* docs: Level2 요구사항 추가

* feat: 기물이 움직이는 방법을 나타내는 MoveRule Interface 구현

* feat: 각 기물에 맞는 움직임 상태 추가

* feat: move 명령어를 입력했을 때, King 이동 가능한 범위인지 확인

* feat: 사용자 추가, 체스 기물 분리

* feat: 이동 시 장애물 처리를 위한 이동 경로 확인

* refactor : 이동 경로 장애물 확인 수정

* feat: Knight 이동 구현

* faet : Pawn 이동 기능 구현

* refactor: Pawn 예외 처리

* refactor: Pawn 예외 추가 처리 및 전반적인 수정

* test : 킹 기물에 대한 테스트 수정 및 테스트 추가, empty 테스트 추가

* test : 체스 기물에 대한 테스트 케이스 추가

* test: Chess Board 리팩토링

* docs: 3단계 요구 사항 추가

* feat: 체스 점수 계산 구현

* refactor: 불필요한 import 제거

* feat : Pawn 점수 계산 예외 처리

* refactor: 상태를 저장하는 Status 생성

* feat : 승패결과를 구하는 기능 구현

* feat : status 명령 시, 각 플레이어의 점수와 승패 결과를 출력 하는 기능 구현

* 리팩토링한 부분이에요! (#2)

* refactor : 입력 로직에 대한 리팩토링

* refactor : controller while문을 do while로 변경

* refactor : Custom Exception 생성 및 초기 가이드 출력 리팩토링

* refactor : isSamePlayer 메소드 if문 return으로 리팩토링

* refactor : 나이트 이동 방향 내부 클래스 리팩토링

* refactor : 폰 전진 기능 리팩토링

* reafactor : Direction에 있는 PositionsBetween 중복코드 제거 리팩토링

Co-authored-by: Seyun <ksy90101@gmail.com>

* refacotr: parameter null 체크 추가

* feat: 무승부일 때 추가

* feat: King이 잡혔을 때 게임 종료

* refactor: Column, Row 비교 수정

* test: Display Name 수정

* refactor: Pawn 이동 오류 수정

* refactor: Piece 및 move 검증하는 구조 수정

* refactor : Direction 리팩토링

* refactor : validateTileSize 중복 코드 제거

* refactor: Empty 제거 및 Chess Board Piece 생성 방식 수정

* refactor: 피드백 반영

- Optional 잘못 사용한 부분 수정
- 팩토리 수정
- enum 비교 수정

* refactor: Optional 수정

* refactor: Input 받는 부분 수정

* refactor: exception 분리

* style: formatting

* refactor: Controller 구조 수정

Co-authored-by: moonyoungCHAE <xpf_fl@naver.com>
Co-authored-by: Seyun <ksy90101@gmail.com>

* feat: 체스 보드 초기화

* refactor : conflict 수정

* feat: 체스 보드 기물 초기화

* feat: 체스 기물 이동 (drag and drop)

* refactor : piece 중복 제거

* feat: 체스 기물 이동을 Server와 연동, Obstacle 검증 수정

* feat: 웹 페이지에서 점수 출력

* feat: turn 예외 처리

* refactor: Exception 구체화

* refactor: pawn, knight 오류 수정

* feat: 왕이 잡혔을 때 0점 처리

* refactor : Dao 생성 및 초기 게임 DB 저장 기능 구현

* refactor : 움직임에 맞춰 체스보드 저장

* feat : 게임이 끝나지 않은 체스보드 DB에서 불러오는 기능 구현

* feat: King 잡았을 때 점수 오류 수정

* feat: turn, score css 수정

* feat : 상태를 줘서, 체스보드를 새로 만들지 원래 체스보드를 가져올 지 기능 구현

* feat : 게임이 진행되는지 끝나는지에 따라 체스보드 생성 기능 추가

* refactor: Custom Exception 제거

* feat: 게임 상태 관리 추가

* feat: 움직이지 않는 경우 예외 처리

* feat: 알림창 css 수정

* refactor : dao 분리 작업

* refactor : 웹 view 수정

* refactor: 기능 오류, 구조 수정

* refactor: JDBC 연결 try with resource로 수정

Co-authored-by: SeYun <53366407+ksy90101@users.noreply.github.com>
Co-authored-by: Seyun <ksy90101@gmail.com>
hongsii pushed a commit that referenced this pull request Apr 21, 2020
* [타미] 체스 1주차 미션 제출합니다. (#90)

* docs: 1단계 요구사항 작성

* feat: 위치 정보 생성

* feat: 체스 말 생성

* feat: 체스판 초기화 및 테스트

* feat: 명령어 입력 기능 구현

* feat: 체스판 출력 기능 구현

* refactor: 2중 for문 stream으로 수정

* docs: Level2 요구사항 추가

* feat: 기물이 움직이는 방법을 나타내는 MoveRule Interface 구현

* feat: 각 기물에 맞는 움직임 상태 추가

* feat: move 명령어를 입력했을 때, King 이동 가능한 범위인지 확인

* feat: 사용자 추가, 체스 기물 분리

* feat: 이동 시 장애물 처리를 위한 이동 경로 확인

* refactor : 이동 경로 장애물 확인 수정

* feat: Knight 이동 구현

* faet : Pawn 이동 기능 구현

* refactor: Pawn 예외 처리

* refactor: Pawn 예외 추가 처리 및 전반적인 수정

* test : 킹 기물에 대한 테스트 수정 및 테스트 추가, empty 테스트 추가

* test : 체스 기물에 대한 테스트 케이스 추가

* test: Chess Board 리팩토링

* docs: 3단계 요구 사항 추가

* feat: 체스 점수 계산 구현

* refactor: 불필요한 import 제거

* feat : Pawn 점수 계산 예외 처리

* refactor: 상태를 저장하는 Status 생성

* feat : 승패결과를 구하는 기능 구현

* feat : status 명령 시, 각 플레이어의 점수와 승패 결과를 출력 하는 기능 구현

* 리팩토링한 부분이에요! (#2)

* refactor : 입력 로직에 대한 리팩토링

* refactor : controller while문을 do while로 변경

* refactor : Custom Exception 생성 및 초기 가이드 출력 리팩토링

* refactor : isSamePlayer 메소드 if문 return으로 리팩토링

* refactor : 나이트 이동 방향 내부 클래스 리팩토링

* refactor : 폰 전진 기능 리팩토링

* reafactor : Direction에 있는 PositionsBetween 중복코드 제거 리팩토링

Co-authored-by: Seyun <ksy90101@gmail.com>

* refacotr: parameter null 체크 추가

* feat: 무승부일 때 추가

* feat: King이 잡혔을 때 게임 종료

* refactor: Column, Row 비교 수정

* test: Display Name 수정

* refactor: Pawn 이동 오류 수정

* refactor: Piece 및 move 검증하는 구조 수정

* refactor : Direction 리팩토링

* refactor : validateTileSize 중복 코드 제거

* refactor: Empty 제거 및 Chess Board Piece 생성 방식 수정

* refactor: 피드백 반영

- Optional 잘못 사용한 부분 수정
- 팩토리 수정
- enum 비교 수정

* refactor: Optional 수정

* refactor: Input 받는 부분 수정

* refactor: exception 분리

* style: formatting

* refactor: Controller 구조 수정

* refactor: Controller 구조 수정

* style: formatting

* refactor : PositionBetween 관련 Class 중복코드 제거

* refactor : 전반적인 컨벤션 수정 및 OutputView 체스판 출력 리팩토링

* 체리픽중 수정

* refactor : ChessController 리팩토링

Co-authored-by: Seyun <ksy90101@gmail.com>
Co-authored-by: SeYun <53366407+ksy90101@users.noreply.github.com>

* feat: 체스 보드 초기화

* refactor : conflict 수정

* feat: 체스 보드 기물 초기화

* feat: 체스 기물 이동 (drag and drop)

* refactor : piece 중복 제거

* feat: 체스 기물 이동을 Server와 연동, Obstacle 검증 수정

* feat: 웹 페이지에서 점수 출력

* feat: turn 예외 처리

* refactor: Exception 구체화

* refactor: pawn, knight 오류 수정

* feat: 왕이 잡혔을 때 0점 처리

* refactor : Dao 생성 및 초기 게임 DB 저장 기능 구현

* refactor : 움직임에 맞춰 체스보드 저장

* feat : 게임이 끝나지 않은 체스보드 DB에서 불러오는 기능 구현

* feat: King 잡았을 때 점수 오류 수정

* feat: turn, score css 수정

* feat : 상태를 줘서, 체스보드를 새로 만들지 원래 체스보드를 가져올 지 기능 구현

* feat : 게임이 진행되는지 끝나는지에 따라 체스보드 생성 기능 추가

* refactor: Custom Exception 제거

* feat: 게임 상태 관리 추가

* feat: 움직이지 않는 경우 예외 처리

* refactor : dao 분리 작업

* refactor : 웹 view 수정

* refactor : 체스 기물 팩토리 enum으로 이동

* refactor : 기물이 움직였을 때 DB에 저장하는 기능 리팩토링

* refactor : 게임 다시 불러오기 리팩토링

* refactor : 게임 종료 기능 리팩토링

* test: gameDao 테스트 추가

* refactor : 시작 버튼 수정

* refactor : ConnectionDao 리팩토링

* refactor : try-resource으로 리팩토링

* refactor : 컨트롤러, 서비스 분리 리팩토링

* refactor : 컨트롤러와 dao 의존성 제거

* refactor : 컨트롤러 비즈니스 로직 제거

Co-authored-by: moonyoung <37133536+moonyoungCHAE@users.noreply.github.com>
Co-authored-by: Seyun <ksy90101@gmail.com>
Co-authored-by: moonyoungCHAE <xpf_fl@naver.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants