자바문제[야구게임](반복문 이용)

이수보🧑🏻‍💻·2022년 1월 22일
0

문제

목록 보기
6/6

야구게임

오늘의 문제는 학창시절 누구나 한 번쯤 해봤을 게임으로 야구게임입니다.

음,,, 혹시라도 룰을 모르는 사람들을 위해 좀 끄적여 보겠습니다.

규칙

  • 1 ~ 9 까지 랜덤한 수를 3번 뽑을 수 있다.
  • 뽑은 3자리 숫자를 상대방의 숫자와 비교를 한다.
  • 상대방의 숫자와 자리, 값 모두 일치한다면 스트라이크!!
  • 값은 일치하지만 자리가 틀리다면 볼!
  • 하나도 일치하지 않는다면 아웃!!!
  • 중복값은 허용되지 않습니다.

예)
상대방의 숫자 : 1, 2, 3
내가뽑은 숫자 : 1, 3, 6

내가 뽑은 수 1은 상대방과 자리,값이 같기 때문에 1 스트라이크
숫자 3은 상대방과 자리가 다르기 때문에 1 볼
6은 자리, 값 모두 다름으로 1 아웃
최종적으로 나의 성적은 1strike, 1ball, 1out 이 된다.

  • 3strike가 되면 게임이 종료되는 야구게임을 만들어보자

꿀팁!
우리는 컬렉션 프레임워크 파트에서 중복을 배제해주는 무엇인가를 배웠습니다!


정답

		Scanner sc = new Scanner(System.in);
		HashSet<Integer> baseball = new HashSet<>();
		
		while(baseball.size() < 3){
			baseball.add((int)(Math.random() * 9) + 1);
		}
		List<Integer> basenum = new ArrayList<>(baseball);
		System.out.println(basenum);
		
		boolean flag = true;
		
		while(flag){
			
			int count = 0;
			int str = 0;
			int ball = 0;
			
			HashSet<Integer> hashnum = new HashSet<>();
			System.out.println("숫자를 입력해주세요. 1 ~ 9");
			while(hashnum.size() < 3){
				boolean vr = hashnum.add(sc.nextInt());
				if(vr == false){
					System.out.println("다시 입력해주세요. 중복 값입니다.");
				}
			}
			List<Integer> num = new ArrayList<>(hashnum);
			for (int i = 0; i < num.size(); i++) {
				for (int j = 0; j < num.size(); j++) {
				 if(num.get(i) == basenum.get(j)){
					 ball++;
					if(num.get(i) == basenum.get(i)){
						str++;
						ball--;
					}
				}
			}
		}
			count++;
			System.out.println("당신이 입력한 숫자 : " + num);
			System.out.println(count + "회 : " + str + "Strike, " + ball + "Ball, " + (3 - str - ball)+ " out");
					if(str == 3){
						System.out.println("정답을 맞췄습니다 축하드립니다.\n" + count + "회에 정답을 맞췄습니다.");
						flag = false;
					}
		}

0개의 댓글