diff --git a/.gitignore b/.gitignore index cb0e6a9..820ffb2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ bin/* -*.class \ No newline at end of file +*.class + diff --git a/src/Kabu/TheGiantTurnip.java b/src/Kabu/TheGiantTurnip.java index 5fdeee9..e0fe0f3 100644 --- a/src/Kabu/TheGiantTurnip.java +++ b/src/Kabu/TheGiantTurnip.java @@ -1,20 +1,20 @@ package Kabu; public class TheGiantTurnip { - public static void main(String[] args){ + public static void main(String[] args) { System.out.println("「おおきなかぶ」~ロシア民話~"); - Human jisan = new Human("おじいさん",40); + Human jisan = new Human("おじいさん", 40); Turnip kabu = jisan.plant(); jisan.grab(kabu); jisan.pull(); - Human basan = new Human("おばあさん",20); - jisan.call(basan); - basan.pull(); + Human basan = new Human("おばあさん", 20); + jisan.call(basan); // お爺さんがお婆さんを呼んでくる(お婆さんはお爺さんを掴む) + basan.pull(); // お婆さんが引っ張る - Human mago = new Human("まご",10); + Human mago = new Human("まご", 10); basan.call(mago); mago.pull(); @@ -32,107 +32,110 @@ } } -abstract class Organism{ +abstract class Organism { String name = ""; int power; abstract void pull(int receivedPower); - String getName(){ + String getName() { return name; - } + } } -class Animal extends Organism{ +class Animal extends Organism { Organism grabbingObject; - Turnip plant(){ + Turnip plant() { System.out.println(name + "はカブを植えました."); return new Turnip(); } - void call(Animal dareka){ - dareka.grabbingObject = this; + void call(Animal dareka) { System.out.println(name + "は" + dareka.getName() + "を呼んできました."); + // dareka.grabbingObject = this; + dareka.grab(this); } - - void pull() { - if(grabbingObject == null){ - System.out.println("何も掴んでいません"); - return; - } - if(grabbingObject instanceof Vegetable){ - System.out.println(name + "は" + grabbingObject.getName() + "を引っ張りました."); - }else{ - System.out.println(name + "は" + grabbingObject.getName() + "を引っ張り,"); - } - grabbingObject.pull(power); - } - - @Override - void pull(int receivedPower) { - if(grabbingObject == null){ - System.out.println("何も掴んでいません"); - return; - } - if(grabbingObject instanceof Vegetable){ - System.out.println(name + "は" + grabbingObject.getName() + "を引っ張りました."); - }else{ - System.out.println(name + "は" + grabbingObject.getName() + "を引っ張り,"); - } - grabbingObject.pull(power + receivedPower); - } - - void grab(Organism _grabbingObject){ + void grab(Organism _grabbingObject) { grabbingObject = _grabbingObject; } + + void pull() { /* 末尾の生き物が引っ張るときに呼び出す */ + if (grabbingObject == null) { + System.out.println("何も掴んでいません"); + return; + } + if (grabbingObject instanceof Vegetable) { + System.out.println(name + "は" + grabbingObject.getName() + "を引っ張りました."); + } else { + System.out.println(name + "は" + grabbingObject.getName() + "を引っ張り,"); + } + grabbingObject.pull(power); // 末尾の生き物が、掴んでいるモノを、powerの力で引っ張る + } + + void pull(int receivedPower) { /* メソッドのオーバーロード */ // 生き物がpowerで引っ張るとき + if (grabbingObject == null) { + System.out.println("何も掴んでいません"); + return; + } + if (grabbingObject instanceof Vegetable) { // 引っ張り対象が野菜(カブ)だったら、おわり + System.out.println(name + "は" + grabbingObject.getName() + "を引っ張りました."); + } else { + System.out.println(name + "は" + grabbingObject.getName() + "を引っ張り,"); + } + grabbingObject.pull(power + receivedPower); // 再帰呼び出し + } } -class Human extends Animal{ - Human(String _name, int _power){ + +class Human extends Animal { + Human(String _name, int _power) { name = _name; power = _power; } } -class Dog extends Animal{ - Dog(int _power){ + +class Dog extends Animal { + Dog(int _power) { name = "犬"; power = _power; } } -class Cat extends Animal{ - Cat(int _power){ + +class Cat extends Animal { + Cat(int _power) { name = "猫"; power = _power; } } -class Mouse extends Animal{ - Mouse(int _power){ + +class Mouse extends Animal { + Mouse(int _power) { name = "ねずみ"; power = _power; } } -class Vegetable extends Organism{ +class Vegetable extends Organism { boolean harvest = false; + @Override - void pull(int receivedPower) { + void pull(int receivedPower) { // カブのとき(サブクラスでのオーバーライド) System.out.println("うんとこしょ,どっこいしょ"); - if (power <= receivedPower){ - System.out.println(name + "は抜けました.(条件:"+power+"以上,現在:"+receivedPower+")"); + if (power <= receivedPower) { + System.out.println(name + "は抜けました.(条件:" + power + "以上,現在:" + receivedPower + ")"); harvest = true; - }else{ - System.out.println("しかし" + name + "は抜けません.(条件:"+power+"以上,現在:"+receivedPower+")"); + } else { + System.out.println("しかし" + name + "は抜けません.(条件:" + power + "以上,現在:" + receivedPower + ")"); System.out.println(); } } } -class Turnip extends Vegetable{ - Turnip(){ +class Turnip extends Vegetable { + Turnip() { name = "カブ"; power = 100; - System.out.println("大きな"+ name + "ができました."); + System.out.println("大きな" + name + "ができました."); } -} - +}