ヒーロー

package hero;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import monster.Monster;

//キャラの継承元とする抽象クラス
public abstract class Hero {

//フィールドの宣言 名前 最大、現在HP 最大、現在MP 攻撃力
protected String name;
protected static List heros = new ArrayList();
protected final int MAXHP = 0;
protected int hp;
protected int power;
protected boolean life = true;
protected boolean def = false;

//コンストラク
public Hero(String name, int hp, int power) {
this.name = name;
this.hp = hp;
this.power = power;
Hero.heros.add(this);
}

//setter
public void setName(String name) {
this.name = name;
}

public void setHp(int hp) {
this.hp = hp;
}

public void setPower(int power) {
this.power = power;
}

//getter
public String getName() {
return this.name;
}

public int getHp() {
return this.hp;
}

public int getPower() {
return this.power;
}

public boolean getDef() {
return this.def;
}

public boolean isLife() {
return this.life;
}

public int getMAXHP() {
return this.MAXHP;
}

//メソッド
//対象を選ぶ
public Monster select(List monster) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int targetNo = Integer.parseInt(br.readLine());

return monster.get(targetNo - 1);
}

//攻撃
public void attack(List monsters) throws NumberFormatException, IOException {
System.out.println("対象を選択してください");
for (int i = 0; i < monsters.size(); i++) {
System.out.println*1;
//初期ステータス
private final int MAXHP = 250;

//コンストラク
public Rore(String name, int hp, int poewr) {
super(name, hp, poewr);
}

//getter
public int getMAXHP() {
return MAXHP;
}
//行動を選択して 行動するメソッド
public void action(List monsters, Hero heros)
throws NumberFormatException, IOException {
if (this.life == true) {
System.out.println(this.name + "の行動を指示してください\n"
+ "1を押すと攻撃\n"
+ "2を押すと防御\n"
+ " です");
int actionNo = Integer.parseInt(br.readLine());
switch (actionNo) {
case 1:
this.attack(monsters);
break;
case 2:
this.def();
default:
}
}
}
}

package hero;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

import monster.Monster;

public class Moon extends Hero {

//新規フィールド
private final int MAXHP = 150;
private final int MAXMP = 200;
private int mp = this.MAXMP;

//コンストラクタ
public Moon(String name, int hp, int power) {
super(name, hp, power);
}

//新規getter
public int getMAXHP() {
return this.MAXHP;
}

public int getMAXMP() {
return this.MAXMP;
}

public int getMp() {
return this.mp;
}

//新規setter
public void setMp(int nmp) {
this.mp = nmp;
}

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

//新規メソッド
//イオナズン 敵全体に100ダメージを与える
public void ionazun(List marray) {
System.out.println(this.getName() + "は、イオナズンを唱えた! 敵全体に100のダメージを与えた");
this.mp -= 20;
for (Monster mhp : marray) {
mhp.damage(100);
}
}

//ベホマ 選択した仲間のHPを全回復
public void behoma(Hero heros) throws NumberFormatException, IOException {

System.out.println(this.getName() + "は、ベホマを唱えた!\n"
+ "対象を選択してください");
for (int i = 0; i < heros.length; i++) {
System.out.println(i + 1 + "を押すと、" + heros[i].getName() + "を回復させます");

int target = Integer.parseInt(br.readLine());
if (heros[target - 1].life == true) {
heros[target - 1].setHp(heros[target - 1].MAXHP);

this.mp -= 20;
System.out.println(heros[target - 1].getName() + "のHPが全回復した!");
} else {
System.out.println("そいつは死んでます!選択できません");
return;
}
}
}

//ザオリク HPが0である仲間を蘇生 ターゲットが1ならローレ 2ならサマル
public void zaoriku(Hero heros) throws NumberFormatException, IOException {
System.out.println("対象を選択してください");
for (int i = 0; i < heros.length; i++) {
if (i != 2) {
System.out.println(i + 1 + "を押すと、" + heros[i].getName() + "を蘇生させます");
}
}
int target = Integer.parseInt(br.readLine());
System.out.println(this.getName() + "は、ザオリクを唱えた!\n");
if (heros[target - 1].life == false) {
heros[target - 1].life = true;
heros[target - 1].hp = heros[target - 1].MAXHP;
System.out.println(heros[target - 1] + "は、生き返った!");
this.mp -= 30;
} else {
System.out.println("うまく決まらなかった!");
}
}

public void pray() {
System.out.println(this.getName() + "は、祈りの指輪を使った!MPが回復した");
this.mp += 20;
}

//行動をキーボードで選択して呼び出すメソッド
public void action(List monsters, Hero heros)
throws NumberFormatException, IOException {
if (this.life == true) {
System.out.println(this.name + "の行動を指示してください\n"
+ "1を押すと攻撃\n"
+ "2を押すと防御\n"
+ "3を押すとイオナズン\n"
+ "4を押すとベホマ\n"
+ "5を押すとザオリク です");
int actionNo = Integer.parseInt(br.readLine());
switch (actionNo) {
case 1:
this.attack(monsters);
break;
case 2:
this.def();
break;
case 3:
this.ionazun(monsters);
break;
case 4:
this.behoma(heros);
break;
case 5:
this.zaoriku(heros);
default:
}
}
}
}

package hero;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

import monster.Monster;

public class Samaru extends Hero {
//新規フィールド
private final int MAXHP = 200;
private final int MAXMP = 100;
private int mp = this.MAXMP;

//コンストラクタ
public Samaru(String namae, int inochi, int chikara) {
super(namae, inochi, chikara);
}

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

//新規getter
public int getMAXHP() {
return this.MAXHP;
}

public int getMAXMP() {
return this.MAXMP;
}

public int getMp() {
return this.mp;
}

//新規setter
public void setMp(int nmp) {
this.mp = nmp;
}

//新規メソッド
//ベギラマ
public void begirama(List marray) {
System.out.println(this.getName() + "は、ベギラマを唱えた! 敵全体に70のダメージを与えた");
this.mp -= 10;
for (Monster mhp : marray) {
mhp.damage(70);
}
}

//ベホイミ 選択した仲間のHPを80回復
public void behoimi(Hero heros) throws NumberFormatException, IOException {

System.out.println(this.getName() + "は、ベホイミを唱えた!\n"
+ "対象を選択してください");
for (int i = 0; i < heros.length; i++) {
System.out.println(i + 1 + "を押すと、" + heros[i].getName() + "を回復させます");
}
int target = Integer.parseInt(br.readLine());
if (heros[target - 1].life == true) {
heros[target - 1].setHp(heros[target - 1].getHp() + 80);

if (heros[target - 1].getHp() > heros[target - 1].getMAXHP()) {
heros[target - 1].setHp(heros[target - 1].getMAXHP());
}
this.mp -= 10;
System.out.println(heros[target - 1].getName() + "のHPが80回復した!");
} else {
System.out.println("そいつは死んでます!選択できません");
return;
}
}

//ザオリク HPが0である仲間を蘇生 ターゲットが1ならローレ 3ならムーン
public void zaoriku(Hero heros) throws NumberFormatException, IOException {
System.out.println("対象を選択してください");
for (int i = 0; i < heros.length; i++) {
if (i != 1) {
System.out.println(i + 1 + "を押すと、" + heros[i].getName() + "を蘇生させます");
}
}
int target = Integer.parseInt(br.readLine());
System.out.println(this.getName() + "は、ザオリクを唱えた!\n");
if (heros[target - 1].life == false) {
heros[target - 1].life = true;
heros[target - 1].hp = heros[target - 1].MAXHP;
System.out.println(heros[target - 1] + "は、生き返った!");
this.mp -= 30;
} else {
System.out.println("うまく決まらなかった!");
}
}

//行動をキーボードで選択して呼び出すメソッド
public void action(List monsters, Hero[] heros)
throws NumberFormatException, IOException {
if (this.life == true) {
System.out.println(this.name + "の行動を指示してください\n"
+ "1を押すと攻撃\n"
+ "2を押すと防御\n"
+ "3を押すとベギラマ\n"
+ "4を押すとベホイミ\n"
+ "5を押すとザオリク です");
int actionNo = Integer.parseInt(br.readLine());
switch (actionNo) {
case 1:
this.attack(monsters);
break;
case 2:
this.def();
break;
case 3:
this.begirama(monsters);
break;
case 4:
this.behoimi(heros);
break;
case 5:
this.zaoriku(heros);
default:
}
}
}
}

*1:i + 1) + "を押すと" + monsters.get(i).getName() + "を攻撃します"); } Monster selectResult = this.select(monsters); System.out.println(this.name + "は攻撃した!\n" + selectResult.getName() + "に" + this.power + "のダメージを与えた"); selectResult.setHp(selectResult.getHp() - this.power); } //防御 public void def() { System.out.println(this.name + "は、身を守っている"); this.def = true; } //キャラクターの行動を呼び出す抽象メソッド public abstract void action(List monster, Hero[] heros) throws NumberFormatException, IOException; //ダメージ量を受け取り ダメージを受ける public int damage(int damage) { if (this.def == true) { damage /= 2; } this.hp -= damage; if (this.hp < 0) { this.die(); } return damage; } //死ぬ public void die() { System.out.println(this.name + "は、死んでしまった"); this.life = false; } } package hero; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; import monster.Monster; //戦士クラス public class Rore extends Hero { BufferedReader br = new BufferedReader(new InputStreamReader(System.in