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

[충남대 BE_신성희] 미션 제출합니다. #145

Open
wants to merge 20 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
6cc3579
docs: readme 작성
Shsin9797 May 6, 2024
b2d930a
docs: readme 작성 2
Shsin9797 May 6, 2024
1169844
feat: Player 클래스- 게임플레이어로부터 값을 입력받는 메서드 구현
Shsin9797 May 6, 2024
cb22779
fix: Player 클래스- 게임플레이어로부터 값을 입력받는 메서드 getNum에서 잘못된값 입력받았을경우 오류발생시키는 …
Shsin9797 May 6, 2024
06ce0d9
fix: Player 클래스- 게임플레이어로부터 값을 입력받는 메서드 getNum의 입력값 로직 변경
Shsin9797 May 6, 2024
0a32682
fix: Player 클래스- 게임플레이어로부터 값을 입력받는 메서드 getNum의 입력값 로직 변경2
Shsin9797 May 6, 2024
d8569f5
fix: Player 클래스- 게임플레이어로부터 값을 입력받는 메서드 getNum의 입력값 로직 변경3
Shsin9797 May 6, 2024
5eb1b80
feat: Computer 클래스 - 컴퓨터의 랜덤값 3개 설정하는 기능 구현
Shsin9797 May 6, 2024
7836996
feat: Computer 클래스 - 컴퓨터의 값을 비교하는 메서드 구현
Shsin9797 May 6, 2024
e157cf3
fix: Computer 클래스 - 컴퓨터의 값을 비교하는 메서드 안내멘트 나오게 수정
Shsin9797 May 6, 2024
ce3bbaf
feat: 게임을 새로시작할지 말지 사용자로부터 입력받는 메서드 구현
Shsin9797 May 6, 2024
cc3657d
feat: 게임 한개를 진행하는 메서드 구현
Shsin9797 May 6, 2024
6c72369
feat: 게임 진행하는 application 메서드 구현
Shsin9797 May 6, 2024
2a491aa
fix: 사용자로부터 숫자를 받는 메서드 수정
Shsin9797 May 6, 2024
19770a5
fix: 버그 픽스 진행중
Shsin9797 May 6, 2024
fb442d3
fix(Player) : 사용자로부터 값을 입력받아서 숫자로 변환하는 부분 수정
Shsin9797 May 6, 2024
fa2c3fc
fix(Player) : 출력값 수정
Shsin9797 May 6, 2024
4a33426
fix(Computer) : 컴퓨터의 랜덤값이 각각 다른값이 설정되도록 수정
Shsin9797 May 6, 2024
02716ef
fix(Player) : 플레이어가 입력한 값이 각각 다른값이 설정되도록 수정
Shsin9797 May 6, 2024
f2037ea
fix(Player) : ball의 개수를 세는 코드 버그 수정
Shsin9797 May 6, 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
25 changes: 24 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,24 @@
# java-baseball-precourse
# java-baseball-precourse
기능요구사항

[힌트제시]
같은자리에 같은수 : 스트라이크
다른자리 숫자가 같음 : 볼
같은수 0 개 : 낫싱

[승리조건]
컴퓨터의 숫자 전체를 맞추면 승리

기능 목록

플레이어 클래스
* 숫자입력받기

계산 클래스
* 컴퓨터의 숫자 정하기 : 랜덤 값
* 입력값과 컴퓨터값 비교
* 비교결과로 힌트 제시
* 일치할때 게임종료 및 게임 재시작 멘트

게임 실행 클래스
* 게임을 실행한다
19 changes: 19 additions & 0 deletions src/main/java/Application.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import java.util.List;

public class Application {
public static void main(String[] args) {
Player pl = new Player();
Computer com = new Computer();
OneGameProgress oneGameProgress= new OneGameProgress();

boolean gameProgress = true;

while (gameProgress) {
List<Integer> comNums= com.setComNum();
oneGameProgress.oneGame(comNums,pl,com);
gameProgress = oneGameProgress.gameRestart();
}


}
}
66 changes: 66 additions & 0 deletions src/main/java/Computer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Computer {
public List<Integer> setComNum() {
Random r = new Random();
List<Integer> comNum = new ArrayList<>();
while (comNum.size() < 3) {
int RandomInt= r.nextInt(1, 9);
if (!comNum.contains(RandomInt)) {
comNum.add(RandomInt);
}
}
return comNum;

}

public boolean compare(List<Integer> a, List<Integer> b) {
int strikeNum = 0;
int ballNum = 0;

for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
strikeNum += isStrike(a.get(i), b.get(j), i, j);
ballNum += isBall(a.get(i), b.get(j), i, j);
}
}
if (strikeNum ==3){
System.out.println("3스트라이크");
System.out.println("3개의 숫자를 모두 맞히셨습니다! 게임 종료");
return true;
} else if(strikeNum !=0 && ballNum !=0){
System.out.printf("%d볼 %d스트라이크\n",ballNum,strikeNum);
return false;
} else if(strikeNum ==0 & ballNum !=0){
System.out.printf("%d볼\n",ballNum);
return false;
} else if(strikeNum !=0 & ballNum ==0){
System.out.printf("%d스트라이크\n",strikeNum);
return false;
} else if(strikeNum ==0 & ballNum ==0){
System.out.println("낫싱");
return false;
} else{
return false; // 이부분 수정 필요
}
}

public int isStrike(int aNum, int bNum, int aIdx, int bIdx) {
if ((aNum == bNum) && (aIdx == bIdx)) {
return 1;
} else {
return 0;
}
}
public int isBall(int aNum, int bNum,int aIdx,int bIdx){
if ((aNum == bNum) && (aIdx!=bIdx)) {
return 1;
}else {
return 0;
}
}


}
32 changes: 32 additions & 0 deletions src/main/java/OneGameProgress.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import java.util.List;
import java.util.Scanner;

public class OneGameProgress {
public void oneGame(List<Integer> comNum,Player player,Computer computer){
boolean isStrike= false;
while (!isStrike) {
isStrike= computer.compare(comNum, player.getNum());
}
}


public boolean gameRestart(){
System.out.println("게임을 새로 시작하려면 1, 종료하려면 2를 입력하세요.");
Scanner sc = new Scanner(System.in);
try{
int num = sc.nextInt();
if (num ==1) {
return true;
} else if (num == 2) {
return false;
}else {
throw new IllegalArgumentException();
}

}catch (IllegalArgumentException e){
throw new IllegalArgumentException();
}


}
}
48 changes: 48 additions & 0 deletions src/main/java/Player.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Player {
public List<Integer> getNum(){
System.out.print("숫자를 입력해 주세요 : ");
Scanner sc= new Scanner(System.in);
try {
String inputInt = sc.next();

if (inputInt.length() != 3){
throw new IllegalArgumentException();
}

if ((inputInt.charAt(0) != inputInt.charAt(1)) && (inputInt.charAt(0) != inputInt.charAt(2)) && (inputInt.charAt(2) != inputInt.charAt(1))){
return makeListInt(inputInt);
} else {
throw new IllegalArgumentException();
}

} catch (IllegalArgumentException e){
throw new IllegalArgumentException();
}
}

public List<Integer> makeListInt(String inputInt){
List<Integer> inputIntList = new ArrayList<>();

for(int i = 0; i<3;i++){
int a = Integer.parseInt(Character.toString(inputInt.charAt(i)));

if (checkRange(a)) {
inputIntList.add(a);
}
}
return inputIntList;
}

public boolean checkRange(int i){
if ((i >=0) & (i <9)) {
return true;
} else {
throw new IllegalArgumentException();
}
}

}