-
Notifications
You must be signed in to change notification settings - Fork 10
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
[숫자 야구 게임] 이태균 과제 제출합니다. #3
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; | ||
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. 변수명을 좀더 명확하게 지어주세요!! 길어도 되니 어떤 용도로 쓰이는 변순지 명확히 알려주세요 |
||
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){ | ||
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. 이 while문을 새로운 메소드로 구분지을수 있을거 같아요! |
||
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){ | ||
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. static 함수를 사용한 이유가 있나요?? 있다면 어떤 이유인가요?? static함수를 사용하는 경우와 특징을 공부해보세요~~ |
||
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])){ | ||
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){ | ||
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(); | ||
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.
모든 기능이 한 클래스에 집중되어 있습니다. 객체지향적 설계를 생각해보고 관심사의 분리를 적용해보세요~~!!
야구게임을 진행할때, 필요한 객체, 기능들을 생각해보면 리팩토링 가능할 것 같습니다!!