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

[동글] 체스 스프링 실습 1단계 미션 제출합니다. #28

Merged
merged 14 commits into from
Apr 25, 2020
Merged

Conversation

mintjordy
Copy link

안녕하세요~ 알트님. 동글이에요~
가감없이 많은 지적 부탁드려요. 😄

pobiconan and others added 13 commits May 31, 2019 10:07
* [Test] 테스트란다

* docs: 기능 구현 목록 생성

* feat: 위치 객체 생성

* feat: Position 캐싱 적용

* feat: Position 캐싱 추가 구현

* test: 체스말 테스트 코드 추가

* feat: 게임 말, 폰, 팀 클래스 추가

* feat: 모든 종류 체스말 클래스 생성

* feat: 명령어 enum 추가

* docs: README 수정

* refactor: Piece 내의 Position 제거

* feat: 체스 말 도달 가능 경로 반환 로직 추가

* feat: 직선경로 여부 판단로직 추가

* feat: 두 체스말의 행이 일치하는지 확인하는 기능 구현

* feat: 두 위치의 행이 일치하는 경우 경로 계산

* docs: 기능목록 수정

* feat: 보드 클래스 추가

* test: Board의 생성 테스트 작성

* feat: 보드 위 체스말 이동 기능 추가

* feat: MoveValidStrategy 클래스 생성

* feat: 주어진 경로(List<Position>)안에 말이 있는지 판별하는 로직 추가

* test: 체스말의 경로 이동 가능 여부 테스트 추가

* feat: 랭크 대소 비교 로직 추가

* feat: 파일(열) 비교 로직 추가

* refactor: PieceTest를 PawnTest와 RookTest로 분리

* feat: string을 통해 File 객체 찾기 추가

* refactor: Strategy관련 코드 삭제, Board내부로 체스말 이동 로직 옮김

* feat: 흑팀 체스말 초기화

* feat: 백팀 체스말 초기화, View 생성

* feat: 체스판 출력 기능

* feat: Team판별 로직 추가

* feat: 체스판 출력 기능 보완

* feat: 컨트롤러 생성

* feat: 게임 명령어 입력 기능 추가

* feat: 1단계 완료

* feat: 게임 시작 메시지 출력 메서드 추가

* feat: controller에 while문 추가

* feat: 이동할 좌표 입력 메서드 추가

* feat: 비숍 이동 여부 확인 기능 추가

* feat: 주어진 두 위치가 대각선인지 확인하는 로직 추가

* feat: 비숍의 좌상 대각선 방면 경로 확인 기능

* feat: 대각선 위치의 두 Position의 경로를 찾는 메서드 추가

* test: 비숍이동 로직 테스트 작성

* feat: 대각선 위치의 두 Position의 경로를 찾는 메서드 구현

* feat: 퀸 이동 기능 구현

* test: 퀸, 나이트, 킹 테스트 코드 추가

* feat: King 이동 가능 여부 판단 메서드 생성

* feat: King 이동 가능 여부 판단 메서드 구현

* feat: Knight 이동 가능 여부 판단 메서드 구조 구현

* test: Pawn 테스트 코드 작성

* test: Pawn의 첫 움직임 테스트 코드 작성

* test: Pawn 두칸 이동시 첫이동 여부 확인

* feat: Pawn의 움직임이 유효한지 체크하는 로직 추가

* feat: Pawn의 이동경로 반환 기능 구현

* feat: 상대 말을 잡는 로직 생성

* refactor: Bishop 이동경로 구하는 로직 변경

* feat: King, Knight 이동경로 구하는 로직 변경

* feat: 두 Position 사이의 모든 Position들을 반환하는 메서드 추가

* fix: Pawn 이동 로직 버그 수정

* fix: 테스트코드 fail 해결

* feat: 게임 종료 기능 구현

* refactor: 반복 조건 변경

* feat: 점수계산, 킹 잡힘 여부 확인 로직 수정

* feat: 기물의 이동과 기물의 catch 분리, 폰 움직임 버그 수정

* refactor: 개선된 보드 클래스 적용

* refactor: 메서드 포장

* feat: 현재 남아있는 체스말 기준 팀별 점수 계산 구현

* feat: 게임중 예외 발생시 명령어 재 입력 기능

* feat: Position 행, 열 중복 제거

* fix: 테스트 코드 버그 수정

* refactor: 일부 메서드 이름 수정

* refactor: 불필요 클래스 제거

