-
Notifications
You must be signed in to change notification settings - Fork 178
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
[엘리] 체스 스프링 실습 4단계 제출합니다. #191
Conversation
- 폰 움직임 메소드 분리 - README.md 작성
- 불필요한 공백 제거 - DAO 중복 제거 - 체스 말 별 초기화 클래스 제거 - 메소드 네이밍 수정 - 상수 추출
- 스파크와 스프링에서 DB 연동이 가능하도록 변경
- Set<Comment> 에서 List<Comment>로 변경
- 새 게임 시작하면 새 방 번호 생성된 후 기존 게임 요청으로 redirect - MoveCommandRepository 제거 - chess_room 테이블과 move_command 테이블 연결 위한 칼럼 추가 (chess_room_key)
- move 로직 변경
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
안녕하세요 엘리. 라흐입니다!
벌써 마지막 리뷰네요 ㅎㅎ
잘 구현하셔서 크게 수정할 부분은 발견하지 못했고 생각해볼 만한 것 몇가지 코멘트 드리겠습니다.
-
Service에서 데이터를 가공하여 Map로 만든 뒤 controller에서 model에 add해주고 있는데요, 해당 부분을 dto로 만드는 것도 좋을 것 같아요!
저도 4단계 완료 후 추가로 공부하면서 알게됐는데 Map을 사용할때 발생할 수 있는 문제들이 있더라구요!
a. 해쉬 맵은 get이나 put에서의 key가 잘못돼도 컴파일 시에는 에러를 잡아내질 못함. 반면에, dto.steNames() 나 dto.getNames()는 에러가 나서 컴파일조차 되지 않을 겁니다.
b. 데이터 타입에 대한 에러를 잡아내질 못합니다. String인지 Integer인지를 컴파일 시에는 알 수가 없습니다.
c. 해쉬 맵은 프로그램 말고도 별도의 정보가 필요합니다. dto는 그 자체가 필요한 정보를 담고 있는 반면 해쉬 맵은 이 데이터를 정의한 다른 문서가 필요합니다. 이는 규모가 큰 프로그램일수록 더 필요하죠.
d. 단, 데이터 필드들이 가변적인 경우나 복잡한 구조로 DTO로 규정하기는 어려운 경우는 사용
참고: https://java119.tistory.com/31
DTO로 넣어줄 때는 model.addAttribute(GameDto); 와같이 넣으시고 hbs파일에서 {{gameDto.값}} 으로 접근하실 수 있습니다. -
현재 move요청을 처리 할 때 MoveDto로 받아오고 계신데요! 다른 요청도 마찬가지로 DTO로 받아오도록 하면 깔끔할 것 같아요. 아래 링크에서
VIEW 와 Model 영역에서의 데이타 전달 객체는 반드시 분리한다.
부분 한 번 읽어보세요!
https://medium.com/@yongkyu.jang/entity-dto-%EA%B7%B8-%EC%82%AC%EC%9D%B4%EC%9D%98-modelmapper-%EC%9D%B4%EC%95%BC%EA%B8%B0-94f163071add
마지막까지 수고하셨습니다! 👍 👍 👍
와! 몰랐던 부분인데 감사합니다! 그동안 피드백 주시느라 수고 많으셨어요 ~ :) |
* docs : 기능 목록 작성 * test(position) : 포지션 테스트 코드 작성 * feat(position) : 포지선 기능 구현 * refactor(position, point): 기존 Position 기능을 Point로 이동 * feat(rook):Rook 기능 구현 * feat(queen):Queen 기능 구현 * feat(pawn):Pawn 기능 구현 * feat(knight):Knight 기능 구현 * feat(king):King 기능 구현 * feat(blank):Blank 기능 구현 * feat(bishop):Bishop 기능 구현 * feat(board):board 기능 구현 * feat(color):color 기능 구현 * feat(input-view):커맨드 입력받는 기능 구현 * feat(output-view):보드판 출력 기능 구현 * feat(direction):이동 방향 기능 구현 * feat(piece):기물 전체를 추상화한 Piece 인터페이스 구현 * feat(contoller):체스 컨트롤러 구현 * feat(abstract-piece):기물 추상 클래스 구현 * feat(point):getter 추가 작성 * feat(position):포지션 변경 기능 구현 * feat(output-view) : 진행 상황 출력 기능 구현 * feat(piece):앞에 장애물이 있을 경우 타겟 위치로 이동 불가 기능 구현 * feat(pawn):전진 기능 구현 * feat(board) : 폰이 같은 열에 있을 경우 0.5 점으로 계산하는 기능 구현 * feat(color) : 우승자 출력 메세지 구현 * refactor(abstract-piece) : 주석 삭제 * feat(state) : 체스 게임의 상태를 담당하는 클래스 정의 * refactor(output-view) : 줄바꿈 추가 * feat(controller) : 컨트롤러 기능 구현 * refactor(bishop):메소드 분리 및 테스트 코드 추가 * refactor(blank):메소드 분리 및 테스트 코드 추가 * refactor(king):메소드 분리 및 테스트 코드 추가 * refactor(knight):메소드 분리 및 테스트 코드 추가 * refactor(pawn):메소드 분리 및 테스트 코드 추가 * refactor(queen):메소드 분리 및 테스트 코드 추가 * refactor(rook):메소드 분리 및 테스트 코드 추가 * refactor(board):일급 컬렉션으로 재정의 * refactor(color):방향 메소드 추가 및 테스트 코드 분리 * refactor(position):포지션 위치 추가 및 테스트 코드 추가 * refactor(game): game 패키지를 domain 안으로 이동 * feat(abstract-piece):필드에 DirectionGroup 추가 * feat(direction-group):움직일 방향을 찾는 클래스 정의 * feat(board-utils):테스트에서 기물을 설정하는 클래스 정의 * feat(direction):해당 방향으로 이동하는 기능 추가 * refactor(piece):Board를 일급컬렉션으로 설정함에 따른 코드 변경 * feat(chess-constant):체스에서 전반적으로 사용되는 상수 정의 * feat(symbol-board):출력을 위한 보드 DTO 생성 * feat(output-view):board 출력 기능 구현 * feat(initialized-chess):체스 게임 초기화 클래스 * feat(status):게임이 진행 중인지를 확인하는 클래스 * refactor(state):사용하지 않는 클래스 삭제 * feat(point):바운더리를 벗어나는지 확인하는 기능 추가 * refactor(initialized-chess):클래스 이름을 InitializedBoard 로 변경 * feat(command):커맨드에 따라 프로그램이 실행되도록 커맨드 클래스 생성 * feat(abstract-piece):isBlank 메소드 추가 및 Depth 1로 수정 * feat(move-position):기물 이동 담당 클래스 구현 및 관련 테스트 코드 수정 * feat(command-controller):커맨드에 해당하는 기능을 수행하는 컨트롤러 클래스 구현 * feat(empty-board):빈 칸만 들어있는 체스 보드 생성 기능 구현 * feat(status): KING_DEAD, TERMINATED 상태 추가 * refactor(position):이동 관련 메소드를 MovePosition으로 이동 * refactor(board):movePosition을 사용하도록 수정 * refactor(chess):status와 turn을 가변으로 갖도록 수정 * refactor(input-view):커맨드를 반환하도록 수정 * refactor:패키지 이동에 따른 패키지명 변경 * refactor(command-controller-factory):string을 입력받아 CommandController를 생성하도록 수정 * refactor:문자열 및 원시값 상수 추출 * feat(piece):isPawn 및 isKing 메소드 추가 * feat(piece):Piece 색상 별 Cache 구현 * test(command-controller-factory):테스트 코드 작성 * test(initialized-board):보드 초기화 테스트 코드 작성 * test(empty-board):빈 보드 생성 테스트 코드 작성 * test(symbol-board):기물 기호 보드 생성 테스트 코드 작성 * refactor(position):getPoint시 int point를 반환하도록 수정 * refactor(direction):방향 구하는 기능을 반복문에서 if문으로 구현 * feat(status-controller):진행 상황에 따라 status를 다르게 출력 * refactor(blank):AbstractPiece를 상속하지 않도록 수정 * refactor(direction-group):findDirectionOfPawn을 findDirection 메소드와 결합 * feat(color):BLANK 컬러 삭제 * style:reformat code * feat(pawn): 폰은 첫 이동시에만 2칸 움직이게 하는 기능 추가 * refactor(blank):블랭크를 움직이려고 할 경우 UnsupportedOperationException 예외 발생 * refactor(symbol-board): 클래스명을 DTO로 수정 * refactor(piece):DirectionGroup 초기화를 staic 초기화 블럭에서 하도록 수정 * refactor(board):pawn 확인을 instanceof 에서 isPawn으로 수정 * docs:README 체크박스 체크 * refactor(piece):상수 위치 수정 * refactor(chess-constant):기존 ChessConstant 클래스를 Enum으로 변경 * refactor(chess):기물의 색상 체크 메소드를 Board 클래스로 이동 * refactor(create-board):Board를 BoardFactory에서 생성하도록 수정 * feat(exit):exit 입력 시 메시지를 출력 * test(status):Status 테스트 코드 작성 * test(color):색상 체크 테스트 코드 작성 * feat(input-view):입력 반환값을 String으로 수정 * feat(command):커맨드를 컨트롤러가 아니게 변경 * feat(status):킹이 죽었는지, 멈춤인지 확인 메소드 추가 * feat(chess):체스를 불변으로 변경 * feat(output-view):동점일 경우 메시지 출력 * feat(command):커맨드 실행 메소드 추가 * feat(input-view):포지션을 입력받는 기능 구현 * feat(controller):컨트롤러 구현 * refactor(pawn):2칸 이동 오류 수정 * fix(output-view):킹 죽음 색상 오류 수정 * feat(controller):오류가 발생하면 메시지 출력 후 게임을 이어가도록 수정 * refactor(command-test):패키지 이동 * test(direction-group):이동 방향 반환 테스트 코드 작성 * test(direction):움직일 수 있는 방향인지 테스트 코드 작성 * refactor:접근 제한자 수정 * style:add newline at end of file
* docs : 기능 목록 작성 * test(position) : 포지션 테스트 코드 작성 * feat(position) : 포지선 기능 구현 * refactor(position, point): 기존 Position 기능을 Point로 이동 * feat(rook):Rook 기능 구현 * feat(queen):Queen 기능 구현 * feat(pawn):Pawn 기능 구현 * feat(knight):Knight 기능 구현 * feat(king):King 기능 구현 * feat(blank):Blank 기능 구현 * feat(bishop):Bishop 기능 구현 * feat(board):board 기능 구현 * feat(color):color 기능 구현 * feat(input-view):커맨드 입력받는 기능 구현 * feat(output-view):보드판 출력 기능 구현 * feat(direction):이동 방향 기능 구현 * feat(piece):기물 전체를 추상화한 Piece 인터페이스 구현 * feat(contoller):체스 컨트롤러 구현 * feat(abstract-piece):기물 추상 클래스 구현 * feat(point):getter 추가 작성 * feat(position):포지션 변경 기능 구현 * feat(output-view) : 진행 상황 출력 기능 구현 * feat(piece):앞에 장애물이 있을 경우 타겟 위치로 이동 불가 기능 구현 * feat(pawn):전진 기능 구현 * feat(board) : 폰이 같은 열에 있을 경우 0.5 점으로 계산하는 기능 구현 * feat(color) : 우승자 출력 메세지 구현 * refactor(abstract-piece) : 주석 삭제 * feat(state) : 체스 게임의 상태를 담당하는 클래스 정의 * refactor(output-view) : 줄바꿈 추가 * feat(controller) : 컨트롤러 기능 구현 * refactor(bishop):메소드 분리 및 테스트 코드 추가 * refactor(blank):메소드 분리 및 테스트 코드 추가 * refactor(king):메소드 분리 및 테스트 코드 추가 * refactor(knight):메소드 분리 및 테스트 코드 추가 * refactor(pawn):메소드 분리 및 테스트 코드 추가 * refactor(queen):메소드 분리 및 테스트 코드 추가 * refactor(rook):메소드 분리 및 테스트 코드 추가 * refactor(board):일급 컬렉션으로 재정의 * refactor(color):방향 메소드 추가 및 테스트 코드 분리 * refactor(position):포지션 위치 추가 및 테스트 코드 추가 * refactor(game): game 패키지를 domain 안으로 이동 * feat(abstract-piece):필드에 DirectionGroup 추가 * feat(direction-group):움직일 방향을 찾는 클래스 정의 * feat(board-utils):테스트에서 기물을 설정하는 클래스 정의 * feat(direction):해당 방향으로 이동하는 기능 추가 * refactor(piece):Board를 일급컬렉션으로 설정함에 따른 코드 변경 * feat(chess-constant):체스에서 전반적으로 사용되는 상수 정의 * feat(symbol-board):출력을 위한 보드 DTO 생성 * feat(output-view):board 출력 기능 구현 * feat(initialized-chess):체스 게임 초기화 클래스 * feat(status):게임이 진행 중인지를 확인하는 클래스 * refactor(state):사용하지 않는 클래스 삭제 * feat(point):바운더리를 벗어나는지 확인하는 기능 추가 * refactor(initialized-chess):클래스 이름을 InitializedBoard 로 변경 * feat(command):커맨드에 따라 프로그램이 실행되도록 커맨드 클래스 생성 * feat(abstract-piece):isBlank 메소드 추가 및 Depth 1로 수정 * feat(move-position):기물 이동 담당 클래스 구현 및 관련 테스트 코드 수정 * feat(command-controller):커맨드에 해당하는 기능을 수행하는 컨트롤러 클래스 구현 * feat(empty-board):빈 칸만 들어있는 체스 보드 생성 기능 구현 * feat(status): KING_DEAD, TERMINATED 상태 추가 * refactor(position):이동 관련 메소드를 MovePosition으로 이동 * refactor(board):movePosition을 사용하도록 수정 * refactor(chess):status와 turn을 가변으로 갖도록 수정 * refactor(input-view):커맨드를 반환하도록 수정 * refactor:패키지 이동에 따른 패키지명 변경 * refactor(command-controller-factory):string을 입력받아 CommandController를 생성하도록 수정 * refactor:문자열 및 원시값 상수 추출 * feat(piece):isPawn 및 isKing 메소드 추가 * feat(piece):Piece 색상 별 Cache 구현 * test(command-controller-factory):테스트 코드 작성 * test(initialized-board):보드 초기화 테스트 코드 작성 * test(empty-board):빈 보드 생성 테스트 코드 작성 * test(symbol-board):기물 기호 보드 생성 테스트 코드 작성 * refactor(position):getPoint시 int point를 반환하도록 수정 * refactor(direction):방향 구하는 기능을 반복문에서 if문으로 구현 * feat(status-controller):진행 상황에 따라 status를 다르게 출력 * refactor(blank):AbstractPiece를 상속하지 않도록 수정 * refactor(direction-group):findDirectionOfPawn을 findDirection 메소드와 결합 * feat(color):BLANK 컬러 삭제 * style:reformat code * feat(pawn): 폰은 첫 이동시에만 2칸 움직이게 하는 기능 추가 * refactor(blank):블랭크를 움직이려고 할 경우 UnsupportedOperationException 예외 발생 * refactor(symbol-board): 클래스명을 DTO로 수정 * refactor(piece):DirectionGroup 초기화를 staic 초기화 블럭에서 하도록 수정 * refactor(board):pawn 확인을 instanceof 에서 isPawn으로 수정 * docs:README 체크박스 체크 * refactor(piece):상수 위치 수정 * refactor(chess-constant):기존 ChessConstant 클래스를 Enum으로 변경 * refactor(chess):기물의 색상 체크 메소드를 Board 클래스로 이동 * refactor(create-board):Board를 BoardFactory에서 생성하도록 수정 * feat(exit):exit 입력 시 메시지를 출력 * test(status):Status 테스트 코드 작성 * test(color):색상 체크 테스트 코드 작성 * feat(input-view):입력 반환값을 String으로 수정 * feat(command):커맨드를 컨트롤러가 아니게 변경 * feat(status):킹이 죽었는지, 멈춤인지 확인 메소드 추가 * feat(chess):체스를 불변으로 변경 * feat(output-view):동점일 경우 메시지 출력 * feat(command):커맨드 실행 메소드 추가 * feat(input-view):포지션을 입력받는 기능 구현 * feat(controller):컨트롤러 구현 * refactor(pawn):2칸 이동 오류 수정 * fix(output-view):킹 죽음 색상 오류 수정 * feat(controller):오류가 발생하면 메시지 출력 후 게임을 이어가도록 수정 * refactor(command-test):패키지 이동 * test(direction-group):이동 방향 반환 테스트 코드 작성 * test(direction):움직일 수 있는 방향인지 테스트 코드 작성 * refactor:접근 제한자 수정 * style:add newline at end of file
* docs : 기능 목록 작성 * test(position) : 포지션 테스트 코드 작성 * feat(position) : 포지선 기능 구현 * refactor(position, point): 기존 Position 기능을 Point로 이동 * feat(rook):Rook 기능 구현 * feat(queen):Queen 기능 구현 * feat(pawn):Pawn 기능 구현 * feat(knight):Knight 기능 구현 * feat(king):King 기능 구현 * feat(blank):Blank 기능 구현 * feat(bishop):Bishop 기능 구현 * feat(board):board 기능 구현 * feat(color):color 기능 구현 * feat(input-view):커맨드 입력받는 기능 구현 * feat(output-view):보드판 출력 기능 구현 * feat(direction):이동 방향 기능 구현 * feat(piece):기물 전체를 추상화한 Piece 인터페이스 구현 * feat(contoller):체스 컨트롤러 구현 * feat(abstract-piece):기물 추상 클래스 구현 * feat(point):getter 추가 작성 * feat(position):포지션 변경 기능 구현 * feat(output-view) : 진행 상황 출력 기능 구현 * feat(piece):앞에 장애물이 있을 경우 타겟 위치로 이동 불가 기능 구현 * feat(pawn):전진 기능 구현 * feat(board) : 폰이 같은 열에 있을 경우 0.5 점으로 계산하는 기능 구현 * feat(color) : 우승자 출력 메세지 구현 * refactor(abstract-piece) : 주석 삭제 * feat(state) : 체스 게임의 상태를 담당하는 클래스 정의 * refactor(output-view) : 줄바꿈 추가 * feat(controller) : 컨트롤러 기능 구현 * refactor(bishop):메소드 분리 및 테스트 코드 추가 * refactor(blank):메소드 분리 및 테스트 코드 추가 * refactor(king):메소드 분리 및 테스트 코드 추가 * refactor(knight):메소드 분리 및 테스트 코드 추가 * refactor(pawn):메소드 분리 및 테스트 코드 추가 * refactor(queen):메소드 분리 및 테스트 코드 추가 * refactor(rook):메소드 분리 및 테스트 코드 추가 * refactor(board):일급 컬렉션으로 재정의 * refactor(color):방향 메소드 추가 및 테스트 코드 분리 * refactor(position):포지션 위치 추가 및 테스트 코드 추가 * refactor(game): game 패키지를 domain 안으로 이동 * feat(abstract-piece):필드에 DirectionGroup 추가 * feat(direction-group):움직일 방향을 찾는 클래스 정의 * feat(board-utils):테스트에서 기물을 설정하는 클래스 정의 * feat(direction):해당 방향으로 이동하는 기능 추가 * refactor(piece):Board를 일급컬렉션으로 설정함에 따른 코드 변경 * feat(chess-constant):체스에서 전반적으로 사용되는 상수 정의 * feat(symbol-board):출력을 위한 보드 DTO 생성 * feat(output-view):board 출력 기능 구현 * feat(initialized-chess):체스 게임 초기화 클래스 * feat(status):게임이 진행 중인지를 확인하는 클래스 * refactor(state):사용하지 않는 클래스 삭제 * feat(point):바운더리를 벗어나는지 확인하는 기능 추가 * refactor(initialized-chess):클래스 이름을 InitializedBoard 로 변경 * feat(command):커맨드에 따라 프로그램이 실행되도록 커맨드 클래스 생성 * feat(abstract-piece):isBlank 메소드 추가 및 Depth 1로 수정 * feat(move-position):기물 이동 담당 클래스 구현 및 관련 테스트 코드 수정 * feat(command-controller):커맨드에 해당하는 기능을 수행하는 컨트롤러 클래스 구현 * feat(empty-board):빈 칸만 들어있는 체스 보드 생성 기능 구현 * feat(status): KING_DEAD, TERMINATED 상태 추가 * refactor(position):이동 관련 메소드를 MovePosition으로 이동 * refactor(board):movePosition을 사용하도록 수정 * refactor(chess):status와 turn을 가변으로 갖도록 수정 * refactor(input-view):커맨드를 반환하도록 수정 * refactor:패키지 이동에 따른 패키지명 변경 * refactor(command-controller-factory):string을 입력받아 CommandController를 생성하도록 수정 * refactor:문자열 및 원시값 상수 추출 * feat(piece):isPawn 및 isKing 메소드 추가 * feat(piece):Piece 색상 별 Cache 구현 * test(command-controller-factory):테스트 코드 작성 * test(initialized-board):보드 초기화 테스트 코드 작성 * test(empty-board):빈 보드 생성 테스트 코드 작성 * test(symbol-board):기물 기호 보드 생성 테스트 코드 작성 * refactor(position):getPoint시 int point를 반환하도록 수정 * refactor(direction):방향 구하는 기능을 반복문에서 if문으로 구현 * feat(status-controller):진행 상황에 따라 status를 다르게 출력 * refactor(blank):AbstractPiece를 상속하지 않도록 수정 * refactor(direction-group):findDirectionOfPawn을 findDirection 메소드와 결합 * feat(color):BLANK 컬러 삭제 * style:reformat code * feat(pawn): 폰은 첫 이동시에만 2칸 움직이게 하는 기능 추가 * refactor(blank):블랭크를 움직이려고 할 경우 UnsupportedOperationException 예외 발생 * refactor(symbol-board): 클래스명을 DTO로 수정 * refactor(piece):DirectionGroup 초기화를 staic 초기화 블럭에서 하도록 수정 * refactor(board):pawn 확인을 instanceof 에서 isPawn으로 수정 * docs:README 체크박스 체크 * refactor(piece):상수 위치 수정 * refactor(chess-constant):기존 ChessConstant 클래스를 Enum으로 변경 * refactor(chess):기물의 색상 체크 메소드를 Board 클래스로 이동 * refactor(create-board):Board를 BoardFactory에서 생성하도록 수정 * feat(exit):exit 입력 시 메시지를 출력 * test(status):Status 테스트 코드 작성 * test(color):색상 체크 테스트 코드 작성 * feat(input-view):입력 반환값을 String으로 수정 * feat(command):커맨드를 컨트롤러가 아니게 변경 * feat(status):킹이 죽었는지, 멈춤인지 확인 메소드 추가 * feat(chess):체스를 불변으로 변경 * feat(output-view):동점일 경우 메시지 출력 * feat(command):커맨드 실행 메소드 추가 * feat(input-view):포지션을 입력받는 기능 구현 * feat(controller):컨트롤러 구현 * refactor(pawn):2칸 이동 오류 수정 * fix(output-view):킹 죽음 색상 오류 수정 * feat(controller):오류가 발생하면 메시지 출력 후 게임을 이어가도록 수정 * refactor(command-test):패키지 이동 * test(direction-group):이동 방향 반환 테스트 코드 작성 * test(direction):움직일 수 있는 방향인지 테스트 코드 작성 * refactor:접근 제한자 수정 * style:add newline at end of file
* [1, 2, 3단계 - 체스] 시드(김현식) 미션 제출합니다. (#191) * docs : 기능 목록 작성 * test(position) : 포지션 테스트 코드 작성 * feat(position) : 포지선 기능 구현 * refactor(position, point): 기존 Position 기능을 Point로 이동 * feat(rook):Rook 기능 구현 * feat(queen):Queen 기능 구현 * feat(pawn):Pawn 기능 구현 * feat(knight):Knight 기능 구현 * feat(king):King 기능 구현 * feat(blank):Blank 기능 구현 * feat(bishop):Bishop 기능 구현 * feat(board):board 기능 구현 * feat(color):color 기능 구현 * feat(input-view):커맨드 입력받는 기능 구현 * feat(output-view):보드판 출력 기능 구현 * feat(direction):이동 방향 기능 구현 * feat(piece):기물 전체를 추상화한 Piece 인터페이스 구현 * feat(contoller):체스 컨트롤러 구현 * feat(abstract-piece):기물 추상 클래스 구현 * feat(point):getter 추가 작성 * feat(position):포지션 변경 기능 구현 * feat(output-view) : 진행 상황 출력 기능 구현 * feat(piece):앞에 장애물이 있을 경우 타겟 위치로 이동 불가 기능 구현 * feat(pawn):전진 기능 구현 * feat(board) : 폰이 같은 열에 있을 경우 0.5 점으로 계산하는 기능 구현 * feat(color) : 우승자 출력 메세지 구현 * refactor(abstract-piece) : 주석 삭제 * feat(state) : 체스 게임의 상태를 담당하는 클래스 정의 * refactor(output-view) : 줄바꿈 추가 * feat(controller) : 컨트롤러 기능 구현 * refactor(bishop):메소드 분리 및 테스트 코드 추가 * refactor(blank):메소드 분리 및 테스트 코드 추가 * refactor(king):메소드 분리 및 테스트 코드 추가 * refactor(knight):메소드 분리 및 테스트 코드 추가 * refactor(pawn):메소드 분리 및 테스트 코드 추가 * refactor(queen):메소드 분리 및 테스트 코드 추가 * refactor(rook):메소드 분리 및 테스트 코드 추가 * refactor(board):일급 컬렉션으로 재정의 * refactor(color):방향 메소드 추가 및 테스트 코드 분리 * refactor(position):포지션 위치 추가 및 테스트 코드 추가 * refactor(game): game 패키지를 domain 안으로 이동 * feat(abstract-piece):필드에 DirectionGroup 추가 * feat(direction-group):움직일 방향을 찾는 클래스 정의 * feat(board-utils):테스트에서 기물을 설정하는 클래스 정의 * feat(direction):해당 방향으로 이동하는 기능 추가 * refactor(piece):Board를 일급컬렉션으로 설정함에 따른 코드 변경 * feat(chess-constant):체스에서 전반적으로 사용되는 상수 정의 * feat(symbol-board):출력을 위한 보드 DTO 생성 * feat(output-view):board 출력 기능 구현 * feat(initialized-chess):체스 게임 초기화 클래스 * feat(status):게임이 진행 중인지를 확인하는 클래스 * refactor(state):사용하지 않는 클래스 삭제 * feat(point):바운더리를 벗어나는지 확인하는 기능 추가 * refactor(initialized-chess):클래스 이름을 InitializedBoard 로 변경 * feat(command):커맨드에 따라 프로그램이 실행되도록 커맨드 클래스 생성 * feat(abstract-piece):isBlank 메소드 추가 및 Depth 1로 수정 * feat(move-position):기물 이동 담당 클래스 구현 및 관련 테스트 코드 수정 * feat(command-controller):커맨드에 해당하는 기능을 수행하는 컨트롤러 클래스 구현 * feat(empty-board):빈 칸만 들어있는 체스 보드 생성 기능 구현 * feat(status): KING_DEAD, TERMINATED 상태 추가 * refactor(position):이동 관련 메소드를 MovePosition으로 이동 * refactor(board):movePosition을 사용하도록 수정 * refactor(chess):status와 turn을 가변으로 갖도록 수정 * refactor(input-view):커맨드를 반환하도록 수정 * refactor:패키지 이동에 따른 패키지명 변경 * refactor(command-controller-factory):string을 입력받아 CommandController를 생성하도록 수정 * refactor:문자열 및 원시값 상수 추출 * feat(piece):isPawn 및 isKing 메소드 추가 * feat(piece):Piece 색상 별 Cache 구현 * test(command-controller-factory):테스트 코드 작성 * test(initialized-board):보드 초기화 테스트 코드 작성 * test(empty-board):빈 보드 생성 테스트 코드 작성 * test(symbol-board):기물 기호 보드 생성 테스트 코드 작성 * refactor(position):getPoint시 int point를 반환하도록 수정 * refactor(direction):방향 구하는 기능을 반복문에서 if문으로 구현 * feat(status-controller):진행 상황에 따라 status를 다르게 출력 * refactor(blank):AbstractPiece를 상속하지 않도록 수정 * refactor(direction-group):findDirectionOfPawn을 findDirection 메소드와 결합 * feat(color):BLANK 컬러 삭제 * style:reformat code * feat(pawn): 폰은 첫 이동시에만 2칸 움직이게 하는 기능 추가 * refactor(blank):블랭크를 움직이려고 할 경우 UnsupportedOperationException 예외 발생 * refactor(symbol-board): 클래스명을 DTO로 수정 * refactor(piece):DirectionGroup 초기화를 staic 초기화 블럭에서 하도록 수정 * refactor(board):pawn 확인을 instanceof 에서 isPawn으로 수정 * docs:README 체크박스 체크 * refactor(piece):상수 위치 수정 * refactor(chess-constant):기존 ChessConstant 클래스를 Enum으로 변경 * refactor(chess):기물의 색상 체크 메소드를 Board 클래스로 이동 * refactor(create-board):Board를 BoardFactory에서 생성하도록 수정 * feat(exit):exit 입력 시 메시지를 출력 * test(status):Status 테스트 코드 작성 * test(color):색상 체크 테스트 코드 작성 * feat(input-view):입력 반환값을 String으로 수정 * feat(command):커맨드를 컨트롤러가 아니게 변경 * feat(status):킹이 죽었는지, 멈춤인지 확인 메소드 추가 * feat(chess):체스를 불변으로 변경 * feat(output-view):동점일 경우 메시지 출력 * feat(command):커맨드 실행 메소드 추가 * feat(input-view):포지션을 입력받는 기능 구현 * feat(controller):컨트롤러 구현 * refactor(pawn):2칸 이동 오류 수정 * fix(output-view):킹 죽음 색상 오류 수정 * feat(controller):오류가 발생하면 메시지 출력 후 게임을 이어가도록 수정 * refactor(command-test):패키지 이동 * test(direction-group):이동 방향 반환 테스트 코드 작성 * test(direction):움직일 수 있는 방향인지 테스트 코드 작성 * refactor:접근 제한자 수정 * style:add newline at end of file * [4, 5단계 - 체스] 시드(김현식) 미션 제출합니다. (#261) * feat(board):체스판 출력 구현 * feat(board):채스판 초기 기물 설정 기능 구현 * feat(board):체스판 클릭 시 선택 칸 색상 변경 기능 구현 * feat(board):기물 이동 기능 구현 * feat(board):왕이 잡힐 경우 게임 종료 기능 구현 * feat(user-dao):유저 추가 기능 구현 * feat(user-dao):이미 존재하는 이름일 경우 DB에 추가안하는 기능 구현 * feat(board.js):선택한 칸을 다시 선택하면 이동 안하도록 수정 * feat(main.html):게임 대기 화면 * feat(user-dao):사용자 이름으로 유저 ID 찾는 기능 구현 * feat(move-position-dao):이동 커맨드를 저장하는 기능 구현 * feat(chess-dao):체스 생성 및 저장 체스를 불러오는 기능 구현 * feat(controller):체스 게임 컨트롤러 구현 * refactor(chess-dao):조인안해도 되는 테이블 삭제 * feat(chess):진행 중인 게임이 없을 경우 이어하기 버튼 클릭 시 에러 메시지 출력 * refactor(chess.css):메인화면 css 수정 * feat(chess):게임 화면 css 작성 * feat(user):사용하지 않는 유저 도메인 삭제 * feat(chess-dao):유저, MovePosition DAO 제거 * refactor(piece):Class.forName을 위해 Piece들의 이름을 카멜케이스로 변경 * feat(piece-dao):기물 저장 기능 구현 * feat(chess-dao):현재 누구의 턴인지 찾는 기능 구현 * feat(piece-factory):기물 이름으로 피스 생성하는 기능 구현 * feat(board-dto):기물들을 담을 boarddto 생성 * feat(response):결과값을 반환하는 Response 정의 * feat(chess):마지막 체스 정보들을 가져와 뷰에 뿌려주는 기능 구현 * feat(piece-factory.js):현재 누구의 턴인지 나타내는 기능 구현 * feat(chess-dao):기물이동 기능 구현 * feat(main.js):진행 중인 게임이 없을 경우 이어하기를 못하도록 설정 * feat(controller, service): controller의 메소드들을 분리하기 위해 service 객체 생성 * feat(controller):chess, piece 스켈레톤 코드 작성 * feat(chess-response):이너 클래스를 사용하여 자주 사용하는 응답코드를 단순화 * feat(chess):체스 api 구현 * feat(piece):piece controller 기능 구현 * feat(main.js):게임 새로하기 api 통신 기능 구현 * feat(piece):기물 화면에 출력해주는 기능 구현 * style:reformat code * feat(chess-controller):id와 현재 턴을 검색하는 기능 추가 * feat(piece):기물 이동 기능 구현 * feat(js):이어하기를 했을 때도 현재 턴이 누구인지 표시되도록 수정 * refactor(chess-service):체스 아이디를 파라미터로 받도록 수정 * feat(web-controller):웹 컨트롤러 기능 구현 * feat(piece):점수 출력 기능 구현 * test(connection-utils):DB 연결 테스트 코드 작성 * test(piece-dao):테스트 코드 작성 * test(chess-dao):테스트 코드 작성 * style:reformat code * feat(game.js):다시하기 누를 경우 게임의 기물들만 삭제 후 재생성하도록 수정 * docs:ddl.sql 추가 * style:reformat code * refactor(chess-dao, piece-dao):SqlException을 Throw하지 않고, 메소드 안에서 catch 하도록 수정 * feat(controller):DB에 저장되었을 경우 201을 반환하도록 수정 * feat(ddl.sql):컬럼 크기 수정 * feat(chess-response):공통된 응답 객체 삭제 * feat(service):insert 시 insert된 entity 혹은 id를 반환하는 기능 추가 * refactor(score-dto):생성자에서 Board를 받아 ScoreDTO를 생성하도록 수정 * feat(ddl.sql):chess status 컬럼 추가 * feat(chess-controller):컨트롤러가 기존 PieceDao의 역할도 같이 하도록 수정 및 새로운 게임 시작 기능 구현 * feat(chess):체스 게임의 정보를 반환하는 기능 구현 * feat(chess):기물 이동 기능 구현 * feat(piece):사용하지 않는 Piece Layer들 삭제 * refactor(chess-dao):Piece에만 연관된 메소드들을 PieceDAO로 이동 * test(chess-dao):코드 변경에 따른 테스트 코드 변경 * test(piece-dao):코드 변경에 따른 테스트 코드 수정 * refactor(board-dto):boardDTO에 Score 속성 추가 및 * feat(chess-dto):chessDTO가List<PieceDTO>가 아닌 BoardDTO를 갖도록 수정 * feat(application):controller에 작성한 API 추가 * refactor(js):변경한 API에 따른 자바스크립트 코드 수정 * feat(js):현재 턴이 누구인지 표시해주는 기능 추가 * feat(js):승패 출력 기능 추가 * chore(build.gradle):스프링 의존성 추가 * chore(application.properties):DB 설정 추가 * refactor: HTML 파일 디렉토리 이동 * refactor(MovePosition): 바인딩을 위한 기본생성자 및 setter 생성 * refactor(controller): Spring으로 migrate * refactor: Bean 주입 * feat(chess-dao-test):테스트에 빈 주입 * refactor: DAO JdbcTemplate으로 migrate * feat(spark):사용하지 않는 클래스 삭제 * refactor(logback):로그 설정 변경 * feat(controller):리턴 타입을 ResponseEntity 로 변경 * refactor(chess-service):@Autowired 어노테이션 제거 * chore(build.gradle):dependency configruation 수정 및 logback-access 의존성 추가 * feat(logback-access.xml):HTTP 요청 및 응답 로그 출력 설정 추가 * refactor(chess-controller):Cookie 추가를 HttpServletResponse에 추가하는 것이 아닌 ResponseEntity의 Header의 추가하도록 변경 * refactor(controller):백엔드와 프론트의 api 분리 * style:DTO -> Dto, DAO -> Dao, VO -> Vo * feat(abstract-piece):equals() & hashCode() 수정 * style(blank):SNAKE 네이밍을 카멜케이스로 변경 * feat(service):하나의 트랜잭션에 묶여야 하는 작업들을 트랜잭션 처리 * feat(application.properties):schema.sql를 이용하여 테이블 자동 생성 * refactor(dao-test):@SpringBootTest로 모든 의존성을 가져오는게 아닌 @jdbcTest를 이용하여 필요한 의존성만 가져오도록 수정 * refactor(dao):jdbcTemplate을 이용하여 쿼리를 처리하도록 수정 * feat(dao-test):테스트가 끝나면 데이터베이스 롤백 기능 추가 Co-authored-by: 김주원 <[email protected]>
안녕하세요 라흐! 마지막 리뷰요청이네요!
이번에도 잘부탁드려요 :)