ここから本文です

今、プレイヤーとエネミーを親クラスから継承して戦わせる事をしています。 ここ...

rir********さん

2019/5/1914:05:35

今、プレイヤーとエネミーを親クラスから継承して戦わせる事をしています。
ここで、プレイヤーが死んだらGAME OVER
エネミーが死んだらプレイヤーがエネミークラスの経験値メソッドを読んで

経験値を獲得としたいです!!
例外をどちらかの体力が0になったら取ってるのですがどのように書けば宜しいか……
至急誰か教えてください!
以下はソースです

import java.util.Random;

public class character {

private String name;
private int hp;
protected int basicPower;
private int maxHp;

character(String name, int hp, int basicPower) {
this.name = name;
this.hp = hp;
this.basicPower = basicPower;
this.maxHp = hp;
}

public int attack() {
Random rand = new Random();
int attack = basicPower * rand.nextInt(6);
System.out.println(name + "の攻撃");
return attack;
}



/**
* 相手側の攻撃値分現体力から
* @param attack
* @throws BatteleException
*/

public void damage(int attack){
System.out.println(name + "は" + attack + "damege受けた");
hp -= attack;

if (hp <= 0) {
this.status();
throw new BattleException();
}
this.status();
return;
}

/**
* 最大体力と残体力を比較して
* ステータスを表記させるメソッド
*/
public void status() {
if (hp <= 0) {
hp = 0;
}
System.out.println(name + "の残りHPは" + hp + "です。");
System.out.print("ステータス:");
if (hp >= maxHp * 0.5) {
System.out.println("元気");
} else if (hp >= maxHp * 0.2) {
System.out.println("疲れ");
} else if (hp > 0) {
System.out.println("瀕死");
} else {
System.out.println("死亡");
}

System.out.println("----------------");
}

}

public class Player extends character {
private int powerUp;

Player(String name, int hp, int basicPower) {
super(name, hp, basicPower);
this.powerUp = powerUp;

}

public int powerUp(int powerUp) {
basicPower += powerUp;
System.out.println("攻撃力は" + basicPower + "です。");
System.out.println("----------------");


return basicPower;
}

}

import java.util.Random;

public class Battlefield {
Player player;
Enemy enemy;

Battlefield(Player player, Enemy enemy) {
this.player = player;
this.enemy = enemy;
}

public void battle() {
int turn = 1;

System.out.println("敵が現れた!");
System.out.println("BATTLEを開始します");
System.out.println("----------------");

/**
* 乱数0,1の値でどちらが取れるかで先にどちらが攻撃するかを
* ランダムに毎回戦闘を行っている。
*
*/
try {
while (true) {
Random rand = new Random();
int plaattack = player.attack();
int eneattack = enemy.attack();
int x = rand.nextInt(2)+1;

System.out.println(turn + "ターン目");
if (x == 1) {

enemy.damage(plaattack);
player.damage(eneattack);
turn++;

} else {
player.damage(eneattack);
enemy.damage(plaattack);
turn++;
}
}

//戦闘終了後にどちらが死んだかで表示を決める
//playerが死んだならgameover
//enemyが死んだなら経験値を獲得
} catch (BattleException e) {
System.out.println("Battle終了");
}
}
}



import java.util.Scanner;

public class result {

public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
Player pla = new Player("工藤", 50, 20);




System.out.println("基礎攻撃力は" + pla.basicPower + "です。");
System.out.println("装備上昇値を入力して下さい");
System.out.print("上昇値:");
int n = stdIn.nextInt();
pla.powerUp(n);

Enemy ene = new Enemy("スライム", 100, 20, 100);

Battlefield bat = new Battlefield(pla, ene);
bat.battle();





}

}

閲覧数:
27
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

ama********さん

2019/5/1922:14:24

Enemyクラスが抜けてます。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

qo_********さん

2019/5/2004:40:57

キャラクタの体に
ディスプレイが埋め込まれている
サイバーな世界なのですか?

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる