자바로 할 수 있는 쉬운 게임이다.
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 |