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
 | 
				
			||||||
 | 
					
 | 
				
			||||||

 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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