-
Notifications
You must be signed in to change notification settings - Fork 10
[숫자 야구 게임] 이태균 과제 제출합니다. #3
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
base: main
Are you sure you want to change the base?
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| package baseball; | ||
|
|
||
| import camp.nextstep.edu.missionutils.Randoms; | ||
|
|
||
| import java.util.ArrayList; | ||
| import java.util.List; | ||
|
|
||
| public class Computer { | ||
| private List<Integer> com; | ||
|
||
| public void Random(){ | ||
| com = new ArrayList<>(); | ||
| while(com.size() < 3){ | ||
| int randomNumber = Randoms.pickNumberInRange(1,9); | ||
| if(!com.contains(randomNumber)){ | ||
| com.add(randomNumber); | ||
| } | ||
| } | ||
| } | ||
| public List<Integer> getCom(){ | ||
| return com; | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| package baseball; | ||
|
|
||
| public class Game { | ||
| private Computer computer; | ||
| private Input input; | ||
| private Go go; | ||
| public Game(){ | ||
| this.computer = new Computer(); | ||
| this.input = new Input(); | ||
| this.go = new Go(); | ||
| } | ||
| public void start(){ | ||
| while(true){ | ||
| System.out.println("숫자 야구 게임을 시작합니다."); | ||
| computer.Random(); | ||
| while(true){ | ||
|
||
| System.out.println("숫자를 입력해주세요 : "); | ||
| int[] player = input.getInput(); | ||
| String result = go.Check(computer.getCom(), player); | ||
| System.out.println(result); | ||
|
|
||
| if(result.equals("3스트라이크")){ | ||
| break; | ||
| } | ||
| } | ||
| System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료"); | ||
| System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요."); | ||
| String next = input.getUserInput(); | ||
| if (next.equals("2")) { | ||
| break; | ||
| } | ||
| else if(!next.equals("1")){ | ||
| continue; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| package baseball; | ||
|
|
||
| import java.util.List; | ||
|
|
||
| public class Go { | ||
| public static String Check(List<Integer> computer, int[] input){ | ||
|
||
| int strike = 0; | ||
| int ball = 0; | ||
| for(int i = 0; i < 3; i++){ | ||
| for(int j = 0; j < 3; j++){ | ||
| if(computer.get(i).equals(input[j])){ | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. List<>에 contains라는 함수가 있습니다 찾아보고 활용해보세요~~! |
||
| if(i == j){ | ||
| strike++; | ||
| } | ||
| else{ | ||
| ball++; | ||
| } | ||
| } | ||
| } | ||
| } | ||
| if(ball == 0 && strike == 0){ | ||
| return "낫싱"; | ||
| } | ||
| else if(strike == 0){ | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if문에서 return을 활용하면 else if 대신 if만 사용할 수 있습니다!! |
||
| return ball + "볼"; | ||
| } | ||
| else if(ball == 0){ | ||
| return strike + "스트라이크"; | ||
| } | ||
| else{ | ||
| return ball + "볼 " + strike + "스트라이크"; | ||
| } | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| package baseball; | ||
|
|
||
| import camp.nextstep.edu.missionutils.Console; | ||
|
|
||
| public class Input { | ||
| private int[] in = new int[3]; | ||
| public String getUserInput(){ | ||
| return Console.readLine(); | ||
| } | ||
| public int[] getInput(){ | ||
| String input = getUserInput(); | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 정수형 입력이 아니면 확실히 예외 처리 가능한가요?? 또 세자리가 아니면 예외처리 되나요?? |
||
| int a = Integer.parseInt(input); | ||
| if(a < 0 || a > 999){ | ||
| throw new IllegalArgumentException(); | ||
| } | ||
| for(int i = 0; i < 3; i++){ | ||
| in[i] = input.charAt(i)-'0'; | ||
| } | ||
| return in; | ||
| } | ||
| } | ||
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.
모든 기능이 한 클래스에 집중되어 있습니다. 객체지향적 설계를 생각해보고 관심사의 분리를 적용해보세요~~!!
야구게임을 진행할때, 필요한 객체, 기능들을 생각해보면 리팩토링 가능할 것 같습니다!!