モンスター
package monster;
import java.util.ArrayList;
import java.util.List;
import hero.Hero;
public abstract class Monster {
protected static List
protected String name;
protected int hp;
protected int power;
private boolean life = true;
//コンストラクタ
public Monster(String name, int hp, int power) {
this.name = name;
this.setHp(hp);
this.power = power;
}
//getter
public String getName() {
return this.name;
}
public int getHp() {
return this.hp;
}
public int getPower() {
return this.power;
}
public boolean isLife() {
return life;
}
//setter
public void setName(String namae) {
this.name = namae;
}
public void setHp(int hp) {
this.hp = hp;
}
//メソッド
//攻撃
public void attack(Hero heros) {
int target = new java.util.Random().nextInt(3);
System.out.println(this.name + "は、攻撃した!\n"
+ heros[target - 1].getName() + "に、"
+ heros[target - 1].damage(this.power)
+ "のダメージを与えた");
}
//死亡
public void die() {
System.out.println(this.name + "を倒した!");
this.life=false;
}
//ダメージ量を受け取り ダメージを受ける
public int damage(int damage) {
this.hp -= damage;
if (this.hp < 0) {
this.die();
}
return damage;
}
//行動を選択する抽象メソッド
public abstract void action(Hero heros);
}
package monster;
import hero.Hero;
public class Slime extends Monster {
//コンストラクタ
public Slime() {
super("スライム", 50, 10);
}
public void action(Hero heros) {
if (this.isLife() == true) {
this.attack(heros);
}
}
}
package monster;
import hero.Hero;
public class Matango extends Monster {
//コンストラクタ
public Matango() {
super("おばけきのこ", 300, 40);
}
//追加メソッド
public void housi(Hero heros) {
System.out.println(this.getName() + "は、胞子をばらまいた!味方全員がダメージを受けた");
for (Hero h : heros) {
h.damage(25);
}
}
public void action(Hero heros) {
if (this.isLife() == true) {
int pattern = new java.util.Random().nextInt(2);
switch (pattern) {
case 1:
this.attack(heros);
break;
case 2:
this.housi(heros);
default:
}
}
}
}
package monster;
import hero.Hero;
public class Dragon extends Monster {
//コンストラクタ
public Dragon() {
super("ドラゴン", 350, 50);
}
//追加メソッド
public void fire(Hero heros) {
System.out.println(this.getName() + "は、炎を吐いた!味方全員がダメージを受けた");
for (Hero hhp : heros) {
hhp.damage(30);
}
}
public void action(Hero heros) {
if (this.isLife() == true) {
int pattern = new java.util.Random().nextInt(2);
switch (pattern) {
case 1:
this.attack(heros);
break;
case 2:
this.fire(heros);
default:
}
}
}
}
package monster;
import hero.Hero;
public class Boss extends Monster{
public Boss(String name, int hp, int power) {
super("ぼす", 1000, 40);
}
//新規メソッド
public void fubuki(Hero heros) {
System.out.println(this.getName()+"は、吹雪を吐いた!味方全員がダメージを受けた");
for(Hero hhp:heros) {
hhp.damage(50);
}
}
public void meisou() {
System.out.println(this.getName()+"は、瞑想して回復した");
this.setHp(getHp()+200);
}
public void warau() {
System.out.println(this.getName()+"は、不敵に笑っている");
}
public void action(Hero[] heros) {
int pattern = new java.util.Random().nextInt(2);
switch(pattern) {
case 1:
this.attack(heros);
break;
case 2:
this.fubuki(heros);
break;
case 3:
this.meisou();
break;
case 4:
this.warau();
default:
}
}
}
ヒーロー
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
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
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int targetNo = Integer.parseInt(br.readLine());
return monster.get(targetNo - 1);
}
//攻撃
public void attack(List
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
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
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
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
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
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
システム2つとメイン
package system;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import hero.Hero;
import monster.Dragon;
import monster.Matango;
import monster.Monster;
import monster.Slime;
public class Buttlesystem {
public boolean battle(Hero heros) throws NumberFormatException, IOException {
List
monsterList.add(new Slime());
monsterList.add(new Dragon());
monsterList.add(new Matango());
for (Monster m : monsterList) {
System.out.println(m.getName() + "が現れた!");
}
while(true) {
System.out.println("行動を選択してください");
//Hero3人の行動
for(Hero h :heros) {
h.action(monsterList, heros);
}
//モンスターの生死判定
if(monsterList.get(0).isLife() == false &&
monsterList.get(1).isLife()== false &&
monsterList.get(2).isLife()==false) {
System.out.println("戦闘に勝利しました 次の階に行きましょう");
return true;
}
System.out.println("モンスターの攻撃!");
//モンスター3匹の行動
for(Monster m : monsterList) {
m.action(heros);
}
//Hero3人の生死判定
if(heros[0].isLife()== false &&
heros[1].isLife()== false &&
heros[2].isLife()== false) {
System.out.println("全滅です");
return false;
}
}
}
public boolean bossbattle(Hero heros) {
System.out.println("ボスが現れた!");
return true;
}
}
package system;
import java.io.IOException;
import hero.Hero;
public class Movesystem {
Buttlesystem bs= new Buttlesystem();
public void move(Hero heros) throws NumberFormatException, IOException {
for(int i=0;i<5;i++) {
System.out.println("現在"+(i+1)+"階です");
int road =new java.util.Random().nextInt(10);
if (road<4) {
if(bs.battle(heros)==false) {
//強制終了させる
}else {
System.out.println("モンスターに勝利しました 次の階に移動します");
}
}else {
System.out.println("階段を見つけました!次の階に移動します");
}
}
System.out.println("次は6階です ボスが出ます");
bs.bossbattle(heros);
System.out.println("お疲れ様でした 全部クリアです!");
}
}
package tsuji.game;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import hero.Hero;
import hero.Moon;
import hero.Rore;
import hero.Samaru;
import system.Movesystem;
public class Main {
public static void main(String args) throws IOException {
//入力ストリームの生成
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//3人のキャラクターのインスタンスの生成
Rore rore = new Rore("もょもと", 250, 150);
Samaru samaru = new Samaru("クッキー", 200, 100);
Moon moon = new Moon("プリン", 150, 50);
Movesystem move=new Movesystem();
Hero[] heros = new Hero[3];
heros[0] = rore;
heros[1] = samaru;
heros[2] = moon;
/*System.out.println("このゲームのルールを説明します\n"
+ "あなたは、3人の勇者を操作して、階段を探してもらいます\n"
+ "階段を見つける途中で、モンスターに出くわす事もあります\n"
+ "モンスターを倒しながら階段を探し、6階にたどり着けばクリアです\n"
+ "3人の勇者には、それぞれ特徴があります\n"
+ rore.getName() + "は、体が強く、魔法が使えません\n"
+ samaru.getName() + "は、力も魔法もそこそこです\n"
+ moon.getName() + "は、非力ですが、魔法が得意です\n"
+ "この3人の特徴を生かしながら、階段を探してください");*/
move.move(heros);
}/*int terget = Integer.parseInt(br.readLine());*/
}
2018年
今年はいい一年にしたい!
昔の日記が痛きもすぎるけど、同時にほほえましくもあるw
がつこう
ふとりすぎ