* feat: 웹 UI 추가, 게임 시작시 , 게임 판 초기화, 점수판 갱신

* feat: 체스게임 상태 패턴 적용, 명령어별 컨트롤러 실행로직 enum 집중화

* test: 테스트 케이스 추가

* test: 테스트 케이스 추가

* fix: 킹이 잡혀서 게임이 끝나는 경우, 승자 출력안되는 버그 수정

* test: command 테스트 케이스 추가

Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>
* refactor: 일부 클래스, 메소드 이름 변경, 메서드 추출, Board 일부 로직 변경

* feat: 팀별 점수 계산 기능 클래스 추출

* feat: 체스 기물 이미지 추가

* feat: 팀별 점수 반환기능 추가

* style: code formatting

* feat: 보드위 놓여있는 모든 기물 dto 목록 반환 기능 추가

* feat: 보드위 기물 이동 기능, 변화 생긴 지점 BoardDTO 목록 반환 기능 추가

* feat: 웹 UI  체스말 이동 기능 추가

* fix: 게임 중간에 재시작을 누르는 경우, 게임턴이 백팀으로 초기화 되지 않는 버그 수정

* feat: 체스 말 이동 기능 추가

* fix: 체스 기물 이미지 클릭시, cell이 클릭 되지 않는 버그 수정

* feat: 웹상 게임 상태 종료 여부 체크, 조건에 따른 게임 종료 기능 추가

* feat: data base 연결 추가

* docs: 기능목록 구현 갱신

* refactor: http api response 구조 변경 위한 response 관련 클래스 추가

* refactor: 응답 json 데이터 응답상태, 데이터, 메시지 형태로 포맷화

* refactor: dao에서 사용하는 jdbc 공통 로직 jdbctemplate로 분리

* fix: jdbc template out of bound index exception 버그 수정

* refactor: controller 모든 응답 내 try-catch 문 중복 제거

* refactor: jdbc template 내 중복 제거, DAO find 반환 타입 optional 변경

* refactor: 게임 상태 변경 요청 로직내 if-else 문 중복 제거

* refactor: 상태 값 반환 타입 enum 에서 string 으로 변경

* refactor: index 페이지 랜더링 객체 static 변수로 미리 생성

* refactor: 문자열 -> board 객체 파싱로직 리팩토링, 생성자 인자 null 검증 추가

* refactor: 점수 계산 기능 Result 객체로 위임

* refactor: 피드백 반영

* refactor: js 함수들 변수로 표현

* test: service 테스트 추가
Copy link

@KS-KIM KS-KIM left a comment

Choose a reason for hiding this comment

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

안녕하세요 동글! 리뷰어 알트입니다.😀
전반적으로 코드가 깔끔하고 컨벤션이 잘 지켜졌네요.
간단한 피드백 남겼으니 확인하세요!

Map<Position, Piece> rowPieces = new HashMap<>();
String[] rowElements = boardRow.split(COLUMN_SEPARATOR);
for (int col = 1; col <= MAXIMUM_POSITION_NUMBER; col++) {
parseOneElement(Position.of(col, MAXIMUM_POSITION_NUMBER + 1 - row), rowElements[col - 1], rowPieces);
Copy link

Choose a reason for hiding this comment

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

MAXIMUM_POSITION_NUMBER + 1 - row 부분을 메서드로 분리하는건 어떨까요?

Copy link
Author

Choose a reason for hiding this comment

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

가독성 향상을 위해 메소드 분리를 시도했습니다.

}

