Newer
Older
Onitaizi / src / Kaguyahime / Kaguyahime_story.java
@Motoki Miura Motoki Miura on 13 Feb 2022 6 KB stories
package Kaguyahime;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

abstract class Person{

    public String name;
    public String sex;
    public Location address;

    public String getName() {
        return name;
    }

    public String getAddress () {
        return address.getAddress();
    }

    public String getSex() {
        return sex;
    }
    public void Move(Location address){
        this.address=address;
        System.out.println(this.getName()+"は、"+this.getAddress()+"に移動しました");
    }
}

class Kaguyahime extends Person{

    private static Kaguyahime kaguyahime = new Kaguyahime();

    public static Kaguyahime getInstance() {
        return kaguyahime;
    }
    private Kaguyahime() {
    }

    private String name="かぐや姫";
    private String sex="women";
    private Location address ;

    public String getName() {
        return name;
    }

    public String getAddress () {
        return address.getAddress();
    }

    public String getSex() {
        return sex;
    }

    public void Move(Location address){
        this.address=address;
        System.out.println(this.getName()+"は、"+this.getAddress()+"に移動しました");
    }
}

class Ojiisan extends Person{

    private static Ojiisan ojiisan = new Ojiisan();

    public static Ojiisan getInstance() {
        return ojiisan;
    }
    private Ojiisan() {
    }

    private String name="おじいさん";
    private String sex="men";
    private Location address;

    public String getName() {
        return name;
    }

    public String getAddress () {
        return address.getAddress();
    }

    public String getSex() {
        return sex;
    }

    public void Move(Location address){
        this.address=address;
        System.out.println(this.getName()+"は、"+this.getAddress()+"に移動しました");
    }


    void sibakari(Location location){
        this.address=location;
        System.out.println(this.getName()+"は、"+this.getAddress()+"へ芝刈りへ行きました");
    }

    public void Find_take(){
        System.out.println(this.getName()+"は、"+this.getAddress()+"で光る竹を見つけました");
    }

    public Person take_cut(){
        System.out.println("ふしぎに思って切ってみると、そのなかには、ちいさくてかわいい女の子がはいっていました。");
        return Kaguyahime.getInstance();
    }
}

class Mob extends Person{

    public String name;
    public String sex;
    public Location address;
    public Quest quest;

    public Mob(String name,String sex, Location location){
        this.name=name;
        this.sex=sex;
        this.address=location;
        System.out.println(this.getName()+this.sex+"は、"+this.getAddress()+"に生成されました");
    }

    public String getName() {
        return name;
    }

    public String getAddress () {
        return address.getAddress();
    }

    public String getSex() {
        return sex;
    }
    public Quest getQuest() {
        return quest;
    }

    public void Move(Location address){
        this.address=address;
        System.out.println(this.getName()+"は、"+this.getAddress()+"に移動しました");
    }

    public void AddQuest(Quest quest){
        this.quest=quest;
    }
}

class Location{
    public String address;

    public Location(String address){
        this.address=address;
    }

    public String getAddress () {
        return address;
    }

    void set_name(String add){
        this.address=add;
    }
}

class Quest{
    Person character;
    Person requester;
    String target;
    Location destination;
    public Quest(Person character,Person requester,String target,Location destination){
        this.character = character;
        this.requester = requester;
        this.target = target;
        this.destination = destination;
    }

    public boolean try_quest(){
        System.out.println(this.character.getName()+"は、"+this.requester.getName()+"からの依頼に挑戦しました。ターゲットは"+this.destination.getAddress()+"の"+this.target+"です");
        return false;
    }
}

public class Kaguyahime_story {
    public static void main(String[] args) {
            System.out.println("Kaguyahime_start");

            Location near_miyako=new Location("都の近く");
            Ojiisan ojiisan =Ojiisan.getInstance();
            Location yama=new Location("山");
            ojiisan.sibakari(yama);
            ojiisan.Find_take();
            Person kaguyahime = ojiisan.take_cut();

            kaguyahime.Move(near_miyako);
            ojiisan.Move(near_miyako);

            List<String> Males_name = new ArrayList<>(Arrays.asList("石作皇子", "庫持皇子", "右大臣阿部御主人","大納言大友御行","中納言石上麿呂足"));
            List<Mob> Males = new ArrayList<>();
            Location miyako=new Location("都");
            System.out.println("・・・・・・・・・・・・");
            for (int i =0 ;i<=4;i++){
                Males.add(new Mob(Males_name.get(i), "男", miyako));
            }

            System.out.println("・・・・・・・・・・・・");
            for (int i =0 ;i<=4;i++){
                Males.get(i).Move(near_miyako);
            }

            List<String> Items = new ArrayList<>(Arrays.asList("仏の御石の鉢", "根は白金、茎は黄金、白い珠の実の付く枝", "火ねずみの皮衣","龍の首の五色の珠","燕の子安貝"));
            List<Location> Destination = new ArrayList<>(Arrays.asList(new Location("天竺行") , new Location("蓬莱山"), new Location("唐土,インド"),new Location("不明"),new Location("不明")));

            for(int i=0;i<=4;i++){
               Males.get(i).AddQuest( new Quest(Males.get(i),kaguyahime,Items.get(i),Destination.get(i)) );
            }
            boolean result;
            List<Person> engagement = new ArrayList<>();
            for(int i=0;i<=4;i++){
                result = Males.get(i).quest.try_quest();
                if (result==false){
                    System.out.println("クエストは失敗しました");
                }
                else{
                    System.out.println("クエストは成功しました");
                    engagement.add(Males.get(i));
                }
            }

            System.out.println("クエストを達成した人は、"+engagement.size()+"でした");

            if (engagement.size() ==0){
                Location thuki=new Location("月");
                kaguyahime.Move(thuki);
            }
            else{
                System.out.println(kaguyahime.getName()+"と"+engagement.get(0)+"は結婚しました");
            }
            System.out.println("おしまい");
    }
}