프로그래밍 언어 복습/JAVA
#13 JAVA 배열로 만든 숫자야구게임
사재원 교수
2022. 5. 16. 20:43
package hihihi;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class first {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Random ran = new Random();
//컴퓨터 숫자 만들기 시작
int comdata[] = new int[3];
for(int i=0;i<comdata.length;i++) {
int num = ran.nextInt(9)+1; //1~9랜덤 숫자 랜덤
int count = 0;
for(int j=0;j<comdata.length;j++) {
if(comdata[j] == num) {
count ++;
}
}
if(count == 0) {
comdata[i] = num;
}else {
i --;
}
}
//컴퓨터 숫자 만들기 끝 comdata
System.out.println(Arrays.toString(comdata)); //정답
int tot = 0;
while(true) {
int stk = 0; //스트라이크 횟수
int ball = 0; //볼 횟수
System.out.print("시작(1)/종료(2) 입력 : ");
int start = scan.nextInt(); //시작 종료 선택하는 곳
if(start == 1) {
int[] userdata = new int[3];
int c = 0;
tot ++;
while(c<=2) {
//유저 숫자 받는 곳
int usernum;//유저 숫자 입력
while(true) { //중복체크
System.out.print((c+1)+"번쨰 숫자 입력(중복x) : ");
usernum = scan.nextInt();
int count = 0;
for(int i=0;i<userdata.length;i++) {
if(userdata[i]==usernum) {
count ++;
}
}
if(count == 0) {
break;
}else {
System.out.println("중복된 숫자가 있습니다.");
}
}//중복에 안걸리면 루프탈출
userdata[c] = usernum;
c ++;
}
System.out.println("입력한 유저 숫자 : " + Arrays.toString(userdata));
//유저 숫자 입력 완료
//컴퓨터 숫자와 유저 숫자를 비교 !
for(int i=0;i<userdata.length;i++) { //유저 ex)1 ,2, 3
int count = 0;
for(int j=0;j<comdata.length;j++) { //컴 ex) 1, 2, 3
if(userdata[i]==comdata[j]) { //유저 숫자가 컴퓨터 숫자안에 있느냐?
count ++;
}
}
if(count==1) {
if(userdata[i] ==comdata[i]) {
stk ++;
}else {
ball ++;
}
}
}
if(stk==0 && ball==0) {
System.out.println("아웃 ! ");
}else {
System.out.println("스트라이크 횟수 : " + stk);
System.out.println("볼 횟수 : " + ball);
if(stk == 3) {
System.out.println("3 스트라이크 ! 성공 !");
System.out.println(tot + "번 만에 맞추셨습니다.");
System.out.println("게임 종료");
break;
}
}
}else if(start == 2) {
System.out.println("게임 종료");
break;
}else {
System.out.println("다시 입력 바람.");
}
}
}
}
1. comdata배열에 컴퓨터 랜덤숫자 중복없이 3개 받기
2. userdata배열에 유저 랜덤숫자 중복없이 3개 받기
3. 두 값을 비교 스트라이크 볼 횟수 추출
4. 3스트라이크가 나올때까지 2번~3번 반복
5. 3스트라이크 나오면 게임 종료 !