------------------------ MyGame 클래스
package t_game;
import e_oop.ScanUtil;
public class MyGame {
Character c ;
Item[] items;
//몬스터는 싸울때마다 만들어줄거다
MyGame(){ //생성자만드는것
c = new Character( " 가렌 " , 100, 50 , 20, 10);
items = new Item[10];
items[0] = new Item("무한의 대검" , 0 , 0, 0, 10);
items[1] = new Item("가시갑옷" , 0 , 0, 0, 10);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//class 만든 3개로 여기서 만들어야 한다.
new MyGame(). 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(0); //프로그램을 종료시키는 메소드 0은 아무렇게나 넣으면 됨.
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) { //battle 은 while 문에 붙인 이름 반복문에 이름을 붙일 수 있다.
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.itemDrp());
break battle ; //몬스터가 죽으면 전투를 종료하는것 .
}
m.attack(c);
break;
case 2 :
break battle;
}
}
}
}
-----------------------------------------------------------------------------------------------------
Character 클래스
package t_game;
public class Character {
//이름이 존재
String name ;
int maxHp; //최대체력
int hp; // 체력
int maxMp; // 최대마나
int mp ; //마나
int att; // 공격력
int def; //방어력
int exp; // 경험치
int level ; // 레벨
Item[] items; //보유 아이템
//지금은 컴파일에러가 나지만 Item이라는 클래스를 만들면 사라질 것이다.
//변수를 초기화해야하는데 생성자를 통해 초기화를 해줄거야.
//생성자는 클래스이름과 동일한
Character(String name, int hp , int mp, int att, int def){
this.name = name ;
this.maxHp = hp;
this.hp = this.maxHp ;
this.mp = this.maxMp ;
this.att = att;
this.def = def;
this.level = 1;
this.exp = 0 ;
this.items = new Item[10];
}
//상태를 볼 수 있는 화면
void showInfo(){
System.out.println("=================================================");
System.out.println("-------------------상태---------------------------");
System.out.println("이름 : " + name);
System.out.println("레벨 : " + level + "(" + exp + "/100)"); //100이 넘어가면 레벨업을 해주는걸 표현
System.out.println("체력 : " + maxHp);
System.out.println("마나 : " + maxMp);
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);
//m.은 몬스터
}
//경험치 획득
void getExp( int exp ){
System.out.println(exp + "의 경험치를 획득하셨습니다.");
this.exp += exp ;
while ( 100 <= this.exp ){
levelUp();
this.exp -= 100 ;
//레벨업을 할때 마다 100씩 감소 ( 100이상이되면 1씩 레벨업 )
}
}
void levelUp (){
level++;
maxHp += 10 ;
maxMp += 5;
att += 2;
def +=2;
hp = maxHp ; // 게임에서 레벨업이 되면 체력을 100프로로 체워주고 시작하는것.
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;
}
}
--------------------------------------------------------------------------------------------------
Monster class
package t_game;
public class Monster {
String name ;
int maxHp; //최대체력
int hp; // 체력
int maxMp; // 최대마나
int mp ; //마나
int att; // 공격력
int def; //방어력
int exp; // 경험치
int level ; // 레벨
Item[] items; //보유 아이템
//생성자 만들기 - 여러종류의 몬스터가 하나의 클래스를 사용, 이름이 달라지고 능력치 속성이 달라짐 -> 한번에 하려고 생성자
Monster(String name, int hp , int mp , int att, int def, Item[] items){
this.name = name ;
this.maxHp = hp ;
this.hp = this.maxHp ;
this.mp = this.maxMp ;
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);
//m.은 몬스터
}
Item itemDrp (){
return items[(int)(Math.random() * items.length)];
// 가지고있는 아이템중에 무작위로 하나를 떨어트려줌 .
}
}
Item 클래스
package t_game;
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;
}
}
--------------------------------------------------------------------------------------------------
댓글
댓글 쓰기