하기와 같은 메뉴를 출력 해 값을 입력 받아 캐릭터 키우기 프로그램을 만들어라.
1. 밥 먹기 2. 잠 자기 3. 운동하기 4. 놀기 5. 종료 6. 상태확인
단, 캐릭터의 hp = 30, exp = 0, lv = 1 이며 exp가 20이 될 때마다 lv 는 1씩 증가한다.
또한, 밥을 먹으면 hp +5 / 잠 +10 / 운동하면 hp -8, exp 7 /
놀면 hp -5 , exp +3 / hp<0 캐릭터 사망으로 게임이 종료 되게 하라
Scanner sc = new Scanner(System.in);
boolean flag = true;
int hp = 30, exp = 0, lv = 1;
int menu;
while (flag) { // flag 값이 false 일때까지 진행
System.out.println();
System.out.println("메뉴를 선택 하시오");
System.out.println("1. 밥 먹기 2. 잠자기 3. 운동하기 4. 놀기 5.종료 6.상태확인");
menu = sc.nextInt(); //메뉴를 프린트하여 입력값을 할당 받는다.
switch (menu) { //메뉴를 스위치 문에 넣고 케이스를 비교하여 진행한다.
case 1:
hp += 5; // 밥을 먹으면 hp +5
System.out.println("피카추가 밥을 먹는다");
break;
case 2:
hp += 10; // 잠 hp +10
System.out.println("피카추가 잠을 잔다");
break;
case 3:
System.out.println("피카추가 운동한다");
hp -= 8; // 운동하면 hp -8
if (hp <= 0) {
System.out.println("캐릭터 사망");
flag = false;
break;
} //hp가 0이면 캐릭터가 사망함으로 hp가 - 될때마다 조건문을 달아 확인한다.
exp += 7; // exp + 7
if (exp >= 20) { //exp 20마다 캐릭터가 레벨업하니 exp가 증가할때마다 확인한다.
lv++; // lv 은 1 올리고
exp -= 20; // 레벨이 올랐으니 exp 는 20을 빼준다.
System.out.println("캐릭터 레벌업! lv : " + lv);
}
break;
case 4:
System.out.println("피카추가 논다");
hp -= 5; // 놀면 hp -5
if (hp <= 0) {
System.out.println("캐릭터 사망");
flag = false; //boolean을 false 로 변환하여 while 문을 탈출한다.
break;
}
exp += 3; // 놀면 exp +3
if (exp >= 20) {
lv++;
exp -= 20;
System.out.println("캐릭터 레벌업! lv : " + lv);
}
break;
case 5: //종료 버튼
System.out.println("종료합니다");
flag = false;
break;
case 6: //현재 상태를 프린팅 해준다.
System.out.println("피카추 상태");
System.out.println("hp : " + hp + " exp : " + exp + " lv : " + lv);
break;
default:
System.out.println("잘 못 된 값을 입력. 다시 입력하세요");
break;
}
}
boolean 타입의 변수를 만들어 조건에서 벗어나면 해당 게임이 종료 되게 만든다. while(flag) 는 while 반복문이 flag가 false가 될 때 까지 반복 될 것을 의미한다. int menu에 값을 입력 받아 switch 문을 사용해 루프를 생성해준다. 밥 먹기를 선택 했다면, hp를 5만큼 올리고, 잠을 선택 했다면 hp를 10 증가시켜준다. 운동하기를 선택 했다면 hp는 8 감소시키는 대신 exp를 7증가 시킨다. hp가 0이 되면 캐릭터가 사망함으로 hp를 감소시키는 모든 케이스에 조건문을 달아 캐릭터가 사망하였는지 아닌지 확인 해주어야 한다. 캐릭터가 사망 했다면 boolean 을 false 로 변경하고 break를 만나 switch 반복문을 탈출. 그 후 다시 while 로 돌아가면 while(flag)이 거짓이 됨으로 해당 프로그램을 종료한다. 이렇게 반복하면 된다. 또한, 5번을 누르면 프로그램이 종료 됨으로 해당 부분도 flag를 false로 바꾸고 프로그램을 종료 시킨다.
'JAVA' 카테고리의 다른 글
[JAVA] 객체지향 - 클래스와 객체 (0) | 2023.02.26 |
---|---|
[JAVA] 객체지향 - 함수와 메서드 그리고 파라미터 (0) | 2023.02.23 |
[JAVA] 자바 정렬 : 삽입 정렬 (insertion sort) (0) | 2023.02.23 |
[JAVA] 자바 정렬 : 버블 정렬 (bubble sort) (0) | 2023.02.23 |
[JAVA] 입력 값을 받아 사칙연산 프로그램을 만들기 (0) | 2023.02.22 |