モンスター

package monster;

import java.util.ArrayList;
import java.util.List;

import hero.Hero;

public abstract class Monster {
protected static List monsters = new ArrayList();
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 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

システム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 = new ArrayList();
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());*/
}

もんhw

10年前と比べるとエンゲル係数がかなり上がってしまいました
頭では分かっとっても、中々生活のレベルを下げるって難しいよねw


趣味に使う金が無くなった分飲み食いに回すのが多くなった


でもPS4はそんなに興味がないんよなあ