update README.md

This commit is contained in:
Ivan Zinchenko 2023-12-22 00:01:40 +03:00
parent 6c436f8f3d
commit 94fa4dae6b
Signed by: zinch
GPG Key ID: 6D45AA2C8FD6A37E
8 changed files with 29 additions and 9 deletions

View File

@ -21,4 +21,17 @@
Она кинулась к Кралсон
Она схватила Кралсон за шиворот
Она вытолкнула Кралсон за дверь
```
```
## Структура проекта
```mermaid
graph TD;
Entity-->Character;
Character-->FenBok;
Character-->Karlson;
Entity-->Item;
Item-->Container;
```
Главный абстрактный класс - Entity, который имеет только имя. От него наследуются предметы и персонажи. Персонажи могут чувствовать *(IFeelabe)*, двигаться *(IMovable)* и брать вещи *(ITakeable)*. Также персонажи имеют гендер *(enum Feels)*.
За историю отвечает класс *StoryTeller*. Он меняет состояние персонажей и отображает их состояние.

View File

@ -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 = "";

View File

@ -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()));
}

View File

@ -0,0 +1,7 @@
package Characters;
import Items.Item;
interface ICanTake {
void grab(Item obj);
}

View File

@ -1,5 +1,5 @@
package Characters;
interface IFeelable {
void setFeel(Feels feel);
void setFeel(Feels feel);
}

View File

@ -1,5 +1,5 @@
package Characters;
interface IGrabbableCharacter extends IMovable {
interface IGrabbable extends IMovable {
String getGrabbablePart();
}

View File

@ -2,6 +2,6 @@ package Characters;
import Entity.*;
public interface IMovable {
void moveTo(Entity obj);
interface IMovable {
void moveTo(Entity obj);
}

View File

@ -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);
}