프로그래밍

[자바 기초] day07 : 포켓몬 생성자 예제 본문

자바/자바 기초

[자바 기초] day07 : 포켓몬 생성자 예제

시케 2023. 5. 15. 13:22
728x90
반응형

2023.05.11.목

포켓몬 생성자 예제

포켓몬 클래스가 있다
이 클래스로 포켓몬 객체들을 생성한다
포켓몬 객체들을 3마리 저장할 예정이다

>> "이름과 레벨은 사용자로부터 입력받고, 경험치는 0~10중에서 랜덤생성"
포켓몬은 이름,레벨,경험치가 있다
po.printInfo();
   -> 피카츄 Lv5. [5/100]
프로그램을 무한하게 동작
각각의 포켓몬 객체들은 game()을 진행
경험치가 100이될때마다 레벨은 1씩 증가
   레벨 1 증가시, "피카츄, 레벨업!" 문장을 출력
po.game();
   -> 성공시 경험치가 50~150중에서 랜덤만큼 증가
   -> 실패시 경험치가 10증가
+) po.game()을 순서대로 동작시키는 방법
+++) po.game()을 입력받아서 동작시키는 방법

package class03;
//원본
import java.util.Random;
import java.util.Scanner;

class Pokemon {
	Random rand = new Random();

	String name;
	int lv;
	int exp;

	Pokemon(String name, int lv, int exp) {
		this.name = name;
		this.lv = lv;
		this.exp = exp;
	}

	void game() {
		int win = rand.nextInt(2); // 승 패 0 or 1

		if (win == 0) {// 실패
			this.exp += 10;
			System.out.println(this.name + " 패배");
		} else {
			this.exp += rand.nextInt(101) + 50;
			System.out.println("성공");
		}
		
		while(this.exp >=100) {
			this.exp -= 100;
			this.lv++;
			System.out.println(this.name + ", 레벨업!");
		}
		this.printInfo();
		System.out.println();

	}

	void printInfo() {
		System.out.print(this.name + " Lv" + this.lv + ". [" + this.exp + "/100]");
		System.out.println();
	}

}

public class Test01 {

	public static void main(String[] args) {
		Random rand = new Random();
		Scanner sc = new Scanner(System.in);

		// 포켓몬 객체 배열
		Pokemon[] po = new Pokemon[3];

		// 포켓몬 입력받기
		System.out.println("사용할 포켓몬을 입력해주세요");
		int cnt = 0;
		while (cnt < po.length) {

			System.out.print("포켓몬 이름) ");
			String name = sc.next();
			
			System.out.println(name+" 입력하였습니다");
			System.out.println("1.계속하기 2.수정하기");
			int action = sc.nextInt();
			
			
			if(action == 2) {
				System.out.println("다시 입력하기를 선택하셨습니다");
				break;
			}
			else if(action == 1) {
				System.out.println("계속 입력하기를 선택하셨습니다");
			}
			else {
				System.out.println("잘못된 입력입니다! 다시 입력해주세요!!");
				break;
			}
			

			

			System.out.print("포켓몬 레벨) ");
			int lv = sc.nextInt();

			if (lv >= 0) {
				int exp = rand.nextInt(11);
				po[cnt] = new Pokemon(name, lv, exp);
				cnt++;
				System.out.println("포켓몬 입력 성공!");
			} else {
				System.out.println("잘못된 입력입니다! 다시 입력해주세요!!");
			}

		}
		// 포켓몬 리스트 출력
		System.out.println("===== 입력된 포켓몬 리스트 =====");
		for (int i = 0; i < po.length; i++) {
			System.out.print((i + 1) + ". ");
			po[i].printInfo();
			System.out.println();
		}
		System.out.println();

		// int cnt=0;
		while (true) {
			System.out.println("사용할 포켓몬을 입력해주세요!");
			System.out.print("사용할 포켓몬) ");
			int i = sc.nextInt();

			if (i >= 1 && i <= 3) {
				System.out.println();
				po[i - 1].game();
			}
			else {
				System.out.println("잘못된 입력입니다! 다시 입력해주세요!!");

			}


//			cnt++;
//			
//			if(cnt==po.length) { //3마리 순서대로
//				cnt=0;
//			}
		}

	}

}
728x90
반응형
Comments