updated story processing for characters
This commit is contained in:
parent
5498cfa5a3
commit
99126cdd9a
30
README.md
30
README.md
|
@ -45,19 +45,31 @@
|
||||||
|
|
||||||
## Output
|
## Output
|
||||||
```
|
```
|
||||||
Жители Домик Знайки собираются чтобы рассказать истории
|
Жители собираются в Домик Знайки чтобы рассказать истории
|
||||||
Все жители, и малыши и малышки, приходили по вечерам к Домик Знайки и слушали рассказы путешественников.
|
Все жители, и малыши и малышки, приходили по вечерам к Домик Знайки и слушали рассказы путешественников.
|
||||||
Жизнь в Цветочный город потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому.
|
Жизнь в Цветочный город потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому.
|
||||||
Жители Домик Знайки собираются чтобы рассказать истории
|
Жители собираются в Домик Знайки чтобы рассказать истории
|
||||||
Знайка рассказывает историю о путешествие Знайки в Зеленый город
|
Знайка умно рассказывает историю о путешествия Знайки особенно про путешествие в Зеленый город
|
||||||
Малыш слушает историю о путешествие Знайки и спрашивает вопросы о путешествие Знайки в Зеленый город
|
и думает: Немного я знаю о городах, но история о путешествия Знайки мне очень понравилась
|
||||||
Малышка слушает историю о путешествие Знайки и спрашивает вопросы о путешествие Знайки в Зеленый город
|
|
||||||
Знайка рассказывает историю о жизнь в Цветочном городе
|
Малыш слушает историю о путешествия Знайки и спрашивает вопросы о путешествие в Зеленый город
|
||||||
Малыш слушает историю о путешествие Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
||||||
Малышка слушает историю о путешествие Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
|
||||||
|
Малышка слушает историю о путешествия Знайки и спрашивает вопросы о путешествие в Зеленый город
|
||||||
|
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
||||||
|
|
||||||
|
Знайка умно рассказывает историю о путешествия Знайки особенно про жизнь в Цветочном городе
|
||||||
|
и думает: Немного я знаю о городах, но история о путешествия Знайки мне очень понравилась
|
||||||
|
|
||||||
|
Малыш слушает историю о путешествия Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
||||||
|
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
||||||
|
|
||||||
|
Малышка слушает историю о путешествия Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
||||||
|
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
||||||
|
|
||||||
Истории захватывали дух, и каждый вечер собирались всё больше жителей, чтобы слышать новые приключения.
|
Истории захватывали дух, и каждый вечер собирались всё больше жителей, чтобы слышать новые приключения.
|
||||||
```
|
```
|
||||||
|
|
||||||
## UML Diagram
|
## UML Diagram
|
||||||
|
|
||||||
![UML Diagram](https://new.akarpov.ru/media/files/sanspie/tFfur/diagram.svg "https://new.akarpov.ru/files/PRaEOtISfNJAvOZYJbiO")
|
![UML Diagram](https://new.akarpov.ru/media/files/sanspie/xNdHx/123123123.svg "https://new.akarpov.ru/files/HaDSrkLmjVfoPTmXvQaw")
|
|
@ -3,11 +3,15 @@ package characters;
|
||||||
import enums.CharacterType;
|
import enums.CharacterType;
|
||||||
import interfaces.Conversable;
|
import interfaces.Conversable;
|
||||||
import interfaces.Listenable;
|
import interfaces.Listenable;
|
||||||
|
import story.StoryContext;
|
||||||
import story.StoryElement;
|
import story.StoryElement;
|
||||||
|
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public abstract class Character extends StoryElement implements Listenable, Conversable {
|
public abstract class Character extends StoryElement implements Listenable, Conversable {
|
||||||
protected CharacterType type;
|
protected CharacterType type;
|
||||||
protected String name;
|
protected String name;
|
||||||
|
protected StoryContext context;
|
||||||
|
|
||||||
public Character(CharacterType type, String name) {
|
public Character(CharacterType type, String name) {
|
||||||
super(type + " " + name);
|
super(type + " " + name);
|
||||||
|
@ -15,16 +19,26 @@ public abstract class Character extends StoryElement implements Listenable, Conv
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean equals(Character character) {
|
public void setContext(StoryContext context) {
|
||||||
return this.name.equals(character.name) && this.type.equals(character.type);
|
this.context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj) return true;
|
||||||
|
if (obj == null || getClass() != obj.getClass()) return false;
|
||||||
|
Character other = (Character) obj;
|
||||||
|
return Objects.equals(name, other.name) && type == other.type;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(name, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return name + " (" + type + ")";
|
return name + " (" + type + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
public int hashCode() {
|
|
||||||
// seems legit to me
|
|
||||||
return name.hashCode() * type.hashCode();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
package characters;
|
package characters;
|
||||||
|
|
||||||
import enums.CharacterType;
|
import enums.CharacterType;
|
||||||
import story.StoryContext;
|
|
||||||
|
|
||||||
public class Child extends Character {
|
public class Child extends Character {
|
||||||
|
String thoughts = "";
|
||||||
|
|
||||||
public Child(String name) {
|
public Child(String name) {
|
||||||
super(CharacterType.CHILD, name);
|
super(CharacterType.CHILD, name);
|
||||||
|
@ -11,21 +11,29 @@ public class Child extends Character {
|
||||||
|
|
||||||
// Child can listen to stories about the city and ask questions about the subject of the story
|
// Child can listen to stories about the city and ask questions about the subject of the story
|
||||||
|
|
||||||
public String listenAbout(String context) {
|
public void think(String story) {
|
||||||
return name + " слушает историю о " + context;
|
if (story.contains("город")) {
|
||||||
|
this.thoughts += "Я никогда не был в городе, но история о " + context.getStoryContext() + " мне очень понравилась\n";
|
||||||
|
} else if (story.contains("путешествие")) {
|
||||||
|
this.thoughts += "Не люблю я путешествовать, но история о " + context.getStoryContext() + " мне очень понравилась\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.thoughts += "Интересная получается история о " + context.getStoryContext() + "\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String listenAbout(String context, String subject) {
|
public String converse(String subject) {
|
||||||
return name + " слушает историю о " + context + " и спрашивает вопросы о " + subject;
|
String response = this.name + " слушает историю о " + context.getStoryContext() + " и спрашивает вопросы о " + subject
|
||||||
|
+ "\n" + "и думает: " + this.thoughts;
|
||||||
|
this.thoughts = "";
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String converse(StoryContext context, String subject) {
|
public String listen(String subject) {
|
||||||
return listenAbout(context.getStoryContext(), subject);
|
String response = this.name + " слушает историю о " + context.getStoryContext() + " и спрашивает вопросы о " + subject
|
||||||
}
|
+ "\n" + "и думает: " + this.thoughts;
|
||||||
|
this.thoughts = "";
|
||||||
@Override
|
return response;
|
||||||
public String listen(StoryContext context) {
|
|
||||||
return listenAbout(context.getStoryContext());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
package characters;
|
package characters;
|
||||||
|
|
||||||
import enums.CharacterType;
|
import enums.CharacterType;
|
||||||
import story.StoryContext;
|
|
||||||
|
|
||||||
public abstract class Traveler extends Character {
|
public abstract class Traveler extends Character {
|
||||||
|
|
||||||
|
@ -12,12 +11,12 @@ public abstract class Traveler extends Character {
|
||||||
// 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
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String listen(StoryContext context) {
|
public String converse(String subject) {
|
||||||
return name + " слушает историю о " + context.getStoryContext();
|
return this.name + " рассказывает историю о " + context.getStoryContext() + "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String converse(StoryContext context, String subject) {
|
public String listen(String subject) {
|
||||||
return name + " рассказывает историю о " + subject;
|
return this.name + " слушает историю о " + context.getStoryContext() + "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,21 +1,37 @@
|
||||||
package characters;
|
package characters;
|
||||||
|
|
||||||
import interfaces.Conversable;
|
public class Znayka extends Traveler {
|
||||||
import interfaces.Listenable;
|
String thoughts = "";
|
||||||
import story.StoryContext;
|
|
||||||
|
|
||||||
public class Znayka extends Traveler implements Listenable, Conversable {
|
|
||||||
|
|
||||||
public Znayka() {
|
public Znayka() {
|
||||||
super("Знайка");
|
super("Знайка");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String listen(StoryContext context) {
|
public void think(String story) {
|
||||||
return name + " умно слушает историю о " + context.getStoryContext();
|
if (story.contains("город")) {
|
||||||
|
this.thoughts += "Немного я знаю о городах, но история о " + context.getStoryContext() + " мне очень понравилась\n";
|
||||||
|
} else if (story.contains("путешествие")) {
|
||||||
|
this.thoughts += "Я люблю путешествовать, история о " + context.getStoryContext() + " мне очень понравилась\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.thoughts += "Интересная получается история о " + context.getStoryContext() + "\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String converse(StoryContext context, String subject) {
|
public String converse(String subject) {
|
||||||
return name + " умно рассказывает историю о " + subject;
|
String response = name + " умно рассказывает историю о " + context.getStoryContext() + " особенно про " + subject
|
||||||
|
+ "\n" + "и думает: " + this.thoughts;
|
||||||
|
this.thoughts = "";
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String listen(String subject) {
|
||||||
|
String response = name + " умно слушает историю о " + context.getStoryContext() + " особенно про " + subject
|
||||||
|
+ "\n" + "и думает: " + this.thoughts;
|
||||||
|
this.thoughts = "";
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
package interfaces;
|
package interfaces;
|
||||||
|
|
||||||
import story.StoryContext;
|
|
||||||
|
|
||||||
public interface Conversable {
|
public interface Conversable {
|
||||||
String converse(StoryContext context, String subject);
|
String converse(String subject);
|
||||||
|
|
||||||
|
void think(String story);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
package interfaces;
|
|
||||||
|
|
||||||
import story.StoryContext;
|
|
||||||
|
|
||||||
public interface Interactable {
|
|
||||||
void interact(StoryContext context);
|
|
||||||
}
|
|
|
@ -1,7 +1,6 @@
|
||||||
package interfaces;
|
package interfaces;
|
||||||
|
|
||||||
import story.StoryContext;
|
|
||||||
|
|
||||||
public interface Listenable {
|
public interface Listenable {
|
||||||
String listen(StoryContext context);
|
String listen(String subject);
|
||||||
}
|
}
|
|
@ -39,18 +39,23 @@ public class House extends StoryElement {
|
||||||
context.gatherResidentsForStories();
|
context.gatherResidentsForStories();
|
||||||
context.getCity().returnToDailyLifeWithChanges();
|
context.getCity().returnToDailyLifeWithChanges();
|
||||||
|
|
||||||
|
for (Character resident : this.getResidents()) {
|
||||||
|
resident.setContext(context);
|
||||||
|
}
|
||||||
|
|
||||||
this.gatherResidents();
|
this.gatherResidents();
|
||||||
for (String subject: subjects) {
|
for (String subject: subjects) {
|
||||||
for (Character resident : this.getResidents()) {
|
for (Character resident : this.getResidents()) {
|
||||||
String event;
|
|
||||||
// if (resident instanceof Traveler) {
|
// if (resident instanceof Traveler) {
|
||||||
// event = resident.converse(context, subject);
|
// event = resident.converse(context, subject);
|
||||||
// } else {
|
// } else {
|
||||||
// event = resident.listen(context);
|
// event = resident.listen(context);
|
||||||
// }
|
// }
|
||||||
// now can just converse for everyone
|
// now can just converse for everyone
|
||||||
event = resident.converse(context, subject);
|
|
||||||
System.out.println(event);
|
resident.think(subject);
|
||||||
|
String response = resident.converse(subject);
|
||||||
|
System.out.println(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user