728x90
package game;
public class Item {
String name;
int maxHp, maxMp, att, def;
Item(String name, int maxHp, int maxMp, int att, int def){
this.name=name;
this.maxHp=maxHp;
this.maxMp=maxMp;
this.att=att;
this.def=def;
}
String itemInfo(){
String info=this.name+": ";
if(maxHp>0) info+="체력+"+maxHp;
if(maxMp>0) info+="마나+"+maxMp;
if(att>0) info+="공격+"+att;
if(def>0) info+="방어+"+def;
return info;
}
}
package game;
import java.util.Scanner;
public class Main {
Character c;
Item[]items;
Monster[]monsters;
Scanner sc = new Scanner(System.in);
Main(){
c= new Character("가렌",100,50,20,10);
items = new Item[12];
items[0] = new Item("나무검", 0, 0, 10, 0);
items[1] = new Item("천갑옷", 0, 0, 0, 10);
items[2] = new Item("체력구슬", 10, 0, 0, 0);
items[3] = new Item("마나구슬", 0, 10, 0, 0);
items[4] = new Item("강철검", 0, 0, 30, 0);
items[5] = new Item("가죽갑옷", 0, 0, 0, 30);
items[6] = new Item("체력주머니", 50, 0, 0, 0);
items[7] = new Item("마나주머니", 0, 50, 0, 0);
items[8] = new Item("무한의대검", 0, 0, 100, 0);
items[9] = new Item("가시갑옷", 0, 0, 0, 100);
items[10] = new Item("체력의 샘", 100, 0, 0, 0);
items[11] = new Item("마나의 샘", 0, 100, 0, 0);
monsters=new Monster[3];
monsters[0]=new Monster("바위게", 20,20,10,10,50,new Item[] {items[0],
items[1],items[2],items[3]});
monsters[1]=new Monster("협곡의전령", 100,20,50,50,100,new Item[] {items[4],
items[5],items[6],items[7]});
monsters[2]=new Monster("바론", 5000,2000,200,200,400,new Item[] {items[8],
items[9],items[10],items[11]});
}
public static void main(String[] args) {
new Main().start();
}
void consoleClean() {
for(int i=0; i<100;i++)
System.out.println();
}
private void start() {
int input =0;
System.out.println("=============게임시작======================");
while(true) {
if(c.hp<=0) {
System.out.println("플레이어의 체력이 없습니다.");
System.out.println("게임을 종료합니다");
break;
}
System.out.println("-------------메인메뉴------------");
System.out.println("1. 내정보 2. 사냥 0. 종료");
System.out.println("--------------------------------");
System.out.print("메뉴를 입력해 주세요>>");
input = Integer.parseInt(sc.nextLine());
switch (input) {
case 1:
c.showInfo();
break;
case 2:
hunt();
break;
case 0:
System.out.println("종료되었습니다.");
System.exit(0);
break;
}
}
}
private void hunt() {
consoleClean();
Monster originM = monsters[(int)(Math.random()*monsters.length)];
Monster m = new Monster(originM.name, originM.maxHp, originM.maxMp,originM.att ,originM.def,
originM.exp,originM.items);
System.out.println("---------------전투화면------------------");
System.out.println(m.name + "을()를 만났습니다. 전투를 시작합니다.");
int input =0;
battle: while(true) {
System.out.print("1.공격 2.도망>>");
input = Integer.parseInt(sc.nextLine());
switch(input) {
case 1:
c.attack(m);if(m.hp<=0) {
System.out.println(m.name+"을(를) 처치하였습니다.");
System.out.println("-------------전투종료-------------");
c.getExp(m.exp);
c.getItem(m.itemDrop());
System.out.println();
break battle;
}
m.attack(c);
if(c.hp<=0) {
System.out.println(c.name+"이(가) 죽었습니다.");
System.out.println("-------------전투종료-------------");
System.out.println();
break battle;
}
break;
case 2:
System.out.println(m.name +"(으)로 부터 도망쳤습니다.");
break battle;
}
}
}
}
package game;
public class Character {
//속성
String name;
int maxHp, maxMp,hp,mp, att, def,level,exp,nextExp;
Item[] items;
Character(String name, int maxHp,int maxMp, int att, int def){
this.att=att;
this.def=def;
this.maxMp=maxMp;
this.maxHp=maxHp;
this.hp=maxHp;
this.mp=maxMp;
this.name=name;
this.level=1;
this.exp=0;
this.nextExp=this.level*100;
this.items=new Item[50];
}
void showInfo() {
System.out.println("---------상태----------");
System.out.println("이름 : "+name);
System.out.println("레벨 : "+level +"("+exp+"/"+nextExp+")");
System.out.println("체력 : "+hp+"/"+maxHp);
System.out.println("마나 : "+mp+"/"+maxMp);
System.out.println("공격 : "+att);
System.out.println("방어 : "+def);
System.out.println("---------------------");
System.out.println("---------아이템-------");
for(int i =0; i<this.items.length; i++) {
if(items[i]!=null) {
System.out.println(items[i].itemInfo());
}
}
System.out.println("-----------------------");
System.out.println();
}
void attack(Monster m) {
int damage = this.att-m.def;
damage=(damage<=0)?(1):(damage);
m.hp = m.hp<damage?0:m.hp-damage;
System.out.println(name + "(이)가 공격으로 "+m.name+"에게 "+ damage +
"만큼 데미지를 주었습니다.");
System.out.println(m.name +"의 남은 체력 : "+m.hp);
System.out.println();
}
void getExp(int exp) {
System.out.println(exp + "의 경험치를 획득했습니다.");
this.exp += exp;
while(nextExp<=this.exp) {
this.exp-=nextExp;
levelUp();
}
}
void levelUp() {
this.level++;
this.maxHp+=10;
this.maxMp+=5;
this.att+=2;
this.def+=2;
this.mp=this.maxMp;
this.hp=this.maxHp;
this.nextExp=level*100;
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) {
this.items[i]=item;
break;
}
}
this.maxHp+=item.maxHp;
this.maxMp+=item.maxMp;
this.att+=item.att;
this.def+=item.def;
}
}
package game;
public class Monster {
String name;
int maxHp, maxMp, att, def,exp,hp,mp;
Item[] items;
Monster(String name, int maxHp,int maxMp, int att, int def,
int exp, Item[]items){
this.att=att;
this.def=def;
this.mp=maxMp;
this.hp=maxHp;
this.maxMp=maxMp;
this.maxHp=maxHp;
this.name=name;
this.exp=exp;
this.items=items;
}
void attack(Character c) {
int damage = this.att-c.def;
damage=(damage<=0)?(1):(damage);
c.hp = c.hp<damage?0:c.hp-damage;
System.out.println(name + "(이)가 공격으로 "+c.name+"에게 "+ damage +
"만큼 데미지를 주었습니다.");
System.out.println(c.name +"의 남은 체력 : "+c.hp);
System.out.println();
}
Item itemDrop() {
return items[(int)(Math.random()*items.length)];
}
}
728x90
'ddit > Java' 카테고리의 다른 글
Stack, Queue, Sort (0) | 2022.06.22 |
---|---|
Collection Framework(Array List, Vector...), generic / 문제풀기 (0) | 2022.06.22 |
java eclipse에서 oracle계정 연동, 시퀀스, 프로시저 (0) | 2022.06.09 |
HashMap (0) | 2022.06.08 |
ArrayList를 이용한 학생리스트만들기 문제풀기/toString사용법 (0) | 2022.06.08 |