CODE/JAVA1
RPG
maskan
2021. 1. 27. 16:24
public class Character {
String name;
int maxHp;
int maxMp;
int hp;
int mp;
int att;
int def;
int level;
int exp;
Item[] items;
Character(String name, int hp, int mp, int att, int def) {
this.name = name;
this.maxHp = hp;
this.maxMp = mp;
this.hp = this.maxHp;
this.mp = this.maxHp;
this.att = att;
this.def = def;
this.level = 1;
this.exp = 0;
this.items = new Item[5];
}
void showInfo() {
System.out.println("===========================");
System.out.println("-------------상태-----------");
System.out.println("이름 : " + name);
System.out.println("레벨 : " + level + "(" + exp + "/100)");
System.out.println("체력 : " + hp);
System.out.println("마나 : " + mp);
System.out.println("공격 : " + att);
System.out.println("방어 : " + def);
System.out.println("-----------아이템-----------");
for (int i = 0; i < items.length; i++) {
if (items[i] != null) {
System.out.println(items[i].itemInfo());
}
}
System.out.println("===========================");
}
void attack(Monster m) {
int damage = att - m.def;
damage = damage <= 0 ? 1 : damage;
m.hp = m.hp < damage ? m.hp - m.hp : m.hp - damage;
System.out.println(name + "가 공격으로 " + m.name + "에게" + damage
+ "만큼 데미지를 주었습니다.");
System.out.println(m.name + "의 남은 HP : " + m.hp);
}
void getExp(int exp) {
System.out.println(exp + "의 경험치를 획득하였습니다.");
this.exp += exp;
while (100 <= this.exp) {
levelUp();
this.exp -= 100;
}
}
void levelUp() {
level++;
maxHp += 10;
maxMp += 5;
att += 2;
def += 2;
hp = maxHp;
mp = maxMp;
System.out.println("LEVEL UP!!");
}
void getItem(Item item) {
System.out.println(item.name + "을 획득하였습니다.");
for (int i = 0; i < items.length; i++) {
if (items[i] == null) {
items[i] = item;
break;
}
}
maxHp += item.hp;
maxMp += item.mp;
att += item.att;
def += item.def;
}
}
public class Item {
String name;
int hp;
int mp;
int att;
int def;
Item(String name, int hp, int mp, int att, int def) {
this.name = name;
this.hp = hp;
this.mp = mp;
this.att = att;
this.def = def;
}
String itemInfo() {
String info = name + " : ";
if (0 < hp)
info += "체력+" + hp;
if (0 < mp)
info += "마나+" + mp;
if (0 < att)
info += "공격+" + att;
if (0 < def)
info += "방어+" + def;
return info;
}
}
public class Monster {
String name;
int maxHp;
int maxMp;
int hp;
int mp;
int att;
int def;
Item[] items;
Monster() {
}
Monster(String name, int hp, int mp, int att, int def, Item[] items) {
this.name = name;
this.maxHp = hp;
this.maxMp = mp;
this.hp = this.maxHp;
this.mp = this.maxHp;
this.att = att;
this.def = def;
this.items = items;
}
void attack(Character m) {
int damage = att - m.def;
damage = damage <= 0 ? 1 : damage;
m.hp = m.hp < damage ? m.hp - m.hp : m.hp - damage;
System.out.println(name + "가 공격으로 " + m.name + "에게" + damage
+ "만큼 데미지를 주었습니다.");
System.out.println(m.name + "의 남은 HP : " + m.hp);
}
Item itemDrop() {
return items[(int) (Math.random() * items.length)];
}
}
import ScanUtil;
public class MyGame {
Character c;
Item[] items;
int amor = 5;
MyGame() {
}
MyGame(String name) {
c = new Character(name, 100, 50, 20, 10);
items = new Item[10];
items[0] = new Item("무한의 대검", 0, 0, 70, 0);
items[1] = new Item("가시갑옷", 350, 0, 0, 60);
items[2] = new Item("징수의 총", 0, 0, 0, 55);
items[3] = new Item("도미닉경의 인사", 0, 0, 0, 35);
}
public static void main(String[] args) {
System.out.println("이름 지어");
String input1 = ScanUtil.nextLine();
new MyGame(input1).start();
MyGame mg = new MyGame();
System.out.println(mg.amor);
// MyGame mg = new MyGame(input1);
// mg.start();
}
void start() {
int input = 0;
while (true) {
System.out.println("1.내 정보\t2.사냥\t3.종료");
input = ScanUtil.nextInt();
switch (input) {
case 1:
c.showInfo();
break;
case 2:
hunt();
break;
case 3:
System.out.println("종료되었습니다.");
System.exit(4);
break;
}
}
}
// void hunt() {
// Monster m = new Monster("고블린", 20, 10, 15, 10, new Item[]{items[0],
// items[1]});
// System.out.println(m.name + "를 만났습니다. 전투를 시작합니다.");
//
// int input = 0;
//
// battle : while(true) { //while 변수 지정 (battle)
// System.out.println("1.공격\t2.도망");
// input = ScanUtil.nextInt();
// switch(input) {
// case 1:
// c.attack(m); //내가 몬스터를 공격함
// if(m.hp <= 0) {
// System.out.println(m.name + "을 처치하였습니다.");
// c.getExp(150);
// c.getItem(m.itemDrop());
// break battle;
// }
// m.attack(c); //몬스터가 나를 공격함
// break;
// case 2:
//
// break battle;
// }
// }
// }
void hunt() {
Monster m[] = new Monster[10];
int sdf = (int) (Math.random() * 9) + 1;
for (int i = 0; i < 10; i++) {
m[i] = new Monster("고블린" + (i + 1), 20, 10, 15, 10, new Item[] {
items[0], items[1], items[3], items[4] });
}
// Monster m = new Monster("고블린", 20, 10, 15, 10, new Item[] {
// items[0],items[1] });
System.out.println(m[sdf].name + "를 만났습니다. 전투를 시작합니다.");
int input = 0;
battle: while (true) { // while 변수 지정 (battle)
System.out.println("1.공격\t2.도망");
input = ScanUtil.nextInt();
switch (input) {
case 1:
c.attack(m[sdf]); // 내가 몬스터를 공격함
if (m[sdf].hp <= 0) {
System.out.println(m[sdf].name + "을 처치하였습니다.");
c.getExp(150);
c.getItem(m[sdf].itemDrop());
break battle;
}
m[sdf].attack(c); // 몬스터가 나를 공격함
break;
case 2:
break battle;
}
}
}
// hunt(){
// // Monster mm = new Monster();
// // Monster m = new Monster("고블린", 20, 10, 15, 10, new
// Item[]{items[0],items[1],items[3],items[4]});
// Monster m[] = new Monster[10];
// int sdf = (int)(Math.random() * 9)+1;
// for(int i=0; i<10; i++) {
// m[i] = new Monster("고블린"+(i+1), 20, 10, 15, 10, new
// Item[]{items[0],items[1],items[3],items[4]});
// }
// // for(int i=0; i<m.length; i++) {
// System.out.println(m[sdf].name + "를 만났습니다. 전투를 시작합니다");
// // }
// int input = 0;
// battle : while(true){
// System.out.println("1.공격\t2.도망");
// input = ScanUtil.nextInt();
// switch (input){
// case 1:
// c.attack(m[sdf]);
// if(m[sdf].hp <=0){
// System.out.println(m[sdf].name + "을 처치하였습다");
// c.getExp(150);
// c.getItem(m[sdf].itemDrop());
// break;
// }
// m[sdf].attack(c);
// break;
// case 2:
// break battle;
// }
// }
//
// }
}