forked from bark20/java-bridge
-
Notifications
You must be signed in to change notification settings - Fork 0
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
test #3
Open
ninaaano
wants to merge
15
commits into
main
Choose a base branch
from
ninaaano
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
test #3
Changes from all commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
3feefcf
test
ninaaano 2a3b2e8
docs : 기능 요구 사항 정리
ninaaano 3da387e
feat : 입력 값을 검증하는 클래스
ninaaano 1967711
feat : O,X 메세지 반환하는 클래스
ninaaano 1eaa1ce
feat : 움직이는 방향과 결과를 반환
ninaaano 1aec176
feat : 방향 반환하는 클래스
ninaaano 8db6a84
feat : 게임 진행 여부
ninaaano 1519c2d
feat : 성공, 실패를 표현
ninaaano 111d328
feat : 다리 생성기
ninaaano 5ea5807
feat : 사용자의 입력을 받는 클래스
ninaaano 1ac6d30
style : 패키지 변경
ninaaano 8924f06
docs : 요구사항 수정
ninaaano 715ce07
feat : 이동, 재시작, 탈출 여부
ninaaano 1631002
feat : 테스트를 위해 main class 시작
ninaaano 2906b0e
commit
ninaaano File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
- 다리는 왼쪽에서 오른쪽으로 건너야 한다 | ||
- 위 아래 둘 중 하나의 칸만 건널 수 있다 | ||
- 다리의 길이를 숫자로 입력받는다 | ||
- 다리를 생성할 때 위칸과 아래칸 중 건널 수 있는 칸은 0과 1를 이용한다 | ||
- 0인 경우 아래 칸, D로 나타낸다. | ||
- 1인 경우 위칸, U로 나타낸다 | ||
- 다리가 생성되면 플레이어가 이동할 칸을 선택한다 | ||
- 이동할 때 위칸은 대문자 U, 아래칸은 D를 입력한다 | ||
- 이동한 칸을 건널 수 있다면 O, 건널 수 없다면 X로 표시한다 | ||
- 다리를 끝까지 건너면 게임이 종료된다 | ||
- 게임 중 실패 시 게임을 재시작하거나 종료할 수 있다 | ||
- 재시작 해도 처음 만든 다리를 재사용한다 | ||
- 게임 결과에 총 시도한 횟수는 첫 시도를 포함해 게임을 종료할 때까지 시도한 횟수를 나타낸다 | ||
- 사용자가 잘못된 값을 입력할 경우 예외를 발생시키고 [ERROR] 로 시작하는 메세지를 출력한다 | ||
- 그 부분부터 입력을 다시 받는다 | ||
|
||
#### 메서드 네이밍 규칙 | ||
- 메서드명은 동사/전치사, 클래스명은 명사, 다른 타입으로 전환하는 메서드나 빌더 패턴을 구현한 클래스의 메서드는 전치사를 쓸 수 없다 | ||
- 상태 데이터를 가지는 객체에서 데이터를 get하지말고 객체에 메세지를 보낸다 | ||
- init : 데이터를 초기화 하는 메서드 명에 쓰인다 | ||
- is/has/can : boolean 값을 리턴한다. | ||
- is : true,false를 판단하는 메서드 명 | ||
- has : 데이터를 가지고 있는지 확인하는 메서드 명 | ||
- can : 할 수 있는지 , 없는지 확인하는 메서드 명 | ||
- create : 새로운 객체를 만든 후 리턴해주는 메서드 명 | ||
- find : 데이터를 찾는 메서드 명 | ||
- to : 해당 객체를 다른 형태의 객체로 변환해주는 메서드 명 | ||
- A-By-B : B를 기준으로 A를 하겠다는 메서드 명 | ||
|
||
### 입력 | ||
- [x] 다리 길이를 입력받는다 | ||
- [x] 잘못된 값 입력 시 예외처리 | ||
- [x] 이동할 칸을 입력 받는다 | ||
- [x] 잘못된 값 입력 시 예외처리 | ||
- [x] 게임 재시작/종료 여부를 입력받는다 | ||
- [x] 잘못된 값 입력 시 예외처리 | ||
### 출력 | ||
- [x] 게임 시작 문구 | ||
- [] 게임 종료 문구 | ||
- [] 최종 게임 결과 | ||
- [] 게임 성공 여부 | ||
- [] 총 시도한 횟수 | ||
- [] 게임 중 메세지 | ||
- [] 이동할 수 있는 칸을 선택한 경우 O 표시 | ||
- [] 이동할 수 없는 칸을 선택한 경우 X 표시 | ||
- [] 선택하지 않은 칸은 공백 한 칸으로 표시 | ||
|
||
- [] 다리의 시작은 `[`, 다리의 끝은 `]`으로 표시 | ||
- [] 다리 칸의 구분은 ` | `(앞뒤 공백 포함) 문자열로 구분 | ||
- [] 현재까지 건넌 다리를 모두 출력 | ||
- [] 게임을 다시 시도할지 여부를 묻는 메세지 | ||
- [] 이동할 칸 입력을 요구하는 메세지 | ||
- [] 잘못된 값 입력 시 예외처리 | ||
- [] 재입력을 요구하는 메세지 | ||
### 모델(도메인) | ||
- [x] BridgeMaker : 사용자가 입력한 숫자만큼 다리를 생성한다 | ||
- [x] 숫자만큼 리스트에 담아 반환한다 | ||
- [x] GameStatus : 게임 진행 상황. 사용자의 사항을 저장한다 | ||
- [x] getDirection : 방향과 결과 반환 | ||
- [x] isDirection : 입력 방향과 같은 방향인지 확인 | ||
- [x] startGameCount : 게임 시도 횟수 | ||
--- + 추가된 사항 | ||
- [x] playGameCount : 게임 시도 횟수 증가 | ||
- [x] getAttempsGame : 게임 시도 횟수 반환 | ||
- [x] Direction : 방향 표현 | ||
- [x] 0,1 사이의 값을 받아 D,U중 하나 반환 | ||
- [x] D,U를 입력받아 인스턴스 반환 | ||
- [x] InputValidation : 사용자의 입력값을 검증한다 | ||
- [x] 숫자는 3-20 사이여야한다 | ||
- [x] 다리 생성 시 문자열이 입력될 경우 예외 처리 | ||
- [x] 이동 시 문자가 U,D여야한다 | ||
- [x] 요구한 문자열과 다른 값 입력 시 예외처리 | ||
- [x] 게임 재시작/종료는 R,Q여야 한다 | ||
- [x] 요구한 문자열과 다른 값 입력 시 예외처리 | ||
- [] Bridgegeneration : 다리 생성기 | ||
- [] 라운드와 방향을 입력받아 moveResult 반환 | ||
- [] isLastRound : 마지막 라운드인지 확인 | ||
- [x] MoveResult : 성공, 실패를 표현 | ||
- [x] getCommand : O,X 반환 | ||
- [x] isFail : 결과가 실패인지 반환 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,12 @@ | ||
package bridge; | ||
|
||
import bridge.controller.BridgeGameController; | ||
|
||
public class Application { | ||
|
||
public static void main(String[] args) { | ||
// TODO: 프로그램 구현 | ||
BridgeGameController bridgeGameController = new BridgeGameController(); | ||
bridgeGameController.run(); | ||
} | ||
} |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package bridge.controller;// @ author ninaaano | ||
|
||
import bridge.BridgeMaker; | ||
import bridge.model.Bridge; | ||
import bridge.model.GameStatus; | ||
import bridge.model.MoveResult; | ||
import bridge.view.InputView; | ||
import bridge.view.OutputView; | ||
|
||
import java.util.List; | ||
|
||
public class BridgeGameController { | ||
|
||
private InputView inputView = new InputView(); | ||
private OutputView outputView = new OutputView(); | ||
private BridgeMaker bridgeMaker = new BridgeMaker(); | ||
|
||
public BridgeGameController() { | ||
inputView.readBridgeSize(); | ||
|
||
|
||
} | ||
|
||
|
||
|
||
public void run(){ | ||
Bridge bridge = initGame(); | ||
while(GameStatus.isPlay){ | ||
} | ||
|
||
} | ||
|
||
|
||
private void createBrigde(){ | ||
inputView.readBridgeSize(); | ||
|
||
|
||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package bridge.model;// @ author ninaaano | ||
|
||
import java.util.List; | ||
|
||
public class Bridge { | ||
|
||
private List<String> bridgePath; | ||
|
||
public Bridge(List<String> bridgePath) { | ||
this.bridgePath = bridgePath; | ||
} | ||
|
||
public MoveResult correctPath(String command, int count){ | ||
boolean match = bridgePath.get(count).equals(command); | ||
return MoveResult.toMatch(command,match); | ||
} | ||
|
||
public boolean isEnd(int count){ | ||
return bridgePath.size() == count; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
package bridge.model; | ||
|
||
import java.util.LinkedList; | ||
import java.util.List; | ||
|
||
/** | ||
* 다리 건너기 게임을 관리하는 클래스 | ||
*/ | ||
public class BridgeGame { | ||
|
||
private List<String> upCommand; | ||
private List<String> downCommand; | ||
private int moveCount; | ||
private int gameCount; | ||
|
||
public BridgeGame() { | ||
this.upCommand = new LinkedList<>(); | ||
this.downCommand = new LinkedList<>(); | ||
this.gameCount = 1; | ||
this.moveCount = 0; | ||
} | ||
|
||
public int getMoveCount() { | ||
return moveCount; | ||
} | ||
|
||
public int getGameCount() { | ||
return gameCount; | ||
} | ||
|
||
/** | ||
* 사용자가 칸을 이동할 때 사용하는 메서드 | ||
* <p> | ||
* 이동을 위해 필요한 메서드의 반환 타입(return type), 인자(parameter)는 자유롭게 추가하거나 변경할 수 있다. | ||
*/ | ||
public List<List<String>> move(MoveResult moveResult) { | ||
if (moveResult.getCommand().equals(Direction.UP.getCommand())) { | ||
return addUpCount(moveResult); | ||
} | ||
return addDownCount(moveResult); | ||
} | ||
|
||
private List<List<String>> addDownCount(MoveResult moveResult) { | ||
downCommand.add(moveResult.getCommand()); | ||
upCommand.add(" "); | ||
return List.of(upCommand, downCommand); | ||
} | ||
|
||
private List<List<String>> addUpCount(MoveResult moveResult) { | ||
upCommand.add(moveResult.getCommand()); | ||
downCommand.add(" "); | ||
return List.of(upCommand, downCommand); | ||
} | ||
|
||
/** | ||
* 사용자가 게임을 다시 시도할 때 사용하는 메서드 | ||
* <p> | ||
* 재시작을 위해 필요한 메서드의 반환 타입(return type), 인자(parameter)는 자유롭게 추가하거나 변경할 수 있다. | ||
*/ | ||
public void retry() { | ||
upCommand.clear(); | ||
downCommand.clear(); | ||
gameCount++; | ||
} | ||
|
||
public int countMove() { | ||
return moveCount++; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package bridge.model;// @ author ninaaano | ||
|
||
import java.util.Arrays; | ||
import java.util.stream.Stream; | ||
|
||
public enum Direction { | ||
UP(1,"U"), | ||
DOWN(0,"D") | ||
; | ||
|
||
private static final String INVALID_INPUT_COMMAND_MESSAGE = "U와 D중 입력해주세요."; | ||
|
||
private final Integer code; | ||
private final String command; | ||
|
||
Direction(Integer code, String command) { | ||
this.code = code; | ||
this.command = command; | ||
} | ||
|
||
public String getCommand(){ | ||
return command; | ||
} | ||
|
||
public static Direction toCommand(int code) { | ||
return Stream.of(values()) | ||
.filter(direction -> direction.code == code) | ||
.findFirst() | ||
.orElseThrow(() -> new IllegalArgumentException(INVALID_INPUT_COMMAND_MESSAGE)); | ||
} | ||
// | ||
// public static Direction getCommand(String command){ | ||
// return Arrays.stream(values()) | ||
// .filter(direction -> direction.command.equals(command)) | ||
// .findFirst() | ||
// .orElseThrow(() -> new IllegalArgumentException(INVALID_INPUT_COMMAND_MESSAGE)); | ||
// } | ||
|
||
public boolean isNotEqualsDirection(Direction direction){ | ||
return this != direction; | ||
} | ||
|
||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package bridge.model;// @ author ninaaano | ||
|
||
public enum GameCommand { | ||
PLAY("R"), | ||
STOP("Q"); | ||
|
||
private String command; | ||
|
||
GameCommand(String command) { | ||
this.command = command; | ||
} | ||
|
||
public String getProgerss(){ | ||
return command; | ||
} | ||
} |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
그 객체가 이렇게 초기화를 시킨다고 본래는 생각하고 있지만 기본 생성자를 이용하여서 초기화를 먼저 해주어야지 진짜로 초기화 해주시는 거라고 하시더라구요.
그래서 앞으로 생성자 안에서 객체 초기화 시켜주시면 좋을 거 같아요
ex)
BridgeGameController{
this.inputView=new InputView();
}