์๋ ํ์ธ์. ์ค๋๋ง์ ์ฐพ์์์ต๋๋ค.
๊ฐ์ฒด์งํฅ์ ๊ฐ๋ ์์ง ํ์ ์ด ์๋์๋ค ์๊ฐํฉ๋๋ค๋ง,
๊ทธ๋ ๋ค๊ณ ๊ทธ์ ์ต์ํด์ง ๋๊น์ง ๊ฐ๋งํ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ ์ ์์ด ํฌ์ผ๋ชฌ ๊ฒ์์ ํ๋ ๋ง๋ค์์ต๋๋ค.
๊ฒ์์ด๋ผ๊ณ ํ๊ธฐ์๋ ๊ต์ฅํ ๋ถ์กฑํ์ง๋ง ์ฐจ์ฐจ ์ ๊ฐ ๋ฃ๊ณ ์ถ์ ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ก ๊ตฌํํ ์๊ฐ์ด์ด์ ๊ทธ๋ฅ ๊ฒ์์ด๋ผ๊ณ ์ง์ด๋ดค์ต๋๋ค.
๋ง์ ๋ถ๋ค์ ์ถ์ต์ ๋ถ๋ฌ์ผ์ผํจ ํฌ์ผ๋ชฌ!
์ ๋ ์ด๋ฆด ๋ ํฌ์ผ๋ชฌ์ ๋ณด๋ฉฐ ์๋ผ์จ ์ฌ๋ ์ค ํ๋ช ์ธ์ง๋ผ..
๊ทธ ๊ธฐ์ต์ ๋๋ฌ์ผ๋ฉฐ ์ฌ๋ฐ๊ฒ ์์ ํ์ต๋๋ค.
์์ง ๋ง์ด ๋ถ์กฑํฉ๋๋ค.
ํฌ์ผ๋ชฌ์ ๋ ๋ง๋ฆฌ ๋ฐ์ ์๊ณ , ๊ธฐ๋ฅ๋ ๋จ์ํ๊ฒ ์งฐ์ต๋๋ค.
์ถํ์ ๋ฃ๊ณ ์ถ์ ๊ธฐ๋ฅ ์ค ํ๋๋ ๊ฐ ํฌ์ผ๋ชฌ ๋ณ๋ก ๋ค์ํ ๋ฌผ๋ฆฌ๊ณต๊ฒฉ๊ณผ ๋ฐฉ์ด๋ ฅ์ด ์กด์ฌํฉ๋๋ค.
ํ์ฌ ๊ฐ ํน์ฑ์ ํฌ์ผ๋ชฌ์ ๋ถ์ฌํ๊ณ , ํฌ์ผ๋ชฌ1์ด ํฌ์ผ๋ชฌ2์๊ฒ ๊ณต๊ฒฉํ ๋ ํฌ์ผ๋ชฌ2์ HP๊ฐ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ๋ณ๋์ง ์์ธํ ๋ณด์ฌ์ฃผ๊ณ ์ ํฉ๋๋ค.
๊ทผ๋ฐ ์์ฑํด๋๊ณ ๋ณด๋ ํผ์นด์ธ๋ฅผ ์๋ง๋ค์๋ค์.
์ ์ต์ ๋ ํผ์นด์ธ์ธ๋ฐ ๐
ํด๋์ค ์ค๊ณ
- Bulbasaur : ์ด์ํด์จ
- Charmander : ํ์ด๋ฆฌ
์ ๋ฐ์ดํธ ์ฌํญ(1.1)
- abstract evolve() ์ถ๊ฐ : EXP๊ฐ ์ผ์ ์์น๊ฐ ๋๋ฉด ์งํํ๋ ๋ฉ์๋
- pvp() ์ถ๊ฐ : pvpํ๋ ๊ฐ์ฒด HP๊ฐ 0์ด ๋ ๋ ๊น์ง ๋ฐ๋ณตํ๋ ๋ฉ์๋
โก๏ธ Main์ ํธ์ถํ๋ ๋ฉ์๋ ์ค์ด๊ธฐ ์ํด ์์ฑ - attack() -> fighting() ๋ณ๊ฒฝ
โ ์๋ํ๋ก ๋ณ๊ฒฝํ๋ฉด์ ๊ณต๊ฒฉ๋ณด๋จ ์ธ์์ด๋ผ๊ณ ํ๋ ๊ฒ์ด ๋์ ๊ฒ ๊ฐ์ ๋ณ๊ฒฝํจ. ํ ๋ฒ ๊ณต๊ฒฉํ ๋๋ง๋ค ๋ฒํผ๋ฅผ ์ฃผ๊ธฐ์ํด sleep() ์ถ๊ฐํ์์ผ๋.. ์ฝ๋๊ฐ ์ง์ ๋ถํด์ ธ์ ์ญ์ ํจ.
ํฌ์ผ๋ชฌ(Pokemon)
- ์ด๋ฆ
- ๋ง์
- ๊ณต๊ฒฉ
- ๋ฐฉ์ด
- HP(์ฒด๋ ฅ)
- EXP(๊ฒฝํ์น)
๊ธฐ๋ฅ ๊ตฌํ
- PVP ์ ์ฒญ
- ๐กPVP
- ๋ ์บ๋ฆญํฐ HP ์ํ
- ํฌ์ผ๋ชฌ ํ์ฌ ์ํ
- ๐ก์งํ
Pokemon
1.1
package ํฌ์ผ๋ชฌ๊ฒ์;
public abstract class Pokemon {
private final static int MIN_HP = 0;
protected String name;
protected String village;
protected int power;
protected int defensive;
protected int HP;
protected int EXP;
public Pokemon(String name, String village, int power, int defensive, int HP, int EXP) {
this.name = name;
this.village = village;
this.power = power;
this.defensive = defensive;
this.HP = HP;
this.EXP = EXP;
}
public void evolve(){};
public void pvp(Pokemon pokemon) {
currentHpView(pokemon);
while (HP > MIN_HP && pokemon.HP > MIN_HP) {
fighting(pokemon);
}
HP = 45;
pokemon.HP = 39;
}
public void currentHpView(Pokemon pokemon) {
System.out.println("========= " + name + " VS " + pokemon.name + " =========");
System.out.println(pokemon.name + " HP : " + pokemon.HP);
System.out.println(name + " HP : " + HP);
System.out.println("====================================");
System.out.println();
}
public void fighting(Pokemon pokemon) {
System.out.println(name + " ์ด(๊ฐ) " + pokemon.name + " ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.");
pokemon.HP -= (power - pokemon.defensive);
if(pokemon.HP < MIN_HP) {
pokemon.HP = 0;
System.out.println(pokemon.name + "์ HP๊ฐ 0์ด ๋์ด PVP๊ฐ ์ข
๋ฃ๋ฉ๋๋ค.");
EXP += 10;
System.out.println(name + " ๊ฒฝํ์น๊ฐ " + EXP + " ์ผ(๋ก) ๋ณ๊ฒฝ๋์์ต๋๋ค.");
return;
}
currentHpView(pokemon);
System.out.println(pokemon.name + " ์ด(๊ฐ) " + name + " ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.");
HP -= (pokemon.power - defensive);
if(pokemon.HP < MIN_HP) {
pokemon.HP = 0;
System.out.println(name + "์ HP๊ฐ 0์ด ๋์ด PVP๊ฐ ์ข
๋ฃ๋ฉ๋๋ค.");
pokemon.EXP += 10;
System.out.println(pokemon.name + " ๊ฒฝํ์น๊ฐ " + pokemon.EXP + " ์ผ(๋ก) ๋ณ๊ฒฝ๋์์ต๋๋ค.");
return;
}
currentHpView(pokemon);
}
public void pickUpFight(Pokemon pokemon) {
System.out.println(name + " ์ด(๊ฐ) " + pokemon.name + " ์๊ฒ PVP๋ฅผ ์ ์ฒญ ํฉ๋๋ค.");
System.out.println();
}
public void infoView() {
System.out.println("====== " + name + " ์ ๋ณด ======");
System.out.println("๋ง์ : " + village);
System.out.println("๊ฒฝํ์น : " + EXP);
System.out.println("HP : " + HP);
System.out.println("๊ณต๊ฒฉ : " + power);
System.out.println("๋ฐฉ์ด : " + defensive);
}
public void create() {
System.out.println(name + " ์ด(๊ฐ) " + village + " ๋ง์์์ ์์ฑ๋์์ต๋๋ค.");
System.out.println();
}
}
1.0
package ํฌ์ผ๋ชฌ๊ฒ์;
public class Pokemon {
private final static int MIN_HP = 0;
protected String name;
protected String village;
protected int power;
protected int defensive;
protected int HP;
protected int EXP;
public Pokemon(String name, String village, int power, int defensive, int HP, int EXP) {
this.name = name;
this.village = village;
this.power = power;
this.defensive = defensive;
this.HP = HP;
this.EXP = EXP;
}
public void currentHpView(Pokemon pokemon) {
System.out.println("=========== " + name + " VS " + pokemon.name + " ===========");
System.out.println(pokemon.name + " HP : " + pokemon.HP);
System.out.println(name + " HP : " + HP);
System.out.println("========================================");
System.out.println();
}
public void attack(Pokemon pokemon) {
System.out.println(name + " ์ด(๊ฐ) " + pokemon.name + " ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.");
pokemon.HP -= (power - pokemon.defensive);
if(pokemon.HP < MIN_HP) pokemon.HP = MIN_HP;
if(pokemon.HP == 0) {
System.out.println(pokemon.name + " ์ด(๊ฐ) ์ก์ต๋๋ค.");
EXP += 10;
System.out.println(name + " ๊ฒฝํ์น๊ฐ " + EXP + " ์ฆ๊ฐํ์์ต๋๋ค.");
System.out.println();
}
}
public void pickUpFight(Pokemon pokemon) {
System.out.println(name + " ์ด(๊ฐ) " + pokemon.name + " ์๊ฒ PVP๋ฅผ ์ ์ฒญ ํฉ๋๋ค.");
System.out.println();
}
public void infoView() {
System.out.println("====== " + name + " ์ ๋ณด ======");
System.out.println("๋ง์ : " + village);
System.out.println("๊ฒฝํ์น : " + EXP);
System.out.println("HP: " + HP);
System.out.println("๊ณต๊ฒฉ: " + power);
System.out.println("๋ฐฉ์ด: " + defensive);
System.out.println();
}
public void create() {
System.out.println(name + " ์ด(๊ฐ) " + village + " ๋ง์์์ ์์ฑ๋์์ต๋๋ค.");
System.out.println();
}
}
Bulbasaur(์ด์ํด์จ)
1.1
package ํฌ์ผ๋ชฌ๊ฒ์;
public class Bulbasaur extends Pokemon {
public Bulbasaur() {
super("์ด์ํด์จ", "๊ด๋", 49, 30, 45, 0 );
}
@Override
public void evolve() {
if(EXP >= 10) {
name = "์ด์ํดํ";
EXP = 0;
power += 20;
defensive += 10;
HP += 20;
System.out.println("์งํ์ ์ฑ๊ณตํ์์ต๋๋ค. " + name + " ์ด(๊ฐ) ๋์์ต๋๋ค.");
System.out.println();
}
}
}
1.0
package ํฌ์ผ๋ชฌ๊ฒ์;
public class Bulbasaur extends Pokemon {
public Bulbasaur() {
super("์ด์ํด์จ", "๊ด๋", 49, 30, 45, 0 );
}
}
Charmander(ํ์ด๋ฆฌ)
1.1
package ํฌ์ผ๋ชฌ๊ฒ์;
public class Charmander extends Pokemon {
public Charmander() {
super("ํ์ด๋ฆฌ", "๊ด๋", 52, 30, 39, 0);
}
@Override
public void evolve() {
if(EXP == 10) {
name = "๋ฆฌ์๋";
EXP = 0;
power += 25;
defensive += 14;
HP += 23;
System.out.println("์งํ์ ์ฑ๊ณตํ์์ต๋๋ค. " + name + " ์ด(๊ฐ) ๋์์ต๋๋ค.");
System.out.println();
}
}
}
1.0
package ํฌ์ผ๋ชฌ๊ฒ์;
public class Charmander extends Pokemon {
public Charmander() {
super("ํ์ด๋ฆฌ", "๊ด๋", 52, 30, 39, 0);
}
}
User(ํธ๋ ์ด๋)
package ํฌ์ผ๋ชฌ๊ฒ์;
import java.util.Scanner;
public class User {
public Pokemon setPokemon() {
Pokemon pokemon = null;
Scanner sc = new Scanner(System.in);
System.out.println("ํฌ์ผ๋ชฌ์ ์ ํ ํ์ธ์.");
System.out.println("[1]์ด์ํด์จ [2]ํ์ด๋ฆฌ");
System.out.print(" > ");
int sel = sc.nextInt();
switch(sel) {
case 1 : pokemon = new Bulbasaur(); break;
case 2 : pokemon = new Charmander(); break;
}
return pokemon;
}
}
Main
1.1
package ํฌ์ผ๋ชฌ๊ฒ์;
public class Main {
public static void main(String[] args) {
User user1 = new User();
Pokemon p1 = user1.setPokemon();
p1.create();
User user2 = new User();
Pokemon p2 = user2.setPokemon();
p2.create();
p1.pickUpFight(p2);
p1.pvp(p2);
p1.evolve();
p1.infoView();
p2.infoView();
}
}
1.0
package ํฌ์ผ๋ชฌ๊ฒ์;
public class Main {
public static void main(String[] args) {
User user1 = new User();
Pokemon p1 = user1.setPokemon();
p1.create();
User user2 = new User();
Pokemon p2 = user2.setPokemon();
p2.create();
p1.pickUpFight(p2);
p1.currentHpView(p2);
p1.attack(p2);
p1.currentHpView(p2);
p2.attack(p1);
p1.currentHpView(p2);
p1.attack(p2);
p1.currentHpView(p2);
p1.attack(p2);
p1.infoView();
p2.infoView();
}
}
1.1
ํฌ์ผ๋ชฌ์ ์ ํ ํ์ธ์.
[1]์ด์ํด์จ [2]ํ์ด๋ฆฌ
> 1
์ด์ํด์จ ์ด(๊ฐ) ๊ด๋ ๋ง์์์ ์์ฑ๋์์ต๋๋ค.
ํฌ์ผ๋ชฌ์ ์ ํ ํ์ธ์.
[1]์ด์ํด์จ [2]ํ์ด๋ฆฌ
> 2
ํ์ด๋ฆฌ ์ด(๊ฐ) ๊ด๋ ๋ง์์์ ์์ฑ๋์์ต๋๋ค.
์ด์ํด์จ ์ด(๊ฐ) ํ์ด๋ฆฌ ์๊ฒ PVP๋ฅผ ์ ์ฒญ ํฉ๋๋ค.
========= ์ด์ํด์จ VS ํ์ด๋ฆฌ =========
ํ์ด๋ฆฌ HP : 39
์ด์ํด์จ HP : 45
====================================
์ด์ํด์จ ์ด(๊ฐ) ํ์ด๋ฆฌ ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.
========= ์ด์ํด์จ VS ํ์ด๋ฆฌ =========
ํ์ด๋ฆฌ HP : 20
์ด์ํด์จ HP : 45
====================================
ํ์ด๋ฆฌ ์ด(๊ฐ) ์ด์ํด์จ ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.
========= ์ด์ํด์จ VS ํ์ด๋ฆฌ =========
ํ์ด๋ฆฌ HP : 20
์ด์ํด์จ HP : 23
====================================
์ด์ํด์จ ์ด(๊ฐ) ํ์ด๋ฆฌ ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.
========= ์ด์ํด์จ VS ํ์ด๋ฆฌ =========
ํ์ด๋ฆฌ HP : 1
์ด์ํด์จ HP : 23
====================================
ํ์ด๋ฆฌ ์ด(๊ฐ) ์ด์ํด์จ ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.
========= ์ด์ํด์จ VS ํ์ด๋ฆฌ =========
ํ์ด๋ฆฌ HP : 1
์ด์ํด์จ HP : 1
====================================
์ด์ํด์จ ์ด(๊ฐ) ํ์ด๋ฆฌ ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.
ํ์ด๋ฆฌ์ HP๊ฐ 0์ด ๋์ด PVP๊ฐ ์ข
๋ฃ๋ฉ๋๋ค.
์ด์ํด์จ ๊ฒฝํ์น๊ฐ 10 ์ผ(๋ก) ๋ณ๊ฒฝ๋์์ต๋๋ค.
์งํ์ ์ฑ๊ณตํ์์ต๋๋ค. ์ด์ํดํ ์ด(๊ฐ) ๋์์ต๋๋ค.
====== ์ด์ํดํ ์ ๋ณด ======
๋ง์ : ๊ด๋
๊ฒฝํ์น : 0
HP : 65
๊ณต๊ฒฉ : 69
๋ฐฉ์ด : 40
====== ํ์ด๋ฆฌ ์ ๋ณด ======
๋ง์ : ๊ด๋
๊ฒฝํ์น : 0
HP : 39
๊ณต๊ฒฉ : 52
๋ฐฉ์ด : 30
1.0
ํฌ์ผ๋ชฌ์ ์ ํ ํ์ธ์.
[1]์ด์ํด์จ [2]ํ์ด๋ฆฌ
> 1
์ด์ํด์จ ์ด(๊ฐ) ๊ด๋ ๋ง์์์ ์์ฑ๋์์ต๋๋ค.
ํฌ์ผ๋ชฌ์ ์ ํ ํ์ธ์.
[1]์ด์ํด์จ [2]ํ์ด๋ฆฌ
> 2
ํ์ด๋ฆฌ ์ด(๊ฐ) ๊ด๋ ๋ง์์์ ์์ฑ๋์์ต๋๋ค.
์ด์ํด์จ ์ด(๊ฐ) ํ์ด๋ฆฌ ์๊ฒ PVP๋ฅผ ์ ์ฒญ ํฉ๋๋ค.
=========== ์ด์ํด์จ VS ํ์ด๋ฆฌ ===========
ํ์ด๋ฆฌ HP : 39
์ด์ํด์จ HP : 45
========================================
์ด์ํด์จ ์ด(๊ฐ) ํ์ด๋ฆฌ ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.
=========== ์ด์ํด์จ VS ํ์ด๋ฆฌ ===========
ํ์ด๋ฆฌ HP : 20
์ด์ํด์จ HP : 45
========================================
ํ์ด๋ฆฌ ์ด(๊ฐ) ์ด์ํด์จ ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.
=========== ์ด์ํด์จ VS ํ์ด๋ฆฌ ===========
ํ์ด๋ฆฌ HP : 20
์ด์ํด์จ HP : 23
========================================
์ด์ํด์จ ์ด(๊ฐ) ํ์ด๋ฆฌ ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.
=========== ์ด์ํด์จ VS ํ์ด๋ฆฌ ===========
ํ์ด๋ฆฌ HP : 1
์ด์ํด์จ HP : 23
========================================
์ด์ํด์จ ์ด(๊ฐ) ํ์ด๋ฆฌ ์(๋ฅผ) ๊ณต๊ฒฉํฉ๋๋ค.
ํ์ด๋ฆฌ ์ด(๊ฐ) ์ก์ต๋๋ค.
์ด์ํด์จ ๊ฒฝํ์น๊ฐ 10 ์ฆ๊ฐํ์์ต๋๋ค.
====== ์ด์ํด์จ ์ ๋ณด ======
๋ง์ : ๊ด๋
๊ฒฝํ์น : 10
HP: 23
๊ณต๊ฒฉ: 49
๋ฐฉ์ด: 30
====== ํ์ด๋ฆฌ ์ ๋ณด ======
๋ง์ : ๊ด๋
๊ฒฝํ์น : 0
HP: 0
๊ณต๊ฒฉ: 52
๋ฐฉ์ด: 30