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("시간초과로 데이런파이널 종료");
}
}