こやし日記

2018-03-08 モンスター

package monster;

import java.util.ArrayList;

import java.util.List;

import hero.Hero;

public abstract class Monster {

protected static List<Monster> monsters = new ArrayList<Monster>();

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:

}

}

}

2018-03-07 ヒーロー

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<Hero> heros = new ArrayList<Hero>();

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> 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<Monster> monsters) throws NumberFormatException, IOException {

System.out.println("対象を選択してください");

for (int i = 0; i < monsters.size(); i++) {

System.out.println((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> 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));

//初期ステータス

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<Monster> 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<Monster> 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<Monster> 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<Monster> 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<Monster> 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:

}

}

}

}

2018-03-05 システム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<Monster> monsterList = new ArrayList<Monster>();

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());*/

}