Git init
This commit is contained in:
commit
1df8332f73
34
.gitignore
vendored
Normal file
34
.gitignore
vendored
Normal file
@ -0,0 +1,34 @@
|
||||
### IntelliJ IDEA ###
|
||||
out/
|
||||
!**/src/main/**/out/
|
||||
!**/src/test/**/out/
|
||||
.idea
|
||||
*.iml
|
||||
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
bin/
|
||||
!**/src/main/**/bin/
|
||||
!**/src/test/**/bin/
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
||||
|
||||
### Builds ###
|
||||
app.jar
|
||||
3
MANIFEST.mf
Normal file
3
MANIFEST.mf
Normal file
@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Created-By: zinch
|
||||
Main-class: Main
|
||||
6
Makefile
Normal file
6
Makefile
Normal file
@ -0,0 +1,6 @@
|
||||
all:
|
||||
rm -rf target
|
||||
javac -d target -sourcepath src src/Main.java src/**/*
|
||||
cd target; jar cfm app.jar ../MANIFEST.mf *.class ./**/*.class
|
||||
mv target/app.jar ./
|
||||
rm -rf target
|
||||
45
src/Characters/Character.java
Normal file
45
src/Characters/Character.java
Normal file
@ -0,0 +1,45 @@
|
||||
package Characters;
|
||||
|
||||
import Entity.*;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public abstract class Character extends Entity {
|
||||
private final Gender gender;
|
||||
|
||||
public Character(String name, Gender gender) {
|
||||
this.name = name;
|
||||
this.gender = gender;
|
||||
}
|
||||
|
||||
public final String getGender() {
|
||||
switch (this.gender) {
|
||||
case MAN -> {
|
||||
return "Он";
|
||||
}
|
||||
case WOMAN -> {
|
||||
return "Она";
|
||||
}
|
||||
default -> {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public abstract String feel();
|
||||
public abstract String grab(IGrabbable obj);
|
||||
public abstract String moveTo(Entity obj);
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Character character = (Character) o;
|
||||
return Objects.equals(this.name, character.name) && this.gender == character.gender;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(this.name, this.gender);
|
||||
}
|
||||
}
|
||||
33
src/Characters/FrenBok.java
Normal file
33
src/Characters/FrenBok.java
Normal file
@ -0,0 +1,33 @@
|
||||
package Characters;
|
||||
|
||||
import Entity.*;
|
||||
import Items.Item;
|
||||
|
||||
public class FrenBok extends Character {
|
||||
public FrenBok() {
|
||||
super("Фрекен Бок", Gender.WOMAN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String moveTo(Entity obj) {
|
||||
return String.format("%s кинулась на %s", this.getGender(), obj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String feel() {
|
||||
return String.format("%s взревела от бешенства", this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String grab(IGrabbable obj) {
|
||||
return String.format("%s взяла %s", this.getGender(), obj);
|
||||
}
|
||||
|
||||
public String grabCharacter(IGrabbableCharacter character) {
|
||||
return String.format("%s схватила %s за %s", this.getGender(), character.getName(), character.getGrabbablePart());
|
||||
}
|
||||
|
||||
public String pushCharacterBehindItem(Character character, Item item) {
|
||||
return String.format("%s вытолкнула %s за %s", this.getGender(), character, item);
|
||||
}
|
||||
}
|
||||
6
src/Characters/Gender.java
Normal file
6
src/Characters/Gender.java
Normal file
@ -0,0 +1,6 @@
|
||||
package Characters;
|
||||
|
||||
public enum Gender {
|
||||
MAN,
|
||||
WOMAN
|
||||
}
|
||||
7
src/Characters/IGrabbableCharacter.java
Normal file
7
src/Characters/IGrabbableCharacter.java
Normal file
@ -0,0 +1,7 @@
|
||||
package Characters;
|
||||
|
||||
import Entity.IGrabbable;
|
||||
|
||||
public interface IGrabbableCharacter extends IGrabbable {
|
||||
String getGrabbablePart();
|
||||
}
|
||||
34
src/Characters/Karlson.java
Normal file
34
src/Characters/Karlson.java
Normal file
@ -0,0 +1,34 @@
|
||||
package Characters;
|
||||
|
||||
import Entity.*;
|
||||
import Items.Container;
|
||||
|
||||
public class Karlson extends Character implements IGrabbableCharacter {
|
||||
public Karlson() {
|
||||
super("Кралсон", Gender.MAN);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String feel() {
|
||||
return String.format("%s дрогнул губой и надулся", this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String moveTo(Entity obj) {
|
||||
return String.format("%s сделал шаг к %s", this.getGender(), obj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String grab(IGrabbable obj) {
|
||||
return String.format("%s взял %s", this, obj);
|
||||
}
|
||||
|
||||
public String grabFrom(Container container) {
|
||||
return String.format("%s взял одну %s из %s", this.getGender(), container.getInnerItem(), container);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGrabbablePart() {
|
||||
return "шиворот";
|
||||
}
|
||||
}
|
||||
28
src/Entity/Entity.java
Normal file
28
src/Entity/Entity.java
Normal file
@ -0,0 +1,28 @@
|
||||
package Entity;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public abstract class Entity {
|
||||
protected String name;
|
||||
public final String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Entity entity = (Entity) o;
|
||||
return Objects.equals(name, entity.name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(name);
|
||||
}
|
||||
}
|
||||
5
src/Entity/IGrabbable.java
Normal file
5
src/Entity/IGrabbable.java
Normal file
@ -0,0 +1,5 @@
|
||||
package Entity;
|
||||
|
||||
public interface IGrabbable {
|
||||
String getName();
|
||||
}
|
||||
30
src/Items/Container.java
Normal file
30
src/Items/Container.java
Normal file
@ -0,0 +1,30 @@
|
||||
package Items;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Container extends Item {
|
||||
private final Item innerItem;
|
||||
|
||||
public Container(String name, Item item) {
|
||||
super(name);
|
||||
this.innerItem = item;
|
||||
}
|
||||
|
||||
public Item getInnerItem() {
|
||||
return this.innerItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
if (!super.equals(o)) return false;
|
||||
Container container = (Container) o;
|
||||
return Objects.equals(innerItem, container.innerItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(super.hashCode(), innerItem);
|
||||
}
|
||||
}
|
||||
19
src/Items/Item.java
Normal file
19
src/Items/Item.java
Normal file
@ -0,0 +1,19 @@
|
||||
package Items;
|
||||
|
||||
import Entity.*;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class Item extends Entity implements IGrabbable {
|
||||
public Item(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
Item item = (Item) o;
|
||||
return Objects.equals(this.name, item.name);
|
||||
}
|
||||
}
|
||||
27
src/Main.java
Normal file
27
src/Main.java
Normal file
@ -0,0 +1,27 @@
|
||||
import Characters.FrenBok;
|
||||
import Characters.Karlson;
|
||||
import Items.Container;
|
||||
import Items.Item;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
// Персонажи
|
||||
Karlson karlson = new Karlson();
|
||||
FrenBok frenBok = new FrenBok();
|
||||
|
||||
// Предметы
|
||||
Item kitchenHob = new Item("плита");
|
||||
Item meatball = new Item("тефтелька");
|
||||
Container fryingPan = new Container("сковородка", meatball);
|
||||
Item door = new Item("дверь");
|
||||
|
||||
System.out.println(karlson.feel() + '.');
|
||||
System.out.println(karlson.moveTo(kitchenHob) + '.');
|
||||
System.out.println(karlson.grabFrom(fryingPan) + '.');
|
||||
System.out.println("Вот этого ему не следовало делать.");
|
||||
System.out.println(frenBok.feel() + '.');
|
||||
System.out.println(frenBok.moveTo(karlson) + '.');
|
||||
System.out.println(frenBok.grabCharacter(karlson) + '.');
|
||||
System.out.println(frenBok.pushCharacterBehindItem(karlson, door) + '.');
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user