From 94fa4dae6be959a934f372eb52d600bfb7e9baa3 Mon Sep 17 00:00:00 2001 From: Ivan Zinchenko Date: Fri, 22 Dec 2023 00:01:40 +0300 Subject: [PATCH] update README.md --- README.md | 15 ++++++++++++++- src/Characters/Character.java | 2 +- src/Characters/FrenBok.java | 4 ++-- src/Characters/ICanTake.java | 7 +++++++ src/Characters/IFeelable.java | 2 +- .../{IGrabbableCharacter.java => IGrabbable.java} | 2 +- src/Characters/IMovable.java | 4 ++-- src/Characters/Karlson.java | 2 +- 8 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 src/Characters/ICanTake.java rename src/Characters/{IGrabbableCharacter.java => IGrabbable.java} (51%) diff --git a/README.md b/README.md index 3779339..ecb67bc 100644 --- a/README.md +++ b/README.md @@ -21,4 +21,17 @@ Она кинулась к Кралсон Она схватила Кралсон за шиворот Она вытолкнула Кралсон за дверь -``` \ No newline at end of file +``` + +## Структура проекта +```mermaid +graph TD; + Entity-->Character; + Character-->FenBok; + Character-->Karlson; + Entity-->Item; + Item-->Container; +``` +Главный абстрактный класс - Entity, который имеет только имя. От него наследуются предметы и персонажи. Персонажи могут чувствовать *(IFeelabe)*, двигаться *(IMovable)* и брать вещи *(ITakeable)*. Также персонажи имеют гендер *(enum Feels)*. + +За историю отвечает класс *StoryTeller*. Он меняет состояние персонажей и отображает их состояние. \ No newline at end of file diff --git a/src/Characters/Character.java b/src/Characters/Character.java index d6bc59d..2ce18e5 100644 --- a/src/Characters/Character.java +++ b/src/Characters/Character.java @@ -5,7 +5,7 @@ import Items.Item; import java.util.Objects; -public abstract class Character extends Entity implements IMovable, IFeelable { +public abstract class Character extends Entity implements IMovable, IFeelable, ICanTake { private final Gender gender; private Entity position; private String currentState = ""; diff --git a/src/Characters/FrenBok.java b/src/Characters/FrenBok.java index 8821230..349ec87 100644 --- a/src/Characters/FrenBok.java +++ b/src/Characters/FrenBok.java @@ -4,7 +4,7 @@ import Entity.Entity; import Items.Item; public class FrenBok extends Character { - private IGrabbableCharacter characterInHand; + private IGrabbable characterInHand; public FrenBok() { super("Фрекен Бок", Gender.WOMAN); @@ -28,7 +28,7 @@ public class FrenBok extends Character { this.setState(String.format("%s взяла %s", this.getGender(), obj.getName())); } - public void grabCharacter(IGrabbableCharacter character) { + public void grabCharacter(IGrabbable character) { this.characterInHand = character; this.setState(String.format("%s схватила %s за %s", this.getGender(), character, character.getGrabbablePart())); } diff --git a/src/Characters/ICanTake.java b/src/Characters/ICanTake.java new file mode 100644 index 0000000..b98ba29 --- /dev/null +++ b/src/Characters/ICanTake.java @@ -0,0 +1,7 @@ +package Characters; + +import Items.Item; + +interface ICanTake { + void grab(Item obj); +} diff --git a/src/Characters/IFeelable.java b/src/Characters/IFeelable.java index 149935f..e901506 100644 --- a/src/Characters/IFeelable.java +++ b/src/Characters/IFeelable.java @@ -1,5 +1,5 @@ package Characters; interface IFeelable { - void setFeel(Feels feel); + void setFeel(Feels feel); } \ No newline at end of file diff --git a/src/Characters/IGrabbableCharacter.java b/src/Characters/IGrabbable.java similarity index 51% rename from src/Characters/IGrabbableCharacter.java rename to src/Characters/IGrabbable.java index 68a4aab..f3f6744 100644 --- a/src/Characters/IGrabbableCharacter.java +++ b/src/Characters/IGrabbable.java @@ -1,5 +1,5 @@ package Characters; -interface IGrabbableCharacter extends IMovable { +interface IGrabbable extends IMovable { String getGrabbablePart(); } diff --git a/src/Characters/IMovable.java b/src/Characters/IMovable.java index 5a6272d..cfdaf81 100644 --- a/src/Characters/IMovable.java +++ b/src/Characters/IMovable.java @@ -2,6 +2,6 @@ package Characters; import Entity.*; -public interface IMovable { - void moveTo(Entity obj); +interface IMovable { + void moveTo(Entity obj); } \ No newline at end of file diff --git a/src/Characters/Karlson.java b/src/Characters/Karlson.java index 9a9bb6b..965c3cc 100644 --- a/src/Characters/Karlson.java +++ b/src/Characters/Karlson.java @@ -4,7 +4,7 @@ import Entity.Entity; import Items.Container; import Items.Item; -public class Karlson extends Character implements IGrabbableCharacter { +public class Karlson extends Character implements IGrabbable { public Karlson() { super("Кралсон", Gender.MAN); }