updated code for story telling to work
This commit is contained in:
		
							parent
							
								
									48ad83ea5a
								
							
						
					
					
						commit
						249021b63f
					
				|  | @ -1,21 +1,31 @@ | ||||||
| import characters.Character; | import characters.Character; | ||||||
| import model.*; | import model.*; | ||||||
| import characters.*; | import characters.*; | ||||||
|  | import story.StoryContext; | ||||||
|  | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
| 
 | 
 | ||||||
| public class StoryTeller { | public class StoryTeller { | ||||||
|     public static void main(String[] args) { |     public static void main(String[] args) { | ||||||
|  |         // Creating the setting for the story | ||||||
|         City flowerCity = new City("Цветочный город"); |         City flowerCity = new City("Цветочный город"); | ||||||
|         House znaykasHouse = new House("Домик Знайки"); |         House znaykasHouse = new House("Домик Знайки"); | ||||||
|         StoryContext context = new StoryContext(flowerCity, znaykasHouse); |         StoryContext context = new StoryContext(flowerCity, znaykasHouse); | ||||||
| 
 | 
 | ||||||
|         Character znayka = new Znayka("описание"); |         // Creating the characters | ||||||
|  |         Character znayka = new Znayka("Знайка"); | ||||||
|         Character malish = new Child("Малыш", "Малыш"); |         Character malish = new Child("Малыш", "Малыш"); | ||||||
|         Character malishka = new Child("Малышка","Малышка"); |         Character malishka = new Child("Малышка", "Малышка"); | ||||||
| 
 | 
 | ||||||
|  |         // Adding characters to Znayka's house | ||||||
|         znaykasHouse.addResident(znayka); |         znaykasHouse.addResident(znayka); | ||||||
|         znaykasHouse.addResident(malish); |         znaykasHouse.addResident(malish); | ||||||
|         znaykasHouse.addResident(malishka); |         znaykasHouse.addResident(malishka); | ||||||
| 
 | 
 | ||||||
|         znaykasHouse.tellEveningStories(context); |         List<String> stories = new ArrayList<>(); | ||||||
|  |         stories.add("о жизни в Зеленом городе"); | ||||||
|  | 
 | ||||||
|  |         znaykasHouse.tellEveningStories(context, stories); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ package characters; | ||||||
| import enums.CharacterType; | import enums.CharacterType; | ||||||
| import interfaces.Interactable; | import interfaces.Interactable; | ||||||
| import interfaces.Listenable; | import interfaces.Listenable; | ||||||
| import model.StoryContext; | import story.StoryContext; | ||||||
| import model.StoryElement; | import model.StoryElement; | ||||||
| 
 | 
 | ||||||
| public abstract class Character extends StoryElement implements Interactable, Listenable { | public abstract class Character extends StoryElement implements Interactable, Listenable { | ||||||
|  | @ -16,13 +16,30 @@ public abstract class Character extends StoryElement implements Interactable, Li | ||||||
|         this.name = name; |         this.name = name; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     // Method where characters can reminisce about past events | ||||||
|  |     public abstract void reminisce(String memory); | ||||||
|  | 
 | ||||||
|  |     // Method for characters to react to stories being told | ||||||
|  |     public abstract void reactToStory(); | ||||||
|  | 
 | ||||||
|  |     // Method for telling a story about a specific place or event | ||||||
|  |     public abstract void tellStoryOf(String place); | ||||||
|  | 
 | ||||||
|  |     // Method for characters, especially children, to ask questions about the story | ||||||
|  |     public abstract void askQuestionsAbout(String subject); | ||||||
|  | 
 | ||||||
|     public abstract void listen(); |     public abstract void listen(); | ||||||
| 
 | 
 | ||||||
|     public abstract void tell(); |     public abstract void tell(); | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  |     public abstract void converse(StoryContext context, String subject); | ||||||
|  | 
 | ||||||
|  |     // Interaction method for general purposes | ||||||
|     @Override |     @Override | ||||||
|     public abstract void interact(StoryContext context); |     public abstract void interact(StoryContext context); | ||||||
| 
 | 
 | ||||||
|  |     // Listening method within a story context | ||||||
|     @Override |     @Override | ||||||
|     public abstract void listen(StoryContext context); |     public abstract void listen(StoryContext context); | ||||||
| } | } | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| package characters; | package characters; | ||||||
| 
 | 
 | ||||||
| import enums.CharacterType; | import enums.CharacterType; | ||||||
| import model.StoryContext; | import story.StoryContext; | ||||||
| 
 | 
 | ||||||
| public class Child extends Character { | public class Child extends Character { | ||||||
| 
 | 
 | ||||||
|  | @ -9,9 +9,29 @@ public class Child extends Character { | ||||||
|         super(description, CharacterType.CHILD, name); |         super(description, CharacterType.CHILD, name); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @Override | ||||||
|  |     public void reminisce(String memory) { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void reactToStory() { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void tellStoryOf(String place) { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void askQuestionsAbout(String subject) { | ||||||
|  |         System.out.println(name + " спрашивает вопросы о " + subject); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void listen() { |     public void listen() { | ||||||
|         System.out.println(name + " listens to the story with wide-eyed wonder."); |         System.out.println(name + " слушает с удивлением"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|  | @ -23,7 +43,12 @@ public class Child extends Character { | ||||||
|     @Override |     @Override | ||||||
|     public void interact(StoryContext context) { |     public void interact(StoryContext context) { | ||||||
|         // Child-specific interactions |         // Child-specific interactions | ||||||
|         System.out.println(name + " shares their impressions about the story."); |         System.out.println(name + " говорят свое мнение об истории."); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void converse(StoryContext context, String subject) { | ||||||
|  |         askQuestionsAbout(subject); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| package characters; | package characters; | ||||||
| 
 | 
 | ||||||
| import enums.CharacterType; | import enums.CharacterType; | ||||||
| import model.StoryContext; | import story.StoryContext; | ||||||
| 
 | 
 | ||||||
| public class Traveler extends Character { | public class Traveler extends Character { | ||||||
| 
 | 
 | ||||||
|  | @ -9,6 +9,26 @@ public class Traveler extends Character { | ||||||
|         super(description, CharacterType.TRAVELER, name); |         super(description, CharacterType.TRAVELER, name); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @Override | ||||||
|  |     public void reminisce(String memory) { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void reactToStory() { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void tellStoryOf(String place) { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public void askQuestionsAbout(String subject) { | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void listen() { |     public void listen() { | ||||||
| 
 | 
 | ||||||
|  | @ -19,6 +39,11 @@ public class Traveler extends Character { | ||||||
|         // Logic for telling a story |         // Logic for telling a story | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @Override | ||||||
|  |     public void converse(StoryContext context, String subject) { | ||||||
|  |         tellStoryOf(subject); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void interact(StoryContext context) { |     public void interact(StoryContext context) { | ||||||
|         System.out.println(name + " рассказывает историю о Зеленом городе."); |         System.out.println(name + " рассказывает историю о Зеленом городе."); | ||||||
|  |  | ||||||
|  | @ -1,20 +1,15 @@ | ||||||
| package characters; | package characters; | ||||||
| 
 | 
 | ||||||
| import enums.CharacterType; |  | ||||||
| import interfaces.Listener; | import interfaces.Listener; | ||||||
| import model.StoryContext; |  | ||||||
| 
 | 
 | ||||||
| public class Znayka extends Traveler implements Listener { | public class Znayka extends Traveler implements Listener { | ||||||
|     private String name; |  | ||||||
| 
 | 
 | ||||||
|     public Znayka(String description) { |     public Znayka(String description) { | ||||||
|         super(description, "Знайка"); |         super(description, "Знайка"); | ||||||
|         this.name = name; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     public void tellStoryOf(String about) { | ||||||
|     public void tell() { |         System.out.println("Знайка рассказывает истории " + about); | ||||||
|         System.out.println(name + " рассказывает истории о жизни в Зеленом городе."); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| package enums; | package enums; | ||||||
| 
 | 
 | ||||||
| public enum CharacterType { | public enum CharacterType { | ||||||
|     TRAVELER, CHILD |     TRAVELER, // Represents characters who are travelers | ||||||
|  |     CHILD // Represents child characters | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| package interfaces; | package interfaces; | ||||||
| 
 | 
 | ||||||
| import model.StoryContext; | import story.StoryContext; | ||||||
| 
 | 
 | ||||||
| public interface Interactable { | public interface Interactable { | ||||||
|     void interact(StoryContext context); |     void interact(StoryContext context); | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| package interfaces; | package interfaces; | ||||||
| 
 | 
 | ||||||
| import model.StoryContext; | import story.StoryContext; | ||||||
| 
 | 
 | ||||||
| public interface Listenable { | public interface Listenable { | ||||||
|     void listen(StoryContext context); |     void listen(StoryContext context); | ||||||
|  |  | ||||||
|  | @ -1,8 +1,19 @@ | ||||||
| package model; | package model; | ||||||
| 
 | 
 | ||||||
| public class City extends StoryElement { | public class City extends StoryElement { | ||||||
|  |     private final String name; | ||||||
| 
 | 
 | ||||||
|     public City(String description) { |     public City(String name) { | ||||||
|         super(description); |         super(name); // Assuming the super class StoryElement's constructor takes a name or description | ||||||
|  |         this.name = name; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public String getName() { | ||||||
|  |         return this.name; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void returnToDailyLifeWithChanges() { | ||||||
|  |         // Implementation of the method as before | ||||||
|  |         System.out.println("Жизнь в " + this.getName() + " потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому."); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -1,28 +1,57 @@ | ||||||
| package model; | package model; | ||||||
| 
 | 
 | ||||||
| import characters.Character; | import characters.Character; | ||||||
| import interfaces.Listenable; | import characters.Traveler; | ||||||
|  | import story.StoryContext; | ||||||
|  | 
 | ||||||
| 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 StoryElement { | ||||||
| 
 | 
 | ||||||
|     private List<Character> residents; |     private final String name; | ||||||
|  |     private final List<Character> residents; | ||||||
| 
 | 
 | ||||||
|     public House(String description) { |     public House(String name) { | ||||||
|         super(description); |         super(name); // Assuming the super class StoryElement's constructor takes a name or description | ||||||
|  |         this.name = name; | ||||||
|         this.residents = new ArrayList<>(); |         this.residents = new ArrayList<>(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public String getName() { | ||||||
|  |         return this.name; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     public void addResident(Character character) { |     public void addResident(Character character) { | ||||||
|         this.residents.add(character); |         this.residents.add(character); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void tellEveningStories(StoryContext context) { |     // Method to gather all the residents of the house | ||||||
|         for (Character resident : residents) { |     public void gatherResidents() { | ||||||
|             if (resident != null) { |         System.out.println("Жители " + this.getDescription() + " собираются чтобы рассказать истории"); | ||||||
|                 ((Listenable) resident).listen(context); |     } | ||||||
|  | 
 | ||||||
|  |     // Method to retrieve the list of residents | ||||||
|  |     public List<Character> getResidents() { | ||||||
|  |         return residents; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void tellEveningStories(StoryContext context, List<String> subjects) { | ||||||
|  |         context.gatherResidentsForStories(); | ||||||
|  |         context.getCity().returnToDailyLifeWithChanges(); | ||||||
|  | 
 | ||||||
|  |         this.gatherResidents(); | ||||||
|  |         for (String subject: subjects) { | ||||||
|  |             for (Character resident : this.getResidents()) { | ||||||
|  |                 if (resident instanceof Traveler) { | ||||||
|  |                     resident.converse(context, subject); | ||||||
|  |                 } else { | ||||||
|  |                     resident.converse(context, subject); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         // The method could end with a closing statement or a setup for the next day's stories. | ||||||
|  |         System.out.println("Истории захватывали дух, и каждый вечер собирались всё больше жителей, чтобы слышать новые приключения."); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | @ -1,13 +0,0 @@ | ||||||
| package model; |  | ||||||
| 
 |  | ||||||
| public class StoryContext { |  | ||||||
|     private City city; |  | ||||||
|     private House house; |  | ||||||
| 
 |  | ||||||
|     public StoryContext(City city, House house) { |  | ||||||
|         this.city = city; |  | ||||||
|         this.house = house; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // Getters and setters for city and house |  | ||||||
| } |  | ||||||
							
								
								
									
										31
									
								
								src/story/StoryContext.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/story/StoryContext.java
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | ||||||
|  | package story; | ||||||
|  | 
 | ||||||
|  | import model.City; | ||||||
|  | import model.House; | ||||||
|  | 
 | ||||||
|  | public class StoryContext { | ||||||
|  |     private City city; | ||||||
|  |     private House house; | ||||||
|  | 
 | ||||||
|  |     public StoryContext(City city, House house) { | ||||||
|  |         this.city = city; | ||||||
|  |         this.house = house; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Getters and setters for city and house | ||||||
|  |     public City getCity() { | ||||||
|  |         return this.city; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     // Methods for story actions | ||||||
|  |     public void returnToDailyLifeWithChanges() { | ||||||
|  |         // Implement the logic for the city's daily life with subtle changes after the travelers' return | ||||||
|  |         System.out.println("Жизнь в " + city.getName() + " потекла по-старому... хотя нет, нельзя сказать, чтобы совсем по-старому."); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public void gatherResidentsForStories() { | ||||||
|  |         // Implement the logic for gathering residents to listen to stories | ||||||
|  |         house.gatherResidents(); | ||||||
|  |         System.out.println("Все жители, и малыши и малышки, приходили по вечерам к " + house.getName() + " и слушали рассказы путешественников."); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user