자바로 할 수 있는 쉬운 게임이다.

1부터 100까지의 숫자를 랜덤으로 가져오고 입력값을 통해 랜덤숫자를 맞추는 게임이다.

손봐야하는 내 코드

작동은 하는데 지저분하다......

import java.util.Scanner;

    public class Number_Game_UpDown {

        public static void main(String[] args) {

            Scanner sc = new Scanner(System.in);
            int ans = (int) (Math.random() * 100) + 1;  //정답, 1부터 100까지의 정수 중 하나의 숫자 랜덤생성
            int cnt = 0;

            for (int i = 1; i < 6; i++) {

                cnt++; //시도횟수
                System.out.print("정답을 추측하여 보시오: ");
                int num = sc.nextInt(); //입력값

                if (num < ans) {
                    System.out.print("제시한 숫자가 정답보다 작습니다. 남은 기회는 : ");
                    System.out.println(5-cnt);
                } else if (num > ans) {
                    System.out.print("제시한 숫자가 정답보다 큽니다. 남은 기회는 : ");
                    System.out.println(5-cnt);
                }
                  else if (5-cnt == 0) {
                    System.out.println("GAME OVER, 시도횟수 = " + cnt);
                    break;
                }
                 else if( num == ans ) {
                    System.out.println("!!!!!!!!!!!!!!축하합니다. 시도횟수 = " + cnt);
                    break;
                }
            }
        }
    }

//while문과 if문으로 피드백받은 코드.. 

int cnt = 0;
int maxCnt = 5;

while(true){
cnt++;
System.out.print("정답을 추측하세요 : ");
int num = sc.nextInt();

if(num == ans){
    System.out.println("축하합니다! 시도횟수 = " + cnt);
    break;
}


if(num > ans){
    System.out.println("제시한 숫자가 정답보다 큽니다. 남은 기회 : " + (maxCnt - cnt));
}
else if(num < ans){
    System.out.println("제시한 숫자가 정답보다 작습니다. 남은 기회 : " + (maxCnt - cnt));
}

if(cnt == maxCnt){
    System.out.println("GAME OVER, 시도횟수 = " + cnt);
    break;
}

}
//피드백2

boolean isSucceed = false;

for(int i = 0; i < 5; i++){
    System.out.print("정답을 추측하세요 : ");
    int num = sc.nextInt();
    
    if(num == ans){
        System.out.println("축하합니다! 시도횟수 = " + i);
        isSucceed = true;
        break;
    }
    else if(num > ans){
        System.out.println("제시한 숫자가 정답보다 큽니다. 남은 기회 : " + (maxCnt - cnt));
    }
    else{ // 사실상  else if(num < ans)
        System.out.println("제시한 숫자가 정답보다 작습니다. 남은 기회 : " + (maxCnt - cnt));
    }
}
if(isSucceed == false){
    System.out.println("GAME OVER");
}

if else-if 가능한 좁은 것 부터

while이 무한루프이지만 조건을 잘 맞추면 더 직관적임 

불필요한 변수 삭제 ( 맨 처음 내가 중복해서 작성한 cnt와 i, 그래서 cnt 지웠다.)

-->그 대신 최대시도횟수를 추가.

'Study > Java' 카테고리의 다른 글

클래스 객체 필드 메서드 인스턴스 (1)  (0) 2022.06.30
자바 참조타입  (0) 2022.06.29
자바 로드맵 / 백엔드 로드맵  (0) 2022.03.15
점프투자바 연습문제 3장  (0) 2022.02.18
Java Exercises from W3School  (0) 2022.02.16

+ Recent posts