職業訓練 44日目 JAVA
39 SAIGON 二回目
前回は ブンチャ・ハノイ
職業訓練 12日目 アプリケーション開発環境演習 - おじさんJAVA入門記
今回は ランチCセット フォー・ガー です。


この店は 良いな。
お近くの方はぜひどうぞ。
職業訓練 JAVA
スレッド
AIとお勉強
//独自例外クラス
class DeadCharacterException extends Exception {
public DeadCharacterException(String message) {
super(message);
}
}
//基底クラス
abstract class Character {
private String name;
private int hp;
public Character(String name,int hp) {
this.name = name;
this.hp = hp;
}
public String getName() {
return name;
}
public int getHp() {
return hp;
}
public boolean isAlive() {
return hp > 0;
}
public void takeDamage(int damage) {
hp -= damage;
if(hp < 0) hp =0;
System.out.println(name + " は " + damage + " ダメージを受けた! 残りHP: " + hp);
}
public abstract void attack(Character target) throws DeadCharacterException;
}
//派生クラス 戦士
class Warrior extends Character {
public Warrior(String name, int hp) {
super(name, hp);
}
@Override
public void attack(Character target) throws DeadCharacterException {
if (!isAlive()) {
throw new DeadCharacterException(getName() + " は戦闘不能で攻撃できない!");
}
System.out.println(getName() + " の剣攻撃!");
target.takeDamage(15);
}
}
//魔法使い
class Mage extends Character{
public Mage(String name,int hp) {
super(name,hp);
}
public void attack(Character target) throws DeadCharacterException {
if (!isAlive()) {
throw new DeadCharacterException(getName() + " は戦闘不能で魔法を唱えられない!");
}
System.out.println(getName() + " のファイアボール!");
target.takeDamage(20);
}
}
public class BattleSystemWithStackTrace {
public static void main(String[] args) {
Character warrior = new Warrior("アルス",30);
Character mage = new Mage("ルナ",40);
try {
warrior.attack(mage);
mage.attack(warrior);
// HPをゼロにしてみる
warrior.takeDamage(50); // アレス戦闘不能
// 戦闘不能キャラが攻撃 → 例外発生
warrior.attack(mage);
}catch (DeadCharacterException e) {
System.out.println("例外発生: " + e.getMessage());
System.out.println("スタックトレースを表示します:");
e.printStackTrace(); // ここで「どこで例外が発生したか」が分かる
}
}
}
アルス の剣攻撃!
ルナ は 15 ダメージを受けた! 残りHP: 25
ルナ のファイアボール!
アルス は 20 ダメージを受けた! 残りHP: 10
アルス は 50 ダメージを受けた! 残りHP: 0
例外発生: アルス は戦闘不能で攻撃できない!
スタックトレースを表示します:
DeadCharacterException: アルス は戦闘不能で攻撃できない!
at Warrior.attack(BattleSystemWithStackTrace.java:52)
at BattleSystemWithStackTrace.main(BattleSystemWithStackTrace.java:91)
44日目/113日間
このブログへのコメントは muragonにログインするか、
SNSアカウントを使用してください。