Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
7d27a33
fix: 향상된 문법으로 equals 수정
junseoplee Jul 19, 2024
d6ca9b5
docs: 기능 요구 사항 업데이트
junseoplee Jul 20, 2024
5e9f872
feat: 승리한 팀을 찾고 출력하는 기능 구현
junseoplee Jul 20, 2024
fba2d73
feat: King 이 잡혔을 때 승리 팀과 점수를 출력하는 기능 구현
junseoplee Jul 22, 2024
90f634b
fix: Pawn 피스가 적이 없을 경우에도 대각선으로 움직일 수 있던 오류 수정
junseoplee Jul 22, 2024
89edcb7
docs: 기능 요구 사항 정리
junseoplee Jul 22, 2024
0218cec
refactor: 프로젝트 구조 수정
junseoplee Jul 23, 2024
c786f3d
feat: 게임별로 구분할 수 있는 ChessGame 클래스 구현, 저장할 수 있도록 상태를 나타내는 State 열거형 구현
junseoplee Jul 23, 2024
5fd16d9
feat: DB 연결에 필요한 설정 추가
junseoplee Jul 23, 2024
54b66b5
feat: DB 연결을 위한 ChessGameDao 기능 추가
junseoplee Jul 23, 2024
9f7f78c
feat: DB 연결을 위한 PieceDao 기능 추가
junseoplee Jul 23, 2024
037471d
feat: DB 연결을 위한 PieceDao 기능 추가
junseoplee Jul 23, 2024
61d451a
fix: DB 연결을 위한 설정 수정
junseoplee Jul 25, 2024
3f07391
refactor: Board 반환을 위한 리팩토링
junseoplee Jul 25, 2024
a4d293e
refactor: 진행 상태를 보다 명확하게 알 수 있도록 변경
junseoplee Jul 25, 2024
e20a260
feat: DB 연결 기능과 컨트롤러 조립
junseoplee Jul 25, 2024
80b7e47
docs: 기능 요구 사항 및 에러메세지 업데이트
junseoplee Jul 25, 2024
a3ac67f
fix: 기존 게임이 정상적으로 불러와지지 않던 오류 수정
junseoplee Jul 25, 2024
ddfb961
refactor: 명령어를 다루는 책임을 컨트롤러에서 분리
junseoplee Jul 29, 2024
7c6c78e
feat: UnsupportedOperationException 으로 사용되지 않는 메서드 관리
junseoplee Jul 29, 2024
0ad0e65
test: 폰의 공격 움직임을 검증하는 테스트 추가
junseoplee Jul 29, 2024
3ce712d
fix: 변수 이름을 명확하게 수정
junseoplee Jul 29, 2024
d5483e4
fix: 상태를 더 명확하게 나타낼 수 있는 이름으로 수정
junseoplee Jul 29, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 27 additions & 7 deletions src/main/java/chess/domain/game/ChessGame.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,24 @@ public class ChessGame {

public ChessGame(long id, Board board, Color turn) {
this.id = id;
this.state = State.WAITING;
this.state = State.RUN;
this.board = board;
this.turn = turn;
}

public void start() {
if (state == State.RUNNING) {
throw new IllegalArgumentException(ErrorMessage.ALREADY_RUNNING.getMessage());
if (state == State.START) {
throw new IllegalArgumentException(ErrorMessage.ALREADY_START.getMessage());
}
this.state = State.RUNNING;
this.state = State.START;
}

public void end() {
this.state = State.FINISHED;
this.state = State.END;
}

public void checkmate() {
this.state = State.CHECKMATE;
Copy link
Owner

Choose a reason for hiding this comment

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

checkmate의 정의와 다르게 사용되고 있어서 오히려 혼란을 유발할 수도 있을 것 같네요

Copy link
Author

Choose a reason for hiding this comment

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

동의합니다. 보다 명확하게 나타낼 수 있도록 상태를 kingIsCaptured로 변경했습니다

}

public void movePiece(Position source, Position target) {
Expand All @@ -45,19 +49,35 @@ public Double calculateScore(Color color) {
}

private void checkRunning() {
if (state == State.RUNNING) {
if (state == State.RUN) {
return;
}
throw new IllegalArgumentException(ErrorMessage.NOT_RUNNING.getMessage());
}

private void checkKingCaptured(Piece capturedPiece) {
if (capturedPiece != null && capturedPiece.pieceType() == PieceInfo.KING) {
end();
checkmate();
}
}

private void changeTurn() {
turn = turn.changeTurn();
}

public Color getTurn() {
return turn;
}

public long getId() {
return id;
}

public Board getBoard() {
return board;
}

public State getState() {
return state;
}
}
7 changes: 4 additions & 3 deletions src/main/java/chess/domain/game/State.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package chess.domain.game;

public enum State {
WAITING,
RUNNING,
FINISHED
START,
RUN,
END,
CHECKMATE
}