From 6c436f8f3dbfe86cbc01d6d419c57cb535625210 Mon Sep 17 00:00:00 2001 From: Ivan Zinchenko Date: Thu, 21 Dec 2023 23:52:15 +0300 Subject: [PATCH] refactor: fix interfaces issues --- src/Characters/Character.java | 11 ++++++++--- src/Characters/FrenBok.java | 4 ++-- src/Characters/IFeelable.java | 5 +++++ src/Characters/IGrabbableCharacter.java | 8 +------- src/Characters/IMovable.java | 7 +++++++ src/StoryTeller/StoryTeller.java | 16 ++++++++-------- 6 files changed, 31 insertions(+), 20 deletions(-) create mode 100644 src/Characters/IFeelable.java create mode 100644 src/Characters/IMovable.java diff --git a/src/Characters/Character.java b/src/Characters/Character.java index b6d54a3..d6bc59d 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 { +public abstract class Character extends Entity implements IMovable, IFeelable { private final Gender gender; private Entity position; private String currentState = ""; @@ -44,8 +44,7 @@ public abstract class Character extends Entity { this.position = obj; } - @Override - public String toString() { + public String getState() { return this.currentState; } @@ -53,6 +52,12 @@ public abstract class Character extends Entity { this.currentState = state; } + @Override + public String toString() { + return this.getName(); + } + + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/src/Characters/FrenBok.java b/src/Characters/FrenBok.java index 48ccd00..8821230 100644 --- a/src/Characters/FrenBok.java +++ b/src/Characters/FrenBok.java @@ -30,12 +30,12 @@ public class FrenBok extends Character { public void grabCharacter(IGrabbableCharacter character) { this.characterInHand = character; - this.setState(String.format("%s схватила %s за %s", this.getGender(), character.getName(), character.getGrabbablePart())); + this.setState(String.format("%s схватила %s за %s", this.getGender(), character, character.getGrabbablePart())); } public void pushCharacterBehindItem(Item item) { this.characterInHand.moveTo(item); - this.setState(String.format("%s вытолкнула %s за %s", this.getGender(), this.characterInHand.getName(), item)); + this.setState(String.format("%s вытолкнула %s за %s", this.getGender(), this.characterInHand, item)); this.characterInHand = null; } } diff --git a/src/Characters/IFeelable.java b/src/Characters/IFeelable.java new file mode 100644 index 0000000..149935f --- /dev/null +++ b/src/Characters/IFeelable.java @@ -0,0 +1,5 @@ +package Characters; + +interface IFeelable { + void setFeel(Feels feel); +} \ No newline at end of file diff --git a/src/Characters/IGrabbableCharacter.java b/src/Characters/IGrabbableCharacter.java index aa6c6ce..68a4aab 100644 --- a/src/Characters/IGrabbableCharacter.java +++ b/src/Characters/IGrabbableCharacter.java @@ -1,11 +1,5 @@ package Characters; -import Entity.Entity; - -interface IGrabbableCharacter { +interface IGrabbableCharacter extends IMovable { String getGrabbablePart(); - - void moveTo(Entity obj); - - String getName(); } diff --git a/src/Characters/IMovable.java b/src/Characters/IMovable.java new file mode 100644 index 0000000..5a6272d --- /dev/null +++ b/src/Characters/IMovable.java @@ -0,0 +1,7 @@ +package Characters; + +import Entity.*; + +public interface IMovable { + void moveTo(Entity obj); +} \ No newline at end of file diff --git a/src/StoryTeller/StoryTeller.java b/src/StoryTeller/StoryTeller.java index d1054f6..a47f25f 100644 --- a/src/StoryTeller/StoryTeller.java +++ b/src/StoryTeller/StoryTeller.java @@ -19,23 +19,23 @@ public class StoryTeller { public void play() { karlson.setFeel(Feels.SCARY); - System.out.println(karlson); + System.out.println(karlson.getState()); karlson.setFeel(Feels.SAD); - System.out.println(karlson); + System.out.println(karlson.getState()); karlson.moveTo(kitchenHob); - System.out.println(karlson); + System.out.println(karlson.getState()); karlson.grabFrom(fryingPan); - System.out.println(karlson); + System.out.println(karlson.getState()); if (fryingPan.getOwner() == frenBok) { System.out.println("Вот этого ему не следовало делать"); frenBok.setFeel(Feels.RAGE); - System.out.println(frenBok); + System.out.println(frenBok.getState()); frenBok.moveTo(karlson); - System.out.println(frenBok); + System.out.println(frenBok.getState()); frenBok.grabCharacter(karlson); - System.out.println(frenBok); + System.out.println(frenBok.getState()); frenBok.pushCharacterBehindItem(door); - System.out.println(frenBok); + System.out.println(frenBok.getState()); } else { frenBok.setFeel(Feels.NORMAL); System.out.println(frenBok);