private static void parseOneElement(Position of, String rowElement, Map<Position, Piece> row) {
if (".".equals(rowElement)) {
Copy link

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.

수정했습니다!

protected Team turn;

public Game(Board board) {
this(1, board, WHITE);
Copy link

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.

수정했습니다!

Comment on lines +55 to +61
public Game changeState(String request) {
if (!CHANGE_STATE_FUNCTIONS.containsKey(request)) {
throw new IllegalArgumentException(ILLEGAL_STATE_CHANGE_REQUEST_EXCEPTION_MESSAGE);
}
Function<Game, Game> gameFunction = CHANGE_STATE_FUNCTIONS.get(request);
return gameFunction.apply(this);
}
Copy link

Choose a reason for hiding this comment

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

각 State가 chageState 메서드를 override하는편이 맞지 않을까요?

public static final Empty EMPTY = new Empty();

public Empty() {
super(NONE, ".");
Copy link

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.

반영했습니다!!!

Comment on lines 21 to 25
for (int col = MINIMUM_POSITION_NUMBER; col <= MAXIMUM_POSITION_NUMBER; col++) {
for (int row = MINIMUM_POSITION_NUMBER; row <= MAXIMUM_POSITION_NUMBER; row++) {
CACHE.put(getKey(col, row), new Position(new Cell(col), new Cell(row)));
}
}
Copy link

Choose a reason for hiding this comment

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

객체지향 생활체조 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기만 한다.

Copy link
Author

Choose a reason for hiding this comment

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

메서드 분리로 indent level 1단계로 줄였습니다.

import wooteco.chess.domain.game.GameFactory;
import wooteco.chess.repository.GameDAO;

public class JDBCGameDAO implements GameDAO {
Copy link

Choose a reason for hiding this comment

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

JdbcGameDao, GameDao와 같은 네이밍은 어떨까요?

Copy link
Author

Choose a reason for hiding this comment

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

약어 네이밍 컨벤션에 맞춰 전부 수정했어요~

}

@Override
public Optional<Game> findById(int gameId) {
Copy link

Choose a reason for hiding this comment

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

Optional 사용 👍👍

import wooteco.chess.repository.PrepareStatementSetter;
import wooteco.chess.repository.RowMapper;

public class JDBCTemplate {
Copy link

Choose a reason for hiding this comment

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

query 중복코드 제거 💯💯

import com.google.gson.JsonElement;
import spark.ResponseTransformer;

public class JsonUtil {
Copy link

Choose a reason for hiding this comment

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

유틸리티성 클래스라면 private 생성자를 추가하여 인스턴스화를 방지하는 것이 좋을 것 같아요.
Effective Java 3/E 아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라를 참고하세요😀

Copy link
Author

Choose a reason for hiding this comment

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

모든 유틸리티성 클래스들 private 생성자 추가했습니다.

@gracefulBrown gracefulBrown merged commit aa1a2a3 into woowacourse:taejinseok Apr 25, 2020
woowahan-pjs pushed a commit that referenced this pull request Apr 29, 2020
* [동글] 체스 스프링 실습 1단계 미션 제출합니다. (#28)

* Initial commit

* initial commit

* upgrade library version, config useJUnitPlatform

* [동글] 체스 미션 1주차 제출합니다. (#87)

* [Test] 테스트란다

* docs: 기능 구현 목록 생성

* feat: 위치 객체 생성

* feat: Position 캐싱 적용

* feat: Position 캐싱 추가 구현

* test: 체스말 테스트 코드 추가

* feat: 게임 말, 폰, 팀 클래스 추가

* feat: 모든 종류 체스말 클래스 생성

* feat: 명령어 enum 추가

* docs: README 수정

* refactor: Piece 내의 Position 제거

* feat: 체스 말 도달 가능 경로 반환 로직 추가

* feat: 직선경로 여부 판단로직 추가

* feat: 두 체스말의 행이 일치하는지 확인하는 기능 구현

* feat: 두 위치의 행이 일치하는 경우 경로 계산

* docs: 기능목록 수정

* feat: 보드 클래스 추가

* test: Board의 생성 테스트 작성

* feat: 보드 위 체스말 이동 기능 추가

* feat: MoveValidStrategy 클래스 생성

* feat: 주어진 경로(List<Position>)안에 말이 있는지 판별하는 로직 추가

* test: 체스말의 경로 이동 가능 여부 테스트 추가

* feat: 랭크 대소 비교 로직 추가

* feat: 파일(열) 비교 로직 추가

* refactor: PieceTest를 PawnTest와 RookTest로 분리

* feat: string을 통해 File 객체 찾기 추가

* refactor: Strategy관련 코드 삭제, Board내부로 체스말 이동 로직 옮김

* feat: 흑팀 체스말 초기화

* feat: 백팀 체스말 초기화, View 생성

* feat: 체스판 출력 기능

* feat: Team판별 로직 추가

* feat: 체스판 출력 기능 보완

* feat: 컨트롤러 생성

* feat: 게임 명령어 입력 기능 추가

* feat: 1단계 완료

* feat: 게임 시작 메시지 출력 메서드 추가

* feat: controller에 while문 추가

* feat: 이동할 좌표 입력 메서드 추가

* feat: 비숍 이동 여부 확인 기능 추가

* feat: 주어진 두 위치가 대각선인지 확인하는 로직 추가

* feat: 비숍의 좌상 대각선 방면 경로 확인 기능

* feat: 대각선 위치의 두 Position의 경로를 찾는 메서드 추가

* test: 비숍이동 로직 테스트 작성

* feat: 대각선 위치의 두 Position의 경로를 찾는 메서드 구현

* feat: 퀸 이동 기능 구현

* test: 퀸, 나이트, 킹 테스트 코드 추가

* feat: King 이동 가능 여부 판단 메서드 생성

* feat: King 이동 가능 여부 판단 메서드 구현

* feat: Knight 이동 가능 여부 판단 메서드 구조 구현

* test: Pawn 테스트 코드 작성

* test: Pawn의 첫 움직임 테스트 코드 작성

* test: Pawn 두칸 이동시 첫이동 여부 확인

* feat: Pawn의 움직임이 유효한지 체크하는 로직 추가

* feat: Pawn의 이동경로 반환 기능 구현

* feat: 상대 말을 잡는 로직 생성

* refactor: Bishop 이동경로 구하는 로직 변경

* feat: King, Knight 이동경로 구하는 로직 변경

* feat: 두 Position 사이의 모든 Position들을 반환하는 메서드 추가

* fix: Pawn 이동 로직 버그 수정

* fix: 테스트코드 fail 해결

* feat: 게임 종료 기능 구현

* refactor: 반복 조건 변경

* feat: 점수계산, 킹 잡힘 여부 확인 로직 수정

* feat: 기물의 이동과 기물의 catch 분리, 폰 움직임 버그 수정

* refactor: 개선된 보드 클래스 적용

* refactor: 메서드 포장

* feat: 현재 남아있는 체스말 기준 팀별 점수 계산 구현

* feat: 게임중 예외 발생시 명령어 재 입력 기능

* feat: Position 행, 열 중복 제거

* fix: 테스트 코드 버그 수정

* refactor: 일부 메서드 이름 수정

* refactor: 불필요 클래스 제거

* feat: 웹 UI 추가, 게임 시작시 , 게임 판 초기화, 점수판 갱신

* feat: 체스게임 상태 패턴 적용, 명령어별 컨트롤러 실행로직 enum 집중화

* test: 테스트 케이스 추가

* test: 테스트 케이스 추가

* fix: 킹이 잡혀서 게임이 끝나는 경우, 승자 출력안되는 버그 수정

* test: command 테스트 케이스 추가

Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>

* [동글] 체스 웹/DB 미션 제출합니다. (#152)

* refactor: 일부 클래스, 메소드 이름 변경, 메서드 추출, Board 일부 로직 변경

* feat: 팀별 점수 계산 기능 클래스 추출

* feat: 체스 기물 이미지 추가

* feat: 팀별 점수 반환기능 추가

* style: code formatting

* feat: 보드위 놓여있는 모든 기물 dto 목록 반환 기능 추가

* feat: 보드위 기물 이동 기능, 변화 생긴 지점 BoardDTO 목록 반환 기능 추가

* feat: 웹 UI  체스말 이동 기능 추가

* fix: 게임 중간에 재시작을 누르는 경우, 게임턴이 백팀으로 초기화 되지 않는 버그 수정

* feat: 체스 말 이동 기능 추가

* fix: 체스 기물 이미지 클릭시, cell이 클릭 되지 않는 버그 수정

* feat: 웹상 게임 상태 종료 여부 체크, 조건에 따른 게임 종료 기능 추가

* feat: data base 연결 추가

* docs: 기능목록 구현 갱신

* refactor: http api response 구조 변경 위한 response 관련 클래스 추가

* refactor: 응답 json 데이터 응답상태, 데이터, 메시지 형태로 포맷화

* refactor: dao에서 사용하는 jdbc 공통 로직 jdbctemplate로 분리

* fix: jdbc template out of bound index exception 버그 수정

* refactor: controller 모든 응답 내 try-catch 문 중복 제거

* refactor: jdbc template 내 중복 제거, DAO find 반환 타입 optional 변경

* refactor: 게임 상태 변경 요청 로직내 if-else 문 중복 제거

* refactor: 상태 값 반환 타입 enum 에서 string 으로 변경

* refactor: index 페이지 랜더링 객체 static 변수로 미리 생성

* refactor: 문자열 -> board 객체 파싱로직 리팩토링, 생성자 인자 null 검증 추가

* refactor: 점수 계산 기능 Result 객체로 위임

* refactor: 피드백 반영

* refactor: js 함수들 변수로 표현

* test: service 테스트 추가

* chore : 기존 체스 구현 가져옴

* refactor : 이동경로 반환 전략 적용

* refactor : 보드를 파싱하는 로직을 분리

* refactor : StateType enum 제거

* refactor : GameState을 Game으로 수정

* Board 에서 parseString() 지우기

* refactor : 패키지 구조 변경 및 import 문 정리

* refactor : board parser 매직넘버 제거, 변수명 변경

Co-authored-by: 박재성 <pobi@woowahan.com>
Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>

* feat : spring 컨트롤러 작성

* feat : spring 컨트롤러 작성 완료

* refactor : 기존 예외처리 로직 controller에서 service로 이동, 알트 피드백 반영

* fix : 충돌 해결

* style : 자바 컨벤션에 맞도록 코드 수정

* fix : 병합 충돌 해결

* refactor : chess controller view, rest controller 로 분리

* refac: 또링 피드백 반영

Co-authored-by: taejinseok <46241671+taejinseok@users.noreply.github.com>
Co-authored-by: 박재성 <pobi@woowahan.com>
Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>
Co-authored-by: taejinseok <stj930@gmail.com>
woowahan-pjs pushed a commit that referenced this pull request May 3, 2020
* [동글] 체스 스프링 실습 1단계 미션 제출합니다. (#28)

* Initial commit

* initial commit

* upgrade library version, config useJUnitPlatform

* [동글] 체스 미션 1주차 제출합니다. (#87)

* [Test] 테스트란다

* docs: 기능 구현 목록 생성

* feat: 위치 객체 생성

* feat: Position 캐싱 적용

* feat: Position 캐싱 추가 구현

* test: 체스말 테스트 코드 추가

* feat: 게임 말, 폰, 팀 클래스 추가

* feat: 모든 종류 체스말 클래스 생성

* feat: 명령어 enum 추가

* docs: README 수정

* refactor: Piece 내의 Position 제거

* feat: 체스 말 도달 가능 경로 반환 로직 추가

* feat: 직선경로 여부 판단로직 추가

* feat: 두 체스말의 행이 일치하는지 확인하는 기능 구현

* feat: 두 위치의 행이 일치하는 경우 경로 계산

* docs: 기능목록 수정

* feat: 보드 클래스 추가

* test: Board의 생성 테스트 작성

* feat: 보드 위 체스말 이동 기능 추가

* feat: MoveValidStrategy 클래스 생성

* feat: 주어진 경로(List<Position>)안에 말이 있는지 판별하는 로직 추가

* test: 체스말의 경로 이동 가능 여부 테스트 추가

* feat: 랭크 대소 비교 로직 추가

* feat: 파일(열) 비교 로직 추가

* refactor: PieceTest를 PawnTest와 RookTest로 분리

* feat: string을 통해 File 객체 찾기 추가

* refactor: Strategy관련 코드 삭제, Board내부로 체스말 이동 로직 옮김

* feat: 흑팀 체스말 초기화

* feat: 백팀 체스말 초기화, View 생성

* feat: 체스판 출력 기능

* feat: Team판별 로직 추가

* feat: 체스판 출력 기능 보완

* feat: 컨트롤러 생성

* feat: 게임 명령어 입력 기능 추가

* feat: 1단계 완료

* feat: 게임 시작 메시지 출력 메서드 추가

* feat: controller에 while문 추가

* feat: 이동할 좌표 입력 메서드 추가

* feat: 비숍 이동 여부 확인 기능 추가

* feat: 주어진 두 위치가 대각선인지 확인하는 로직 추가

* feat: 비숍의 좌상 대각선 방면 경로 확인 기능

* feat: 대각선 위치의 두 Position의 경로를 찾는 메서드 추가

* test: 비숍이동 로직 테스트 작성

* feat: 대각선 위치의 두 Position의 경로를 찾는 메서드 구현

* feat: 퀸 이동 기능 구현

* test: 퀸, 나이트, 킹 테스트 코드 추가

* feat: King 이동 가능 여부 판단 메서드 생성

* feat: King 이동 가능 여부 판단 메서드 구현

* feat: Knight 이동 가능 여부 판단 메서드 구조 구현

* test: Pawn 테스트 코드 작성

* test: Pawn의 첫 움직임 테스트 코드 작성

* test: Pawn 두칸 이동시 첫이동 여부 확인

* feat: Pawn의 움직임이 유효한지 체크하는 로직 추가

* feat: Pawn의 이동경로 반환 기능 구현

* feat: 상대 말을 잡는 로직 생성

* refactor: Bishop 이동경로 구하는 로직 변경

* feat: King, Knight 이동경로 구하는 로직 변경

* feat: 두 Position 사이의 모든 Position들을 반환하는 메서드 추가

* fix: Pawn 이동 로직 버그 수정

* fix: 테스트코드 fail 해결

* feat: 게임 종료 기능 구현

* refactor: 반복 조건 변경

* feat: 점수계산, 킹 잡힘 여부 확인 로직 수정

* feat: 기물의 이동과 기물의 catch 분리, 폰 움직임 버그 수정

* refactor: 개선된 보드 클래스 적용

* refactor: 메서드 포장

* feat: 현재 남아있는 체스말 기준 팀별 점수 계산 구현

* feat: 게임중 예외 발생시 명령어 재 입력 기능

* feat: Position 행, 열 중복 제거

* fix: 테스트 코드 버그 수정

* refactor: 일부 메서드 이름 수정

* refactor: 불필요 클래스 제거

* feat: 웹 UI 추가, 게임 시작시 , 게임 판 초기화, 점수판 갱신

* feat: 체스게임 상태 패턴 적용, 명령어별 컨트롤러 실행로직 enum 집중화

* test: 테스트 케이스 추가

* test: 테스트 케이스 추가

* fix: 킹이 잡혀서 게임이 끝나는 경우, 승자 출력안되는 버그 수정

* test: command 테스트 케이스 추가

Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>

* [동글] 체스 웹/DB 미션 제출합니다. (#152)

* refactor: 일부 클래스, 메소드 이름 변경, 메서드 추출, Board 일부 로직 변경

* feat: 팀별 점수 계산 기능 클래스 추출

* feat: 체스 기물 이미지 추가

* feat: 팀별 점수 반환기능 추가

* style: code formatting

* feat: 보드위 놓여있는 모든 기물 dto 목록 반환 기능 추가

* feat: 보드위 기물 이동 기능, 변화 생긴 지점 BoardDTO 목록 반환 기능 추가

* feat: 웹 UI  체스말 이동 기능 추가

* fix: 게임 중간에 재시작을 누르는 경우, 게임턴이 백팀으로 초기화 되지 않는 버그 수정

* feat: 체스 말 이동 기능 추가

* fix: 체스 기물 이미지 클릭시, cell이 클릭 되지 않는 버그 수정

* feat: 웹상 게임 상태 종료 여부 체크, 조건에 따른 게임 종료 기능 추가

* feat: data base 연결 추가

* docs: 기능목록 구현 갱신

* refactor: http api response 구조 변경 위한 response 관련 클래스 추가

* refactor: 응답 json 데이터 응답상태, 데이터, 메시지 형태로 포맷화

* refactor: dao에서 사용하는 jdbc 공통 로직 jdbctemplate로 분리

* fix: jdbc template out of bound index exception 버그 수정

* refactor: controller 모든 응답 내 try-catch 문 중복 제거

* refactor: jdbc template 내 중복 제거, DAO find 반환 타입 optional 변경

* refactor: 게임 상태 변경 요청 로직내 if-else 문 중복 제거

* refactor: 상태 값 반환 타입 enum 에서 string 으로 변경

* refactor: index 페이지 랜더링 객체 static 변수로 미리 생성

* refactor: 문자열 -> board 객체 파싱로직 리팩토링, 생성자 인자 null 검증 추가

* refactor: 점수 계산 기능 Result 객체로 위임

* refactor: 피드백 반영

* refactor: js 함수들 변수로 표현

* test: service 테스트 추가

* chore : 기존 체스 구현 가져옴

* refactor : 이동경로 반환 전략 적용

* refactor : 보드를 파싱하는 로직을 분리

* refactor : StateType enum 제거

* refactor : GameState을 Game으로 수정

* Board 에서 parseString() 지우기

* refactor : 패키지 구조 변경 및 import 문 정리

* refactor : board parser 매직넘버 제거, 변수명 변경

Co-authored-by: 박재성 <pobi@woowahan.com>
Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>

* [동글] 스프링 실습 2단계 미션 제출합니다. (#89)

* feat : spring 컨트롤러 작성

* feat : spring 컨트롤러 작성 완료

* refactor : 기존 예외처리 로직 controller에서 service로 이동, 알트 피드백 반영

* fix : 충돌 해결

* style : 자바 컨벤션에 맞도록 코드 수정

* fix : 병합 충돌 해결

* refactor : chess controller view, rest controller 로 분리

* feat : spring-data-jdbc 적용

* refactor : game 도메인 id 필드 제거

* refactor : game entity id getter 제거

* refactor : 피드백 반영

* refac: 또링 피드백 반영

Co-authored-by: taejinseok <46241671+taejinseok@users.noreply.github.com>
Co-authored-by: 박재성 <pobi@woowahan.com>
Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>
Co-authored-by: taejinseok <stj930@gmail.com>
gracefulBrown pushed a commit that referenced this pull request May 4, 2020
* [동글] 체스 스프링 실습 1단계 미션 제출합니다. (#28)

* Initial commit

* initial commit

* upgrade library version, config useJUnitPlatform

* [동글] 체스 미션 1주차 제출합니다. (#87)

* [Test] 테스트란다

* docs: 기능 구현 목록 생성

* feat: 위치 객체 생성

* feat: Position 캐싱 적용

* feat: Position 캐싱 추가 구현

* test: 체스말 테스트 코드 추가

* feat: 게임 말, 폰, 팀 클래스 추가

* feat: 모든 종류 체스말 클래스 생성

* feat: 명령어 enum 추가

* docs: README 수정

* refactor: Piece 내의 Position 제거

* feat: 체스 말 도달 가능 경로 반환 로직 추가

* feat: 직선경로 여부 판단로직 추가

* feat: 두 체스말의 행이 일치하는지 확인하는 기능 구현

* feat: 두 위치의 행이 일치하는 경우 경로 계산

* docs: 기능목록 수정

* feat: 보드 클래스 추가

* test: Board의 생성 테스트 작성

* feat: 보드 위 체스말 이동 기능 추가

* feat: MoveValidStrategy 클래스 생성

* feat: 주어진 경로(List<Position>)안에 말이 있는지 판별하는 로직 추가

* test: 체스말의 경로 이동 가능 여부 테스트 추가

* feat: 랭크 대소 비교 로직 추가

* feat: 파일(열) 비교 로직 추가

* refactor: PieceTest를 PawnTest와 RookTest로 분리

* feat: string을 통해 File 객체 찾기 추가

* refactor: Strategy관련 코드 삭제, Board내부로 체스말 이동 로직 옮김

* feat: 흑팀 체스말 초기화

* feat: 백팀 체스말 초기화, View 생성

* feat: 체스판 출력 기능

* feat: Team판별 로직 추가

* feat: 체스판 출력 기능 보완

* feat: 컨트롤러 생성

* feat: 게임 명령어 입력 기능 추가

* feat: 1단계 완료

* feat: 게임 시작 메시지 출력 메서드 추가

* feat: controller에 while문 추가

* feat: 이동할 좌표 입력 메서드 추가

* feat: 비숍 이동 여부 확인 기능 추가

* feat: 주어진 두 위치가 대각선인지 확인하는 로직 추가

* feat: 비숍의 좌상 대각선 방면 경로 확인 기능

* feat: 대각선 위치의 두 Position의 경로를 찾는 메서드 추가

* test: 비숍이동 로직 테스트 작성

* feat: 대각선 위치의 두 Position의 경로를 찾는 메서드 구현

* feat: 퀸 이동 기능 구현

* test: 퀸, 나이트, 킹 테스트 코드 추가

* feat: King 이동 가능 여부 판단 메서드 생성

* feat: King 이동 가능 여부 판단 메서드 구현

* feat: Knight 이동 가능 여부 판단 메서드 구조 구현

* test: Pawn 테스트 코드 작성

* test: Pawn의 첫 움직임 테스트 코드 작성

* test: Pawn 두칸 이동시 첫이동 여부 확인

* feat: Pawn의 움직임이 유효한지 체크하는 로직 추가

* feat: Pawn의 이동경로 반환 기능 구현

* feat: 상대 말을 잡는 로직 생성

* refactor: Bishop 이동경로 구하는 로직 변경

* feat: King, Knight 이동경로 구하는 로직 변경

* feat: 두 Position 사이의 모든 Position들을 반환하는 메서드 추가

* fix: Pawn 이동 로직 버그 수정

* fix: 테스트코드 fail 해결

* feat: 게임 종료 기능 구현

* refactor: 반복 조건 변경

* feat: 점수계산, 킹 잡힘 여부 확인 로직 수정

* feat: 기물의 이동과 기물의 catch 분리, 폰 움직임 버그 수정

* refactor: 개선된 보드 클래스 적용

* refactor: 메서드 포장

* feat: 현재 남아있는 체스말 기준 팀별 점수 계산 구현

* feat: 게임중 예외 발생시 명령어 재 입력 기능

* feat: Position 행, 열 중복 제거

* fix: 테스트 코드 버그 수정

* refactor: 일부 메서드 이름 수정

* refactor: 불필요 클래스 제거

* feat: 웹 UI 추가, 게임 시작시 , 게임 판 초기화, 점수판 갱신

* feat: 체스게임 상태 패턴 적용, 명령어별 컨트롤러 실행로직 enum 집중화

* test: 테스트 케이스 추가

* test: 테스트 케이스 추가

* fix: 킹이 잡혀서 게임이 끝나는 경우, 승자 출력안되는 버그 수정

* test: command 테스트 케이스 추가

Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>

* [동글] 체스 웹/DB 미션 제출합니다. (#152)

* refactor: 일부 클래스, 메소드 이름 변경, 메서드 추출, Board 일부 로직 변경

* feat: 팀별 점수 계산 기능 클래스 추출

* feat: 체스 기물 이미지 추가

* feat: 팀별 점수 반환기능 추가

* style: code formatting

* feat: 보드위 놓여있는 모든 기물 dto 목록 반환 기능 추가

* feat: 보드위 기물 이동 기능, 변화 생긴 지점 BoardDTO 목록 반환 기능 추가

* feat: 웹 UI  체스말 이동 기능 추가

* fix: 게임 중간에 재시작을 누르는 경우, 게임턴이 백팀으로 초기화 되지 않는 버그 수정

* feat: 체스 말 이동 기능 추가

* fix: 체스 기물 이미지 클릭시, cell이 클릭 되지 않는 버그 수정

* feat: 웹상 게임 상태 종료 여부 체크, 조건에 따른 게임 종료 기능 추가

* feat: data base 연결 추가

* docs: 기능목록 구현 갱신

* refactor: http api response 구조 변경 위한 response 관련 클래스 추가

* refactor: 응답 json 데이터 응답상태, 데이터, 메시지 형태로 포맷화

* refactor: dao에서 사용하는 jdbc 공통 로직 jdbctemplate로 분리

* fix: jdbc template out of bound index exception 버그 수정

* refactor: controller 모든 응답 내 try-catch 문 중복 제거

* refactor: jdbc template 내 중복 제거, DAO find 반환 타입 optional 변경

* refactor: 게임 상태 변경 요청 로직내 if-else 문 중복 제거

* refactor: 상태 값 반환 타입 enum 에서 string 으로 변경

* refactor: index 페이지 랜더링 객체 static 변수로 미리 생성

* refactor: 문자열 -> board 객체 파싱로직 리팩토링, 생성자 인자 null 검증 추가

* refactor: 점수 계산 기능 Result 객체로 위임

* refactor: 피드백 반영

* refactor: js 함수들 변수로 표현

* test: service 테스트 추가

* chore : 기존 체스 구현 가져옴

* refactor : 이동경로 반환 전략 적용

* refactor : 보드를 파싱하는 로직을 분리

* refactor : StateType enum 제거

* refactor : GameState을 Game으로 수정

* Board 에서 parseString() 지우기

* refactor : 패키지 구조 변경 및 import 문 정리

* refactor : board parser 매직넘버 제거, 변수명 변경

Co-authored-by: 박재성 <pobi@woowahan.com>
Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>

* [동글] 스프링 실습 2단계 미션 제출합니다. (#89)

* feat : spring 컨트롤러 작성

* feat : spring 컨트롤러 작성 완료

* refactor : 기존 예외처리 로직 controller에서 service로 이동, 알트 피드백 반영

* fix : 충돌 해결

* style : 자바 컨벤션에 맞도록 코드 수정

* fix : 병합 충돌 해결

* refactor : chess controller view, rest controller 로 분리

* [동글] 체스 스프링 실습 3단계 미션 제출합니다. (#114)

* feat : spring-data-jdbc 적용

* refactor : game 도메인 id 필드 제거

* refactor : game entity id getter 제거

* refactor : 피드백 반영

* feat : 식별자 랜덤 생성, 방생성, 여러 게임 기능

* refac: 또링 피드백 반영

Co-authored-by: taejinseok <46241671+taejinseok@users.noreply.github.com>
Co-authored-by: 박재성 <pobi@woowahan.com>
Co-authored-by: 황준호 <42054054+hwanghe159@users.noreply.github.com>
Co-authored-by: taejinseok <stj930@gmail.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.

None yet

4 participants