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
|
||||
```
|
||||
Жители Домик Знайки собираются чтобы рассказать истории
|
||||
Жители собираются в Домик Знайки чтобы рассказать истории
|
||||
Все жители, и малыши и малышки, приходили по вечерам к Домик Знайки и слушали рассказы путешественников.
|
||||
Жизнь в Цветочный город потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому.
|
||||
Жители Домик Знайки собираются чтобы рассказать истории
|
||||
Знайка рассказывает историю о путешествие Знайки в Зеленый город
|
||||
Малыш слушает историю о путешествие Знайки и спрашивает вопросы о путешествие Знайки в Зеленый город
|
||||
Малышка слушает историю о путешествие Знайки и спрашивает вопросы о путешествие Знайки в Зеленый город
|
||||
Знайка рассказывает историю о жизнь в Цветочном городе
|
||||
Малыш слушает историю о путешествие Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
||||
Малышка слушает историю о путешествие Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
||||
Жители собираются в Домик Знайки чтобы рассказать истории
|
||||
Знайка умно рассказывает историю о путешествия Знайки особенно про путешествие в Зеленый город
|
||||
и думает: Немного я знаю о городах, но история о путешествия Знайки мне очень понравилась
|
||||
|
||||
Малыш слушает историю о путешествия Знайки и спрашивает вопросы о путешествие в Зеленый город
|
||||
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
||||
|
||||
Малышка слушает историю о путешествия Знайки и спрашивает вопросы о путешествие в Зеленый город
|
||||
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
||||
|
||||
Знайка умно рассказывает историю о путешествия Знайки особенно про жизнь в Цветочном городе
|
||||
и думает: Немного я знаю о городах, но история о путешествия Знайки мне очень понравилась
|
||||
|
||||
Малыш слушает историю о путешествия Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
||||
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
||||
|
||||
Малышка слушает историю о путешествия Знайки и спрашивает вопросы о жизнь в Цветочном городе
|
||||
и думает: Я никогда не был в городе, но история о путешествия Знайки мне очень понравилась
|
||||
|
||||
Истории захватывали дух, и каждый вечер собирались всё больше жителей, чтобы слышать новые приключения.
|
||||
```
|
||||
|
||||
## 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 interfaces.Conversable;
|
||||
import interfaces.Listenable;
|
||||
import story.StoryContext;
|
||||
import story.StoryElement;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public abstract class Character extends StoryElement implements Listenable, Conversable {
|
||||
protected CharacterType type;
|
||||
protected String name;
|
||||
protected StoryContext context;
|
||||
|
||||
public Character(CharacterType type, String name) {
|
||||
super(type + " " + name);
|
||||
|
@ -15,16 +19,26 @@ public abstract class Character extends StoryElement implements Listenable, Conv
|
|||
this.name = name;
|
||||
}
|
||||
|
||||
public boolean equals(Character character) {
|
||||
return this.name.equals(character.name) && this.type.equals(character.type);
|
||||
public void setContext(StoryContext context) {
|
||||
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() {
|
||||
return name + " (" + type + ")";
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
// seems legit to me
|
||||
return name.hashCode() * type.hashCode();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package characters;
|
||||
|
||||
import enums.CharacterType;
|
||||
import story.StoryContext;
|
||||
|
||||
public class Child extends Character {
|
||||
String thoughts = "";
|
||||
|
||||
public Child(String 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
|
||||
|
||||
public String listenAbout(String context) {
|
||||
return name + " слушает историю о " + context;
|
||||
public void think(String story) {
|
||||
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) {
|
||||
return name + " слушает историю о " + context + " и спрашивает вопросы о " + subject;
|
||||
public String converse(String subject) {
|
||||
String response = this.name + " слушает историю о " + context.getStoryContext() + " и спрашивает вопросы о " + subject
|
||||
+ "\n" + "и думает: " + this.thoughts;
|
||||
this.thoughts = "";
|
||||
return response;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String converse(StoryContext context, String subject) {
|
||||
return listenAbout(context.getStoryContext(), subject);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String listen(StoryContext context) {
|
||||
return listenAbout(context.getStoryContext());
|
||||
public String listen(String subject) {
|
||||
String response = this.name + " слушает историю о " + context.getStoryContext() + " и спрашивает вопросы о " + subject
|
||||
+ "\n" + "и думает: " + this.thoughts;
|
||||
this.thoughts = "";
|
||||
return response;
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
package characters;
|
||||
|
||||
import enums.CharacterType;
|
||||
import story.StoryContext;
|
||||
|
||||
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
|
||||
|
||||
@Override
|
||||
public String listen(StoryContext context) {
|
||||
return name + " слушает историю о " + context.getStoryContext();
|
||||
public String converse(String subject) {
|
||||
return this.name + " рассказывает историю о " + context.getStoryContext() + "\n";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String converse(StoryContext context, String subject) {
|
||||
return name + " рассказывает историю о " + subject;
|
||||
public String listen(String subject) {
|
||||
return this.name + " слушает историю о " + context.getStoryContext() + "\n";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,21 +1,37 @@
|
|||
package characters;
|
||||
|
||||
import interfaces.Conversable;
|
||||
import interfaces.Listenable;
|
||||
import story.StoryContext;
|
||||
|
||||
public class Znayka extends Traveler implements Listenable, Conversable {
|
||||
public class Znayka extends Traveler {
|
||||
String thoughts = "";
|
||||
|
||||
public Znayka() {
|
||||
super("Знайка");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String listen(StoryContext context) {
|
||||
return name + " умно слушает историю о " + context.getStoryContext();
|
||||
public void think(String story) {
|
||||
if (story.contains("город")) {
|
||||
this.thoughts += "Немного я знаю о городах, но история о " + context.getStoryContext() + " мне очень понравилась\n";
|
||||
} else if (story.contains("путешествие")) {
|
||||
this.thoughts += "Я люблю путешествовать, история о " + context.getStoryContext() + " мне очень понравилась\n";
|
||||
}
|
||||
else {
|
||||
this.thoughts += "Интересная получается история о " + context.getStoryContext() + "\n";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String converse(StoryContext context, String subject) {
|
||||
return name + " умно рассказывает историю о " + subject;
|
||||
public String converse(String 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;
|
||||
|
||||
import story.StoryContext;
|
||||
|
||||
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;
|
||||
|
||||
import story.StoryContext;
|
||||
|
||||
public interface Listenable {
|
||||
String listen(StoryContext context);
|
||||
String listen(String subject);
|
||||
}
|
|
@ -39,18 +39,23 @@ public class House extends StoryElement {
|
|||
context.gatherResidentsForStories();
|
||||
context.getCity().returnToDailyLifeWithChanges();
|
||||
|
||||
for (Character resident : this.getResidents()) {
|
||||
resident.setContext(context);
|
||||
}
|
||||
|
||||
this.gatherResidents();
|
||||
for (String subject: subjects) {
|
||||
for (Character resident : this.getResidents()) {
|
||||
String event;
|
||||
// if (resident instanceof Traveler) {
|
||||
// event = resident.converse(context, subject);
|
||||
// } else {
|
||||
// event = resident.listen(context);
|
||||
// }
|
||||
// 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