다형성을 더욱 이해하기위해 연습문제를 풀어보자
인형뽑기기계를 만들어
사자인형,곰인형,에어팟,꽝 중 하나를 뽑게만들도록 해보자
나는 조금더 추가해서 랜덤으로 뽑히게만들고
한번 뽑을때마다 코인이 소모되며
재고 개념도 만들어 재고가 다떨어지면 코인이 다시 환불이 되도록 만들어 보았다.
뽑기클래스들을 상속시킬 부모클래스 Product
더보기
package exercise.toy;
public class Product {
String name;
int stock;
public void select() {
System.out.println(name+"을 뽑으셨습니다!!");
stock--;
}
}
에어팟 클래스
더보기
package exercise.toy;
public class Airpot extends Product{
public Airpot() {
name = "에어팟";
stock = 2;
}
public void sound() {
super.select();
}
}
사자인형 클래스
더보기
package exercise.toy;
public class LionDoll extends Product {
public LionDoll() {
name = "사자인형";
stock = 4;
}
public void sound() {
super.select();
}
}
곰인형 클래스
더보기
package exercise.toy;
public class TeddyBear extends Product{
public TeddyBear() {
name = "곰인형";
stock = 6;
}
public void sound( ) {
super.select();
}
}
실패 클래스
더보기
package exercise.toy;
public class Fail extends Product{
public Fail() {
name = "실패";
}
public void sound() {
super.select();
}
}
뽑기기계 클래스
더보기
package exercise.toy;
import java.util.Random;
// 클래스 - 인형뽑기
// 상품들이 존재 가능
// 사자인형, 곰인형, 에어팟
// 요구 조건
// 배열을 활용해서 객체들을 담아 주세요
public class ToyMachine {
Random random = new Random();
int prize = random.nextInt(10);
public Product prize(Product[] p) {
return p[prize];
}
public void reset() {
prize = random.nextInt(10);
}
}
인형뽑기 게임 메인 테스트 클래스
더보기
package exercise.toy;
import java.util.Scanner;
public class ToyMachineTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
LionDoll lion = new LionDoll();
TeddyBear bear = new TeddyBear();
Fail fail = new Fail();
Airpot air = new Airpot();
ToyMachine toy = new ToyMachine();
Product[] pro = new Product[10];
int coin = 30;
pro[0] = lion;
pro[1] = bear;
pro[2] = air;
pro[3] = fail;
pro[4] = fail;
pro[5] = fail;
pro[6] = fail;
pro[7] = fail;
pro[8] = fail;
pro[9] = fail;
boolean flag = true;
while (flag) {
System.out.println("당첨확률이 높은 인형뽑기 게임");
System.out.println("남아있는 코인 : " + coin + "\n1회뽑기 : 1 , 10회뽑기 : 2");
int choice = sc.nextInt();
if (choice == 1) {
toy.reset();
if (toy.prize(pro) instanceof LionDoll) {
if (toy.prize(pro).stock < 1) {
System.out.println("재고가 없습니다 코인을 환불합니다");
coin++;
} else {
((LionDoll) toy.prize(pro)).sound();
System.out.println("재고가" + toy.prize(pro).stock + "개 남았습니다");
}
} else if (toy.prize(pro) instanceof TeddyBear) {
if (toy.prize(pro).stock < 1) {
System.out.println("재고가 없습니다 코인을 환불합니다");
coin++;
} else {
((TeddyBear) toy.prize(pro)).sound();
System.out.println("재고가" + toy.prize(pro).stock + "개 남았습니다");
}
} else if (toy.prize(pro) instanceof Airpot) {
if (toy.prize(pro).stock < 1) {
System.out.println("재고가 없습니다 코인을 환불합니다");
coin++;
} else {
((Airpot) toy.prize(pro)).sound();
System.out.println("재고가" + toy.prize(pro).stock + "개 남았습니다");
}
} else if (toy.prize(pro) instanceof Fail) {
((Fail) toy.prize(pro)).sound();
System.out.println("다시 뽑아주세요!! ");
coin--;
continue;
}
coin--;
} else if (choice == 2) {
for (int i = 0; i < 10; i++) {
toy.reset();
if (toy.prize(pro) instanceof LionDoll) {
if (toy.prize(pro).stock < 1) {
System.out.println("재고가 없습니다 코인을 환불합니다");
coin++;
} else {
((LionDoll) toy.prize(pro)).sound();
System.out.println("재고가" + toy.prize(pro).stock + "개 남았습니다");
}
} else if (toy.prize(pro) instanceof TeddyBear) {
if (toy.prize(pro).stock < 1) {
System.out.println("재고가 없습니다 코인을 환불합니다");
coin++;
} else {
((TeddyBear) toy.prize(pro)).sound();
System.out.println("재고가" + toy.prize(pro).stock + "개 남았습니다");
}
} else if (toy.prize(pro) instanceof Airpot) {
if (toy.prize(pro).stock < 1) {
System.out.println("재고가 없습니다 코인을 환불합니다");
coin++;
} else {
((Airpot) toy.prize(pro)).sound();
System.out.println("재고가" + toy.prize(pro).stock + "개 남았습니다");
}
} else if (toy.prize(pro) instanceof Fail) {
((Fail) toy.prize(pro)).sound();
System.out.println("다시 뽑아주세요!! ");
coin--;
continue;
}
coin--;
}
} else {
System.out.println("잘못입력하셨습니다 다시 입력해주세요.\n");
}
}
}
}