updated class connections
This commit is contained in:
parent
a906a45583
commit
959ed28059
32
README.md
32
README.md
|
@ -45,31 +45,19 @@
|
||||||
|
|
||||||
## Output
|
## Output
|
||||||
```
|
```
|
||||||
Жители собираются в Домик Знайки чтобы рассказать истории
|
На этом знаменитое путешествие Знайка закончилось.
|
||||||
Все жители, и малыши и малышки, приходили по вечерам к Домик Знайки и слушали рассказы путешественников.
|
|
||||||
Жизнь в Цветочный город потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому.
|
Жизнь в Цветочный город потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому.
|
||||||
Жители собираются в Домик Знайки чтобы рассказать истории
|
С тех пор как наши отважные путешественники Знайка вернулись домой, в городе только и говорили о них.
|
||||||
Знайка умно рассказывает историю о путешествия Знайки особенно про путешествие в Зеленый город
|
Жители собираются в Дом Знайки чтобы рассказать истории
|
||||||
и думает: Немного я знаю о городах, но история о путешествия Знайки мне очень понравилась
|
Все жители слушают историю о путешествии в путешествие в Зеленый город в Цветочный город
|
||||||
|
Малыш слушает: Малыш слушает историю о путешествие в Зеленый город и спрашивает вопросы о путешествие в Зеленый город
|
||||||
|
Малышка слушает: Малышка слушает историю о путешествие в Зеленый город и спрашивает вопросы о путешествие в Зеленый город
|
||||||
|
Знайка рассказывает: Знайка умно рассказывает историю о путешествие в Зеленый город
|
||||||
|
и думает: Немного я знаю о городах, но история о путешествие в Зеленый город мне очень понравилась
|
||||||
|
|
||||||
Малыш слушает историю о путешествия Знайки и спрашивает вопросы о путешествие в Зеленый город
|
Истории захватывали дух, и каждый вечер собирались всё больше жителей, чтобы слушать новые приключения.
|
||||||
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
|
||||||
|
|
||||||
Малышка слушает историю о путешествия Знайки и спрашивает вопросы о путешествие в Зеленый город
|
|
||||||
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
|
||||||
|
|
||||||
Знайка умно рассказывает историю о путешествия Знайки особенно про жизнь в Цветочном городе
|
|
||||||
и думает: Немного я знаю о городах, но история о путешествия Знайки мне очень понравилась
|
|
||||||
|
|
||||||
Малыш слушает историю о путешествия Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
|
||||||
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
|
||||||
|
|
||||||
Малышка слушает историю о путешествия Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
|
||||||
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
|
||||||
|
|
||||||
Истории захватывали дух, и каждый вечер собирались всё больше жителей, чтобы слышать новые приключения.
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## UML Diagram
|
## UML Diagram
|
||||||
|
|
||||||
![UML Diagram](https://new.akarpov.ru/media/files/sanspie/aDoSa/bebebe.svg "https://new.akarpov.ru/files/nySsGIMRBJaERBoBWFuu")
|
![UML Diagram](https://new.akarpov.ru/media/files/sanspie/qLhQT/bebra.svg "https://new.akarpov.ru/files/rWZkihSbBcdbqCMhtfGB")
|
11
itmo-prog-lab-3.iml
Normal file
11
itmo-prog-lab-3.iml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
|
@ -1,31 +1,52 @@
|
||||||
import characters.Character;
|
import enums.AdventureType;
|
||||||
|
import enums.LifeType;
|
||||||
import model.*;
|
import model.*;
|
||||||
import characters.*;
|
import characters.*;
|
||||||
import story.StoryContext;
|
import story.Adventure;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
public class StoryTeller {
|
public class StoryTeller {
|
||||||
|
// На этом знаменитое путешествие Знайки и его товарищей окончилось.
|
||||||
|
// Жизнь в Цветочном городе потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому.
|
||||||
|
// С тех пор как наши отважные путешественники вернулись домой, в городе только и говорили о них.
|
||||||
|
// Все жители, и малыши и малышки, приходили по вечерам к домику Знайки и слушали рассказы путешественников об их жизни в Зеленом городе.
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// На этом знаменитое путешествие Знайки и его товарищей окончилось.
|
City city = new City("Цветочный город", LifeType.NOT_AS_USUAL);
|
||||||
// Жизнь в Цветочном городе потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому.
|
|
||||||
// С тех пор как наши отважные путешественники вернулись домой, в городе только и говорили о них.
|
|
||||||
// Все жители, и малыши и малышки, приходили по вечерам к домику Знайки и слушали рассказы путешественников об их жизни в Зеленом городе.
|
|
||||||
|
|
||||||
// Creating the setting for the story
|
// Create adventurers
|
||||||
City flowerCity = new City("Цветочный город");
|
Traveler znayka = new Znayka();
|
||||||
House znaykasHouse = new House("Домик Знайки");
|
znayka.addAdventure("Жизнь в Зеленом городе");
|
||||||
StoryContext context = new StoryContext(flowerCity, znaykasHouse, "путешествия Знайки");
|
znayka.returnHome();
|
||||||
|
|
||||||
// Creating the characters
|
city.addTraveler(znayka);
|
||||||
Character znayka = new Znayka();
|
|
||||||
Character malish = new Child("Малыш");
|
|
||||||
Character malishka = new Child("Малышка");
|
|
||||||
|
|
||||||
// Adding characters to Znayka's house
|
// Create house
|
||||||
znaykasHouse.addResident(znayka);
|
House znaykaHouse = new House("Дом Знайки", znayka, city);
|
||||||
znaykasHouse.addResident(malish);
|
|
||||||
znaykasHouse.addResident(malishka);
|
|
||||||
|
|
||||||
znaykasHouse.tellEveningStories(context);
|
// Add house to the city.
|
||||||
|
city.addHouse(znaykaHouse);
|
||||||
|
|
||||||
|
// Create children
|
||||||
|
Child child1 = new Child("Малыш");
|
||||||
|
Child child2 = new Child("Малышка");
|
||||||
|
|
||||||
|
// Add children to the city
|
||||||
|
city.addChild(child1);
|
||||||
|
city.addChild(child2);
|
||||||
|
|
||||||
|
City flowerCity = new City("Цветочный город", LifeType.NOT_AS_USUAL);
|
||||||
|
|
||||||
|
Adventure adventure = new Adventure("путешествие в Зеленый город", AdventureType.FAMOUS, List.of(znayka));
|
||||||
|
adventure.setLocation(flowerCity);
|
||||||
|
|
||||||
|
znayka.addAdventure(adventure);
|
||||||
|
adventure.end();
|
||||||
|
city.returnToDailyLife();
|
||||||
|
city.recognizeTravelers();
|
||||||
|
znaykaHouse.addResident(child1);
|
||||||
|
znaykaHouse.addResident(child2);
|
||||||
|
znaykaHouse.addResident(znayka);
|
||||||
|
znaykaHouse.tellEveningStories(adventure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,4 +41,9 @@ public abstract class Character extends StoryElement implements Listenable, Conv
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return name + " (" + type + ")";
|
return name + " (" + type + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ package characters;
|
||||||
|
|
||||||
import enums.CharacterType;
|
import enums.CharacterType;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class Child extends Character {
|
public class Child extends Character {
|
||||||
String thoughts = "";
|
String thoughts = "";
|
||||||
|
|
||||||
|
@ -23,17 +25,25 @@ public class Child extends Character {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String converse(String subject) {
|
public String converse(String subject) {
|
||||||
String response = this.name + " слушает историю о " + context.getStoryContext() + " и спрашивает вопросы о " + subject
|
String response = this.name + " слушает историю о " + context.getStoryContext() + " и спрашивает вопросы о " + subject;
|
||||||
+ "\n" + "и думает: " + this.thoughts;
|
|
||||||
this.thoughts = "";
|
this.thoughts = "";
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String listen(String subject) {
|
public String listen(String subject) {
|
||||||
String response = this.name + " слушает историю о " + context.getStoryContext() + " и спрашивает вопросы о " + subject
|
String response = this.name + " слушает историю о " + context.getStoryContext() + " и спрашивает вопросы о " + subject;
|
||||||
+ "\n" + "и думает: " + this.thoughts;
|
|
||||||
this.thoughts = "";
|
this.thoughts = "";
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void discussTravelers(List<Traveler> travelers){
|
||||||
|
System.out.println(this.name + " обсуждает путешественников: ");
|
||||||
|
|
||||||
|
for(Traveler t: travelers){
|
||||||
|
if(t.isHome()){
|
||||||
|
System.out.println(t.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,13 +1,19 @@
|
||||||
package characters;
|
package characters;
|
||||||
|
|
||||||
|
import enums.AdventureType;
|
||||||
import enums.CharacterType;
|
import enums.CharacterType;
|
||||||
|
import story.Adventure;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public abstract class Traveler extends Character {
|
public abstract class Traveler extends Character {
|
||||||
|
private boolean isHome;
|
||||||
|
private final List<Adventure> adventures;
|
||||||
|
|
||||||
public Traveler(String name) {
|
public Traveler(String name) {
|
||||||
super(CharacterType.TRAVELER, name);
|
super(CharacterType.TRAVELER, name);
|
||||||
|
this.adventures = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Traveler can tell stories about his adventures and listen to stories about the city, but dont ask questions
|
// Traveler can tell stories about his adventures and listen to stories about the city, but dont ask questions
|
||||||
|
@ -17,12 +23,33 @@ public abstract class Traveler extends Character {
|
||||||
return this.name + " рассказывает историю о " + context.getStoryContext() + "\n";
|
return this.name + " рассказывает историю о " + context.getStoryContext() + "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addAdventure(String adventureStory) {
|
||||||
|
Adventure newAdventure = new Adventure(adventureStory, AdventureType.FAMOUS, List.of(this));
|
||||||
|
this.adventures.add(newAdventure);
|
||||||
|
}
|
||||||
|
public void addAdventure(Adventure adventureStory) {
|
||||||
|
this.adventures.add(adventureStory);
|
||||||
|
}
|
||||||
|
public void addAdventure(String adventureStory, List<Traveler> travelers) {
|
||||||
|
travelers.add(this);
|
||||||
|
Adventure newAdventure = new Adventure(adventureStory, AdventureType.FAMOUS, travelers);
|
||||||
|
this.adventures.add(newAdventure);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Adventure> getAdventures() {
|
||||||
|
return this.adventures;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void returnHome() {
|
||||||
|
this.isHome = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isHome() {
|
||||||
|
return isHome;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String listen(String subject) {
|
public String listen(String subject) {
|
||||||
return this.name + " слушает историю о " + context.getStoryContext() + "\n";
|
return this.name + " слушает историю о " + context.getStoryContext() + "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> returnHomeAndTellAStory() {
|
|
||||||
return List.of("город", "путешествие");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,22 +9,25 @@ public class Znayka extends Traveler {
|
||||||
super("Знайка");
|
super("Знайка");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public String thinkAbout(String story) {
|
||||||
public void think(String story) {
|
|
||||||
if (story.contains("город")) {
|
if (story.contains("город")) {
|
||||||
this.thoughts += "Немного я знаю о городах, но история о " + context.getStoryContext() + " мне очень понравилась\n";
|
return "Немного я знаю о городах, но история о " + context.getStoryContext() + " мне очень понравилась\n";
|
||||||
} else if (story.contains("путешествие")) {
|
} else if (story.contains("путешествие")) {
|
||||||
this.thoughts += "Я люблю путешествовать, история о " + context.getStoryContext() + " мне очень понравилась\n";
|
return "Я люблю путешествовать, история о " + context.getStoryContext() + " мне очень понравилась\n";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.thoughts += "Интересная получается история о " + context.getStoryContext() + "\n";
|
return "Интересная получается история о " + context.getStoryContext() + "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void think(String story) {
|
||||||
|
this.thoughts += thinkAbout(story);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String converse(String subject) {
|
public String converse(String subject) {
|
||||||
String response = name + " умно рассказывает историю о " + subject
|
String response = name + " умно рассказывает историю о " + subject
|
||||||
+ "\n" + "и думает: " + this.thoughts;
|
+ "\n" + "и думает: " + thinkAbout(subject);
|
||||||
this.thoughts = "";
|
this.thoughts = "";
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
@ -36,9 +39,4 @@ public class Znayka extends Traveler {
|
||||||
this.thoughts = "";
|
this.thoughts = "";
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> returnHomeAndTellAStory() {
|
|
||||||
return List.of("Путешествие в Зеленый город", "Жизнь в Зеленом городе");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
6
src/enums/AdventureType.java
Normal file
6
src/enums/AdventureType.java
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
package enums;
|
||||||
|
|
||||||
|
public enum AdventureType {
|
||||||
|
FAMOUS, // Represents adventures that are famous
|
||||||
|
UNKNOWN // Represents adventures that are unknown
|
||||||
|
}
|
7
src/enums/LifeType.java
Normal file
7
src/enums/LifeType.java
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
package enums;
|
||||||
|
|
||||||
|
public enum LifeType {
|
||||||
|
NOT_AS_USUAL, // Represents life not as usual
|
||||||
|
AS_USUAL, // Represents life as usual
|
||||||
|
|
||||||
|
}
|
|
@ -1,21 +1,87 @@
|
||||||
package model;
|
package model;
|
||||||
|
|
||||||
import story.StoryElement;
|
import characters.Child;
|
||||||
|
import characters.Traveler;
|
||||||
|
import enums.LifeType;
|
||||||
|
import story.Adventure;
|
||||||
|
|
||||||
public class City extends StoryElement {
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class City extends Location {
|
||||||
private final String name;
|
private final String name;
|
||||||
|
private final LifeType lifeType;
|
||||||
|
private final List<Traveler> travelers;
|
||||||
|
private final List<Child> children;
|
||||||
|
private final List<House> houses;
|
||||||
|
|
||||||
public City(String name) {
|
|
||||||
super(name); // Assuming the super class StoryElement's constructor takes a name or description
|
public City(String name, LifeType lifeType) {
|
||||||
|
super(name);
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
this.lifeType = lifeType;
|
||||||
|
travelers = new ArrayList<>();
|
||||||
|
children = new ArrayList<>();
|
||||||
|
houses = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTraveler(Traveler traveler) {
|
||||||
|
travelers.add(traveler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeTraveler(Traveler traveler) {
|
||||||
|
travelers.remove(traveler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addChild(Child child) {
|
||||||
|
children.add(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addHouse(House house) {
|
||||||
|
houses.add(house);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void returnToDailyLifeWithChanges() {
|
public void returnToDailyLife() {
|
||||||
// Implementation of the method as before
|
if (this.lifeType == LifeType.NOT_AS_USUAL) {
|
||||||
System.out.println("Жизнь в " + this.getName() + " потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому.");
|
System.out.println("Жизнь в " + this.name + " потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому.");
|
||||||
|
} else {
|
||||||
|
System.out.println("Жизнь в " + this.name + " потекла по-старому.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> gatherStories() {
|
||||||
|
List<String> stories = new ArrayList<>();
|
||||||
|
for (Traveler t : travelers) {
|
||||||
|
if(t.isHome()) {
|
||||||
|
for (Adventure a : t.getAdventures()) {
|
||||||
|
String story = t.getName() + " рассказывает историю о " + a.getAdventurePlace();
|
||||||
|
System.out.println(story);
|
||||||
|
stories.add(story);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return stories;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void listenToStories(String ownerName, List<String> stories) {
|
||||||
|
for (House house : houses) {
|
||||||
|
if (house.getOwner().getName().equals(ownerName)) {
|
||||||
|
house.gatherChildren(children);
|
||||||
|
for(String story: stories){
|
||||||
|
System.out.println("Малышки слушают историю о " + story);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void recognizeTravelers() {
|
||||||
|
for (Traveler traveler : travelers) {
|
||||||
|
System.out.println("С тех пор как наши отважные путешественники " + traveler.getName() + " вернулись домой, в городе только и говорили о них.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,21 +2,29 @@ package model;
|
||||||
|
|
||||||
import characters.Character;
|
import characters.Character;
|
||||||
import characters.Traveler;
|
import characters.Traveler;
|
||||||
|
import story.Adventure;
|
||||||
import story.StoryContext;
|
import story.StoryContext;
|
||||||
import story.StoryElement;
|
import characters.Child;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class House extends StoryElement {
|
public class House extends Location {
|
||||||
|
|
||||||
private final String name;
|
private final String name;
|
||||||
private final List<Character> residents;
|
private final List<Character> residents;
|
||||||
|
private final Character owner;
|
||||||
|
private final City city;
|
||||||
|
public Character getOwner() {
|
||||||
|
return this.owner;
|
||||||
|
}
|
||||||
|
|
||||||
public House(String name) {
|
public House(String name, Character owner, City city) {
|
||||||
super(name);
|
super(name);
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.residents = new ArrayList<>();
|
this.residents = new ArrayList<>();
|
||||||
|
this.owner = owner;
|
||||||
|
this.city = city;
|
||||||
}
|
}
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return this.name;
|
return this.name;
|
||||||
|
@ -46,36 +54,34 @@ public class House extends StoryElement {
|
||||||
return travelers;
|
return travelers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void tellEveningStories(StoryContext context) {
|
public void tellEveningStories(Adventure adventure) {
|
||||||
context.gatherResidentsForStories();
|
List<Traveler> travelingResidents = this.getTravelers();
|
||||||
context.getCity().returnToDailyLifeWithChanges();
|
|
||||||
|
|
||||||
for (Character resident : this.getResidents()) {
|
if (!travelingResidents.isEmpty()) {
|
||||||
resident.setContext(context);
|
this.gatherResidents();
|
||||||
}
|
|
||||||
|
|
||||||
List<String> subjects = new ArrayList<>();
|
StoryContext context = adventure.getContext(city, this);
|
||||||
|
System.out.println("Все жители слушают историю о путешествии в " + adventure.getAdventureName() + " в " + adventure.getAdventurePlace());
|
||||||
this.gatherResidents();
|
|
||||||
for (Traveler resident : this.getTravelers()) {
|
|
||||||
subjects.addAll(resident.returnHomeAndTellAStory());
|
|
||||||
}
|
|
||||||
for (String subject: subjects) {
|
|
||||||
for (Character resident : this.getResidents()) {
|
for (Character resident : this.getResidents()) {
|
||||||
// if (resident instanceof Traveler) {
|
resident.setContext(context);
|
||||||
// event = resident.converse(context, subject);
|
if (resident instanceof Traveler) {
|
||||||
// } else {
|
String response = resident.converse(context.getStoryContext());
|
||||||
// event = resident.listen(context);
|
System.out.println(resident.getName() + " рассказывает: " + response);
|
||||||
// }
|
}
|
||||||
// now can just converse for everyone
|
else if (resident instanceof Child) {
|
||||||
|
String response = resident.listen(context.getStoryContext());
|
||||||
resident.think(subject);
|
System.out.println(resident.getName() + " слушает: " + response);
|
||||||
String response = resident.converse(subject);
|
}
|
||||||
System.out.println(response);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
System.out.println("Истории захватывали дух, и каждый вечер собирались всё больше жителей, чтобы слушать новые приключения.");
|
||||||
|
}
|
||||||
|
|
||||||
// The method could end with a closing statement or a setup for the next day's stories.
|
public void gatherChildren(List<Child> children) {
|
||||||
System.out.println("Истории захватывали дух, и каждый вечер собирались всё больше жителей, чтобы слышать новые приключения.");
|
List<String> childrenNames = new ArrayList<>();
|
||||||
|
for (Child child : children) {
|
||||||
|
childrenNames.add(child.getName());
|
||||||
|
}
|
||||||
|
System.out.println(String.join(",", childrenNames) + " собираются в доме " + owner.getName() + " чтобы послушать истории");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
16
src/model/Location.java
Normal file
16
src/model/Location.java
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
package model;
|
||||||
|
|
||||||
|
import story.StoryElement;
|
||||||
|
|
||||||
|
abstract public class Location extends StoryElement {
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
public Location(String name) {
|
||||||
|
super(name);
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
}
|
54
src/story/Adventure.java
Normal file
54
src/story/Adventure.java
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
package story;
|
||||||
|
|
||||||
|
import characters.Traveler;
|
||||||
|
import enums.AdventureType;
|
||||||
|
import model.City;
|
||||||
|
import model.House;
|
||||||
|
import model.Location;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class Adventure {
|
||||||
|
public String name;
|
||||||
|
private Location location;
|
||||||
|
private final AdventureType type;
|
||||||
|
private List<Traveler> travelers = new ArrayList<>();
|
||||||
|
|
||||||
|
public Adventure(String name, AdventureType type, List<Traveler> travelers) {
|
||||||
|
this.name = name;
|
||||||
|
this.type = type;
|
||||||
|
this.travelers = travelers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLocation(Location location) {
|
||||||
|
this.location = location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getLocation() {
|
||||||
|
return this.location;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void end() {
|
||||||
|
List<String> travelersNames = new ArrayList<>();
|
||||||
|
for (Traveler traveler : this.travelers) {
|
||||||
|
travelersNames.add(traveler.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.type == AdventureType.FAMOUS) {
|
||||||
|
System.out.println("На этом знаменитое путешествие " + String.join(", ", travelersNames) + " закончилось.");
|
||||||
|
} else {
|
||||||
|
System.out.println("На этом путешествие " + String.join(", ", travelersNames) + " закончилось.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAdventurePlace() {
|
||||||
|
return this.location.getName();
|
||||||
|
}
|
||||||
|
public String getAdventureName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
public StoryContext getContext(City city, House house){
|
||||||
|
return new StoryContext(city, house, this.getAdventureName());
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,6 +3,8 @@ package story;
|
||||||
import model.City;
|
import model.City;
|
||||||
import model.House;
|
import model.House;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class StoryContext {
|
public class StoryContext {
|
||||||
private final City city;
|
private final City city;
|
||||||
private final House house;
|
private final House house;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user