第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("スライムは、体をうねらせて逃げ出した。");
}
}