質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

1258閲覧

HPが0のとき倒れさせたい

puroni_naritai

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/10/05 02:59

編集2020/10/05 07:58

前提・実現したいこと

課題の延長で自分でコードを書いてるんですが、ダメージが0になったら倒れるように動かそうとしていますがうまくいきません。
最後のHPが0なら倒れるの部分を変えればいいのか、//ダメージがプラスならダメージの延長で書けばいいのかわからないのですがどうすればいいのでしょうか。

発生している問題・エラーメッセージ

public class Hero extends Character {
private int weapon;

//getter入力中の内容をテンプレートとして保存

プレビュー
閉じる
タイトルの書き方
public int getWeapon() {
return weapon;
}

//setter public void setWeapon(int weapon) { this.weapon = weapon; } //引数あり public Hero(String name, int hp, int Ac, int Df, int weapon) { super(name, hp, Ac, Df); this.weapon = weapon; } //ライド @Override public void attack(Character opponent) { Integer damage = super.getAc() + this.getWeapon() - opponent.getDf(); /* @Override public void magic_attack(Character opponent) { Integer damage = 5; opponent.setHp(opponent.getHp() - damage ); System.out.print(this.getName() + "は魔法で" + opponent.getName() + "に" + damage + "のダメージを与えた!"); }*/ // if (damage > 0) { //ダメージがプラスならダメージ opponent.setHp(opponent.getHp() - damage); System.out.println(this.getName() + "は" + opponent.getName() + "に" + damage + "のダメージを与えた!"); } else { //ダメージが0以下ならミス System.out.println("ミス!" + this.getName() + "は" + opponent.getName() + "にダメージを与えられない!"); } if (opponent.setHp == 0) { //HPが0なら倒れる opponent.setHp(opponent.getHp() == 0); System.out.println(this.getName() + "は倒れた!"); } else { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getHp() { return hp; } public void setHp(int hp) { this.hp = hp; } public int getAc() { return Ac; } public void setAc(int Ac) { this.Ac = Ac; } public int getDf() { return Df; } public void setDf(int Df) { this.Df = Df; }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

少なくとも、
if (opponent.setHp == 0)
//HPが0なら倒れる
ではなくて、
if (opponent.setHp <= 0)
//HPが0以下なら倒れる
のような気がするのですが、どうでしょうか?

投稿2020/10/05 04:16

firegrape

総合スコア902

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

puroni_naritai

2020/10/05 05:36

if (opponent.setHp <= 0)に変えてみましたが、setHpがフィールドではないと言われてますね。 //ダメージがプラスなら~のとこは適応されてるので定義はされているはずなんですが、、、
firegrape

2020/10/05 06:30

setHpメソッドはどこで定義されているんでしたっけ?
puroni_naritai

2020/10/05 07:58

編集しました。//HPが0なら倒れるより下ですね。
firegrape

2020/10/05 08:15

承知しました。 opponent.setHp(opponent.getHp() == 0); ここの引数がおかしいよう気がするのですが、 ここはどのような処理をしたいのでしょうか?
puroni_naritai

2020/10/05 10:05

その部分をif (opponent.setHp <= 0)に変えましたができなかったので戻しちゃってました。 ここでHPが0以下になったら倒れるようにしたいです。
firegrape

2020/10/05 10:08

いえ、自分が言っているのは引数の方です。 引数がおかしいような気がするので。
puroni_naritai

2020/10/05 10:25

引数の部分をthis.hpに変えたらいけました。そしたらその下のopponent.hpがCharacterで未定義だと言われました。
firegrape

2020/10/05 10:46

承知しました。 そもそもなんですが、HPが0以下になって、倒れたらsetHpする必要ありますか? もし必要でも0確定ならsetする必要ない気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問