CODE/JAVA1

HairSalon

maskan 2021. 1. 27. 16:31
public class Style {

	String index;
	String name;
	int price;
	int time;
	int exp;

	Style(String index, String name, int price, int time, int exp) {
		this.index = index;
		this.name = name;
		this.price = price;
		this.time = time;
		this.exp = exp;
	}
}​

 

 

public class Customer {

	String name;
	int money;
	Style[] style;

	Customer(String name, Style[] style) {
		this.name = name;
		this.style = style;

	}

	Style dfstyle(int num) {
		return this.style[num];
	}

}

 

 

public class Effect {

	String index;
	String name;
	double expense;
	double buff_getMoney;
	double buff_getExp;
	double maintanance;
	int sal;

	Effect(String index, String name, double expense, double buff_getMoney,
			double buff_getExp, double maintanance, int sal) {
		this.index = index;
		this.name = name;
		this.expense = expense;
		this.buff_getMoney = buff_getMoney;
		this.buff_getExp = buff_getExp;
		this.maintanance = maintanance;
		this.sal = sal;
	}

	String effectinfo() {
		String info = name + " ";
		return info;
	}
}

 

 

 

public class Hairshop {
	String name;
	int asset;
	int day;
	int maxtable;
	int exp;
	int maxexp;
	int level;
	int maintenance;
	Effect[] effects;
	int inven;
	int salary;

	// Tycoon ty = new Tycoon();
	Hairshop(String name) {
		this.name = name;
		this.asset = 0;
		this.day = 1;
		this.maxtable = 10;
		this.exp = 0;
		this.maxexp = 150;
		this.level = 1;
		this.maintenance = -200000;
		this.effects = new Effect[4];
		this.inven = 0;
	}

	void Info() {
		System.out.println("\t\t" + name + "  𝓗𝓐𝓘𝓡 𝓢𝓐𝓛𝓞𝓝");
		System.out.println();
		System.out.println("\t\tDay " + day);
		System.out
				.println("\t\tlv. " + level + " (" + exp + "/" + maxexp + ")");
		System.out.format("\t\t총 자산 : %+,d 원%n", asset);
		System.out.format("\t\t총 유지비 : %+,d 원%n", maintenance);
		for (int i = 0; i < effects.length; i++) {
			if (effects[0] == null) {
				System.out.println("\t고용 중인 아르바이트생이 없습니다.");
				System.out.println();
				break;
			} else if (effects[i] != null) {
				System.out.print("   고용 중인 아르바이트생" + (i + 1) + " : "
						+ effects[i].effectinfo());
				System.out.println();
			}
		}
	}

	void getExp(int ex) {
		System.out.println("\t\t      +" + ex + " exp");
		// this.exp += ex;
	}

	void getMoney(int money) {
		System.out.println("\t\t     +" + money + " 원");
		System.out.println();
		// this.asset += money;
	}

	void levelUp() {
		this.level++;
		maxexp += 50;
		try {
			Thread.sleep(130);
		} catch (InterruptedException e) {
		}
		;
		System.out
				.println("🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉\n\t\t🎊🎊 LEVEL UP 🎊🎊");
		System.out.println("\t\t레벨업 보상 : " + 10000 * level + " 원");
		this.asset += 10000 * level;
	}

	int maintenance() {
		maintenance = -200000 - 10000 * day;
		return maintenance;
	}

	void bankrupt() {
		if (asset < 0) {
			System.out.println("파산했습니다.");
			try {
				Thread.sleep(1000);
			} catch (Exception e) {
			}
			new Tycoon();
			Tycoon.main(null);
		}
	}

	void geteffect(Effect ef) {
		if (asset >= ef.expense) {
			if (inven < 4) {
				asset -= ef.expense;
				System.out.println("\t" + ef.name + "을 고용했습니다.");
				for (int i = inven; i < effects.length; i++) {
					if (effects[i] == null) {
						effects[i] = ef;
						inven++;
						break;
					}
				}
			} else {
				System.out.println("\t\t더이상 고용할 수 없습니다.");
			}
		} else {
			System.out.println("\t\t자산이 부족합니다.");
		}
	}

	void buff() {
		double expbuff = 0;
		double moneybuff = 0;
		double maintbuff = 0;

		for (int i = 0; i < effects.length; i++) {
			if (effects[i] != null) {
				expbuff += effects[i].buff_getExp;
				moneybuff += effects[i].buff_getMoney;
				maintbuff += effects[i].maintanance;
				salary += effects[i].sal;
			}
		}
		Tycoon.exp += expbuff;
		Tycoon.income *= (1 + moneybuff);
		maintenance *= (1 + maintbuff);
		maintenance -= salary;
	}
	// this.asset = (int)(asset*ef.buff_getMoney);
	// this.exp = (int)(exp*ef.buff_getExp);
	// this.maintenance = (int) (maintenance*ef.maintanance) ;

}

 

 

import java.util.Scanner;

///////////////전부 스캐너를 사용했다. 수정 필요

public class Tycoon {
	Hairshop hairshop;
	Style[] style;
	Effect[] effect;
	static int income = 0;
	static int count = 0;
	static int exp = 0;
	static String name;

	Tycoon() {
	}

	Tycoon(String name) {
		hairshop = new Hairshop(name);
		style = new Style[6];
		style[0] = new Style("1", "컷", 20000, 20, 5);
		style[1] = new Style("2", "영양", 30000, 30, 5);
		style[2] = new Style("3", "염색", 40000, 40, 10);
		style[3] = new Style("4", "탈색", 50000, 40, 10);
		style[4] = new Style("5", "펌", 60000, 100, 30);
		style[5] = new Style("6", "매직", 90000, 120, 30);
		effect = new Effect[4];
		effect[0] = new Effect("1", "곱고 짧게 큰 상가 건물주 아들", 30000, -0.1, 0, -0.3,
				8500 * 6);
		effect[1] = new Effect("2", "엄마 친구의 언니의 사돈의 옆집 딸", 36000, +0.1, 5, 0,
				9500 * 6);
		effect[2] = new Effect("3", "아들 머리로 10년 내공 쌓은 아줌마", 27000, +0.05, 10,
				-0.1, 10000 * 6);
		effect[3] = new Effect("4", "츄르 내놓으라고 우는 때 탄 고양이", 60000, +0.2, 0,
				+0.1, 15000 * 6);
	}

	public static void main(String[] args) {
		System.out.println("\n\t\t            🅦ⒺⓁⒸⓄⓂⒺ  🅣Ⓞ\n");
		System.out
				.println("   ┏┓ ┏┳━━━┳━━┳━━━┓┏━━━┳━━━┳┓  ┏━━━┳━┓ ┏┓\n   ┃┃ ┃┃┏━┓┣┫┣┫┏━┓┃┃┏━┓┃┏━┓┃┃  ┃┏━┓┃┃┗┓┃┃\n   ┃┗━┛┃┃ ┃┃┃┃┃┗━┛┃┃┗━━┫┃ ┃┃┃  ┃┃ ┃┃┏┓┗┛┃\n   ┃┏━┓┃┗━┛┃┃┃┃┏┓┏┛┗━━┓┃┗━┛┃┃ ┏┫┃ ┃┃┃┗┓┃┃\n   ┃┃ ┃┃┏━┓┣┫┣┫┃┃┗┓┃┗━┛┃┏━┓┃┗━┛┃┗━┛┃┃ ┃┃┃\n   ┗┛ ┗┻┛ ┗┻━━┻┛┗━┛┗━━━┻┛ ┗┻━━━┻━━━┻┛ ┗━┛");
		System.out.println();
		new Tycoon().menu();
	}

	void menu() {
		Scanner s = new Scanner(System.in);
		while (true) {
			System.out
					.println("\t\t    MAIN MENU\n\t\t    1. PLAY\n\t\t    2. HOW TO \n\t\t    3. EXIT");
			System.out.println();
			String input = s.nextLine();

			switch (input) {
			case "1":
				System.out.println("\t\t  미용실 이름을 입력하세요.");
				String name = s.nextLine();
				new Tycoon(name).start();
				break;
			case "2":
				System.out
						.println("how to~\n 손님이 원하는 머리를 해주고 경험치와 돈을 받고 가게를 성장시키세요.\n 알바는 최대 4명까지 고용할 수 있으며 각각 고유 버프가 다릅니다.\n자산이 0원이 되면 파산합니다.");
				// System.out.println("➀➁➂➃➄➅➆➇➈➉ ❶❷❸❹❺➏➐➑➒➓");
				break;
			case "3":
				System.out.println("- HAIR SALON이 종료됩니다. -");
				System.exit(0);
				break;
			}
		}
	}

	void start() {
		Scanner s1 = new Scanner(System.in);

		String input = "";
		play: while (true) {
			System.out
					.println("1.내 정보      2.알바 고용     3.장사 시작      4.메인메뉴로 돌아가기");
			input = s1.nextLine();
			switch (input) {
			case "1":
				hairshop.Info();
				break;
			case "2":
				System.out.println("\t      고용할 알바생을 골라주세요.");
				for (int i = 0; i < effect.length; i++) {
					System.out.println("\t" + effect[i].index + ". "
							+ effect[i].name);
				}
				int num = Integer.parseInt(s1.nextLine());
				hairshop.geteffect(effect[num - 1]);
				break;
			case "3":
				// Open op = new Open();
				Dayrun dr = new Dayrun(hairshop);
				Thread drthread = new Thread(dr);
				drthread.start();

				try {
					drthread.join();
					adjustment();
					while (hairshop.maxexp <= hairshop.exp) {
						hairshop.levelUp();
						hairshop.exp -= hairshop.maxexp;
					}
					hairshop.day++;
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				break;
			case "4":
				System.out.println();
				break play;
			}
		}
	}

	void adjustment() {
		// hairshop.asset = (int)
		hairshop.buff();
		hairshop.exp += exp;
		hairshop.asset += income;

		System.out.println("\t\t   - Day " + hairshop.day + " 종료 -");
		System.out.println("\t\t  일일 정산 결과");
		System.out.println("\t\t손님 만족도 : "
				+ (int) (count * 100 / (5 + hairshop.level * 3)) + "%");
		System.out.format("\t\t총 매출 : %+,d 원%n", income);
		System.out.format("\t\t총 지출 : %+,d 원%n", hairshop.maintenance);
		// int x = ;
		hairshop.asset += hairshop.maintenance;

		System.out
				.format("\t\t일일 소득 : %+,d 원%n", income + hairshop.maintenance);
		System.out.println();
		hairshop.bankrupt();
	}
}

 

 

public class Dayrun extends Thread {
	Hairshop hairshop;

	Dayrun(Hairshop h) {
		hairshop = h;
	}

	public void run() {
		Open op = new Open(hairshop);
		Thread opthread = new Thread(op);
		opthread.start();
		try {
			Thread.sleep(60000 + 1000 * hairshop.level);
		} catch (InterruptedException e) {
			// e.printStackTrace();
		}

		finally {
			System.out.println("\t\t   - 60초 경과 -");
			opthread.interrupt(); // 정상작동
		}
		System.out.println("시간초과로 데이런파이널 종료");

	}
}