コンテンツにスキップ

第12章

コード12-01

Character.java

public abstract class Character implements Life {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Life.java

public interface Life { /* … */ }

Main.java

public class Main {
  public static void main(String[] args) {
    Life lf = new Wizard();
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

Wizard.java

public class Wizard extends Character {
  int mp;
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に3ポイントのダメージ");
    m.hp -= 3;
  }
  public void fireball(Matango m) {
    System.out.println(this.name + "は火の玉を放った!");
    System.out.println("敵に20ポイントのダメージ");
    m.hp -= 20;
    this.mp -= 5;
  }
}

コード12-02

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

Wizard.java

public class Wizard extends Character {
  int mp;
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に3ポイントのダメージ");
    m.hp -= 3;
  }
  public void fireball(Matango m) {
    System.out.println(this.name + "は火の玉を放った!");
    System.out.println("敵に20ポイントのダメージ");
    m.hp -= 20;
    this.mp -= 5;
  }
}

コード12-03

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Main.java

public class Main {
  public static void main(String[] args) {
    Wizard w = new Wizard();
    Matango m = new Matango();
    w.name = "アサカ";
    w.attack(m);
    w.fireball(m);
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

Wizard.java

public class Wizard extends Character {
  int mp;
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に3ポイントのダメージ");
    m.hp -= 3;
  }
  public void fireball(Matango m) {
    System.out.println(this.name + "は火の玉を放った!");
    System.out.println("敵に20ポイントのダメージ");
    m.hp -= 20;
    this.mp -= 5;
  }
}

コード12-04

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Main.java

public class Main {
  public static void main(String[] args) {
    Wizard w = new Wizard();
    Character c = w;
    Matango m = new Matango();
    c.name = "アサカ";
    c.attack(m);
    c.fireball(m);
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

Wizard.java

public class Wizard extends Character {
  int mp;
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に3ポイントのダメージ");
    m.hp -= 3;
  }
  public void fireball(Matango m) {
    System.out.println(this.name + "は火の玉を放った!");
    System.out.println("敵に20ポイントのダメージ");
    m.hp -= 20;
    this.mp -= 5;
  }
}

コード12-05

Main.java

public class Main {
  public static void main(String[] args) {
    Slime s = new Slime(); Monster m = new Slime();
    s.run(); m.run();
  }
}

Monster.java

public abstract class Monster {
  public void run(){
    System.out.println("モンスターは逃げ出した。");
  }
}

Slime.java

public class Slime extends Monster {
  public void run() {
    System.out.println("スライムはサササっと逃げ出した。");
  }
}

コード12-06

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Hero.java

public class Hero extends Character {
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に10ポイントのダメージをあたえた!");
    m.hp -= 10;
  }
}

Main.java

public class Main {
  public static void main(String[] args) {
    Hero h1 = new Hero();
    Hero h2 = new Hero();
    Thief t1 = new Thief();
    Wizard w1 = new Wizard();
    Wizard w2 = new Wizard();
    // 冒険開始!
    // まず宿屋に泊まる
    h1.hp += 50;
    h2.hp += 50;
    t1.hp += 50;
    w1.hp += 50;
    w2.hp += 50;
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

Thief.java

public class Thief extends Character {
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に7ポイントのダメージをあたえた!");
    m.hp -= 7;
  }
}

Wizard.java

public class Wizard extends Character {
  int mp;
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に3ポイントのダメージ");
    m.hp -= 3;
  }
  public void fireball(Matango m) {
    System.out.println(this.name + "は火の玉を放った!");
    System.out.println("敵に20ポイントのダメージ");
    m.hp -= 20;
    this.mp -= 5;
  }
}

コード12-07

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Hero.java

public class Hero extends Character {
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に10ポイントのダメージをあたえた!");
    m.hp -= 10;
  }
}

Main.java

public class Main {
  public static void main(String[] args) {
    Character[] c = new Character[5];
    c[0] = new Hero();
    c[1] = new Hero();
    c[2] = new Thief();
    c[3] = new Wizard();
    c[4] = new Wizard();
    // 宿屋に泊まる
    for (Character ch : c) {
      ch.hp += 50;
    }
  }
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

Thief.java

public class Thief extends Character {
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に7ポイントのダメージをあたえた!");
    m.hp -= 7;
  }
}

Wizard.java

public class Wizard extends Character {
  int mp;
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に3ポイントのダメージ");
    m.hp -= 3;
  }
  public void fireball(Matango m) {
    System.out.println(this.name + "は火の玉を放った!");
    System.out.println("敵に20ポイントのダメージ");
    m.hp -= 20;
    this.mp -= 5;
  }
}

コード12-08

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Matango m);
}

Goblin.java

public class Goblin {
  int hp;
  final int LEVEL = 12;
  char suffix;
  public void run() {
    System.out.println("ゴブリン" + this.suffix + "はダダダッと逃げ出した!");
  }
}

Hero.java

public class Hero extends Character {
  public void attack(Matango m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に10ポイントのダメージをあたえた!");
    m.hp -= 10;
  }
  public void attack(Goblin g) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に10ポイントのダメージをあたえた!");
    g.hp -= 10;
  }
  // 以下スライム用など続く
}

Matango.java

public class Matango {
  int hp;
  final int LEVEL = 10;
  char suffix;
  public void run() {
    System.out.println("お化けキノコ" + this.suffix + "は逃げ出した!");
  }
}

コード12-09

Character.java

public abstract class Character {
  String name;
  int hp;
  public void run() {
    System.out.println(this.name + "は逃げ出した");
  }
  public abstract void attack(Monster m);
}

Hero.java

public class Hero extends Character {
  public void attack(Monster m) {
    System.out.println(this.name + "の攻撃!");
    System.out.println("敵に10ポイントのダメージをあたえた!");
    m.hp -= 10;
  }
}

Monster.java

public abstract class Monster {
  int hp;
  public void run(){
    System.out.println("モンスターは逃げ出した。");
  }
}

コード12-10

DeathBat.java

public class DeathBat extends Monster {
  public void run() {
    System.out.println("地獄コウモリは、羽ばたいて逃げ出した。");
  }
}

Goblin.java

public class Goblin extends Monster {
  public void run() {
    System.out.println("ゴブリンは、腕をふって逃げ出した。");
  }
}

Main.java

public class Main {
  public static void main(String[] args) {
    Monster[] monsters = new Monster[3];
    monsters[0] = new Slime();
    monsters[1] = new Goblin();
    monsters[2] = new DeathBat();
    for (Monster m : monsters) {
      m.run();
    }
  }
}

Monster.java

public abstract class Monster {
  int hp;
  public void run(){
    System.out.println("モンスターは逃げ出した。");
  }
}

Slime.java

public class Slime extends Monster {
  public void run() {
    System.out.println("スライムは、体をうねらせて逃げ出した。");
  }
}