From 2c0ecf2aba850c4861a4cc09db014683c20ef0f5 Mon Sep 17 00:00:00 2001 From: Aleksandra Smela Date: Thu, 15 Dec 2022 09:24:32 +0100 Subject: [PATCH] classes added + Vector2d&Direction implemented --- .idea/EvolutionGenerator.iml | 4 +- .idea/compiler.xml | 10 +++ ..._org_apiguardian_apiguardian_api_1_1_2.xml | 11 +++ ..._junit_jupiter_junit_jupiter_api_5_8_1.xml | 11 +++ ...nit_jupiter_junit_jupiter_engine_5_8_1.xml | 11 +++ ..._platform_junit_platform_commons_1_8_1.xml | 11 +++ ...t_platform_junit_platform_engine_1_8_1.xml | 11 +++ ...radle__org_opentest4j_opentest4j_1_2_0.xml | 11 +++ .idea/misc.xml | 6 +- .idea/modules.xml | 3 + .idea/modules/oolab.iml | 12 ++++ .idea/modules/oolab.main.iml | 12 ++++ .idea/modules/oolab.test.iml | 18 +++++ .../main/java/agh/ics/oop/AbstractAnimal.java | 4 ++ .../main/java/agh/ics/oop/AbstractMap.java | 4 ++ oolab/src/main/java/agh/ics/oop/Animal.java | 4 -- .../src/main/java/agh/ics/oop/Direction.java | 67 +++++++++++++++++++ .../java/agh/ics/oop/ForestedEquators.java | 4 ++ oolab/src/main/java/agh/ics/oop/GlobMap.java | 4 ++ oolab/src/main/java/agh/ics/oop/Grass.java | 2 +- oolab/src/main/java/agh/ics/oop/HellMap.java | 4 ++ .../main/java/agh/ics/oop/HijinksEngine.java | 4 ++ .../main/java/agh/ics/oop/IHolyGardener.java | 4 ++ .../main/java/agh/ics/oop/IMapElement.java | 4 ++ .../java/agh/ics/oop/ISimulationEngine.java | 4 ++ .../main/java/agh/ics/oop/MoveDirection.java | 4 -- .../agh/ics/oop/PredestinationEngine.java | 4 ++ .../main/java/agh/ics/oop/ToxicCorpses.java | 4 ++ oolab/src/main/java/agh/ics/oop/Vector2d.java | 60 +++++++++++++++++ 29 files changed, 297 insertions(+), 15 deletions(-) create mode 100644 .idea/compiler.xml create mode 100644 .idea/libraries/Gradle__org_apiguardian_apiguardian_api_1_1_2.xml create mode 100644 .idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_api_5_8_1.xml create mode 100644 .idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_engine_5_8_1.xml create mode 100644 .idea/libraries/Gradle__org_junit_platform_junit_platform_commons_1_8_1.xml create mode 100644 .idea/libraries/Gradle__org_junit_platform_junit_platform_engine_1_8_1.xml create mode 100644 .idea/libraries/Gradle__org_opentest4j_opentest4j_1_2_0.xml create mode 100644 .idea/modules/oolab.iml create mode 100644 .idea/modules/oolab.main.iml create mode 100644 .idea/modules/oolab.test.iml create mode 100644 oolab/src/main/java/agh/ics/oop/AbstractAnimal.java create mode 100644 oolab/src/main/java/agh/ics/oop/AbstractMap.java delete mode 100644 oolab/src/main/java/agh/ics/oop/Animal.java create mode 100644 oolab/src/main/java/agh/ics/oop/Direction.java create mode 100644 oolab/src/main/java/agh/ics/oop/ForestedEquators.java create mode 100644 oolab/src/main/java/agh/ics/oop/GlobMap.java create mode 100644 oolab/src/main/java/agh/ics/oop/HellMap.java create mode 100644 oolab/src/main/java/agh/ics/oop/HijinksEngine.java create mode 100644 oolab/src/main/java/agh/ics/oop/IHolyGardener.java create mode 100644 oolab/src/main/java/agh/ics/oop/IMapElement.java create mode 100644 oolab/src/main/java/agh/ics/oop/ISimulationEngine.java delete mode 100644 oolab/src/main/java/agh/ics/oop/MoveDirection.java create mode 100644 oolab/src/main/java/agh/ics/oop/PredestinationEngine.java create mode 100644 oolab/src/main/java/agh/ics/oop/ToxicCorpses.java create mode 100644 oolab/src/main/java/agh/ics/oop/Vector2d.java diff --git a/.idea/EvolutionGenerator.iml b/.idea/EvolutionGenerator.iml index d6ebd48..e2c325a 100644 --- a/.idea/EvolutionGenerator.iml +++ b/.idea/EvolutionGenerator.iml @@ -2,7 +2,9 @@ - + + + diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..4aadc36 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_apiguardian_apiguardian_api_1_1_2.xml b/.idea/libraries/Gradle__org_apiguardian_apiguardian_api_1_1_2.xml new file mode 100644 index 0000000..ec7423e --- /dev/null +++ b/.idea/libraries/Gradle__org_apiguardian_apiguardian_api_1_1_2.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_api_5_8_1.xml b/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_api_5_8_1.xml new file mode 100644 index 0000000..e4ec376 --- /dev/null +++ b/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_api_5_8_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_engine_5_8_1.xml b/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_engine_5_8_1.xml new file mode 100644 index 0000000..4da4781 --- /dev/null +++ b/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_engine_5_8_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_junit_platform_junit_platform_commons_1_8_1.xml b/.idea/libraries/Gradle__org_junit_platform_junit_platform_commons_1_8_1.xml new file mode 100644 index 0000000..ec1b37e --- /dev/null +++ b/.idea/libraries/Gradle__org_junit_platform_junit_platform_commons_1_8_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_junit_platform_junit_platform_engine_1_8_1.xml b/.idea/libraries/Gradle__org_junit_platform_junit_platform_engine_1_8_1.xml new file mode 100644 index 0000000..2940fd5 --- /dev/null +++ b/.idea/libraries/Gradle__org_junit_platform_junit_platform_engine_1_8_1.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_opentest4j_opentest4j_1_2_0.xml b/.idea/libraries/Gradle__org_opentest4j_opentest4j_1_2_0.xml new file mode 100644 index 0000000..c0ad60c --- /dev/null +++ b/.idea/libraries/Gradle__org_opentest4j_opentest4j_1_2_0.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 67bf744..9c42d73 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,10 +1,6 @@ - - - - - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 403c593..7d93384 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -3,6 +3,9 @@ + + + \ No newline at end of file diff --git a/.idea/modules/oolab.iml b/.idea/modules/oolab.iml new file mode 100644 index 0000000..7270d33 --- /dev/null +++ b/.idea/modules/oolab.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/oolab.main.iml b/.idea/modules/oolab.main.iml new file mode 100644 index 0000000..b4e1ce3 --- /dev/null +++ b/.idea/modules/oolab.main.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules/oolab.test.iml b/.idea/modules/oolab.test.iml new file mode 100644 index 0000000..23652a6 --- /dev/null +++ b/.idea/modules/oolab.test.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/oolab/src/main/java/agh/ics/oop/AbstractAnimal.java b/oolab/src/main/java/agh/ics/oop/AbstractAnimal.java new file mode 100644 index 0000000..ba54be1 --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/AbstractAnimal.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public abstract class AbstractAnimal implements IMapElement{ +} diff --git a/oolab/src/main/java/agh/ics/oop/AbstractMap.java b/oolab/src/main/java/agh/ics/oop/AbstractMap.java new file mode 100644 index 0000000..aee26d9 --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/AbstractMap.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public abstract class AbstractMap { +} diff --git a/oolab/src/main/java/agh/ics/oop/Animal.java b/oolab/src/main/java/agh/ics/oop/Animal.java deleted file mode 100644 index ce6158f..0000000 --- a/oolab/src/main/java/agh/ics/oop/Animal.java +++ /dev/null @@ -1,4 +0,0 @@ -package agh.ics.oop; - -public class Animal { -} diff --git a/oolab/src/main/java/agh/ics/oop/Direction.java b/oolab/src/main/java/agh/ics/oop/Direction.java new file mode 100644 index 0000000..57dc42b --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/Direction.java @@ -0,0 +1,67 @@ +package agh.ics.oop; + +public enum Direction { + NORTH, + EASTNORTH, + EAST, + EASTSOUTH, + SOUTH, + WESTSOUTH, + WEST, + WESTNORTH; + public Vector2d toUnitVector(){ + return switch(this){ + case NORTH -> new Vector2d(0,1); + case EASTNORTH -> new Vector2d(1,1); + case EAST -> new Vector2d(1,0); + case EASTSOUTH -> new Vector2d(1,-1); + case SOUTH -> new Vector2d(0,-1); + case WESTSOUTH -> new Vector2d(-1,-1); + case WEST -> new Vector2d(-1,0); + case WESTNORTH -> new Vector2d(-1,1); + default -> null; + }; + } + + public int toNumber(){ + return switch(this){ + case NORTH -> 0; + case EASTNORTH -> 1; + case EAST -> 2; + case EASTSOUTH -> 3; + case SOUTH -> 4; + case WESTSOUTH -> 5; + case WEST -> 6; + case WESTNORTH -> 7; + }; + } + + public Direction add(Direction d){ + int sumInt=this.toNumber()+d.toNumber(); + return switch(sumInt%8){ + case 0 -> NORTH; + case 1 -> EASTNORTH; + case 2 -> EAST; + case 3 -> EASTSOUTH; + case 4 -> SOUTH; + case 5 -> WESTSOUTH; + case 6 -> WEST; + case 7 -> WESTNORTH; + default -> this; + }; + } + public Direction add(int n){ + int sumInt=this.toNumber()+n; + return switch(sumInt%8){ + case 0 -> NORTH; + case 1 -> EASTNORTH; + case 2 -> EAST; + case 3 -> EASTSOUTH; + case 4 -> SOUTH; + case 5 -> WESTSOUTH; + case 6 -> WEST; + case 7 -> WESTNORTH; + default -> this; + }; + } +} diff --git a/oolab/src/main/java/agh/ics/oop/ForestedEquators.java b/oolab/src/main/java/agh/ics/oop/ForestedEquators.java new file mode 100644 index 0000000..582d265 --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/ForestedEquators.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public class ForestedEquators implements IHolyGardener{ +} diff --git a/oolab/src/main/java/agh/ics/oop/GlobMap.java b/oolab/src/main/java/agh/ics/oop/GlobMap.java new file mode 100644 index 0000000..3ee514f --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/GlobMap.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public class GlobMap extends AbstractMap{ +} diff --git a/oolab/src/main/java/agh/ics/oop/Grass.java b/oolab/src/main/java/agh/ics/oop/Grass.java index f448f03..c93ea32 100644 --- a/oolab/src/main/java/agh/ics/oop/Grass.java +++ b/oolab/src/main/java/agh/ics/oop/Grass.java @@ -1,4 +1,4 @@ package agh.ics.oop; -public class Grass { +public class Grass implements IMapElement{ } diff --git a/oolab/src/main/java/agh/ics/oop/HellMap.java b/oolab/src/main/java/agh/ics/oop/HellMap.java new file mode 100644 index 0000000..cedf45c --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/HellMap.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public class HellMap extends AbstractMap{ +} diff --git a/oolab/src/main/java/agh/ics/oop/HijinksEngine.java b/oolab/src/main/java/agh/ics/oop/HijinksEngine.java new file mode 100644 index 0000000..3be3bbf --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/HijinksEngine.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public class HijinksEngine implements ISimulationEngine{ +} diff --git a/oolab/src/main/java/agh/ics/oop/IHolyGardener.java b/oolab/src/main/java/agh/ics/oop/IHolyGardener.java new file mode 100644 index 0000000..f0ade87 --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/IHolyGardener.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public interface IHolyGardener { +} diff --git a/oolab/src/main/java/agh/ics/oop/IMapElement.java b/oolab/src/main/java/agh/ics/oop/IMapElement.java new file mode 100644 index 0000000..98ec9da --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/IMapElement.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public interface IMapElement { +} diff --git a/oolab/src/main/java/agh/ics/oop/ISimulationEngine.java b/oolab/src/main/java/agh/ics/oop/ISimulationEngine.java new file mode 100644 index 0000000..781c8f9 --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/ISimulationEngine.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public interface ISimulationEngine { +} diff --git a/oolab/src/main/java/agh/ics/oop/MoveDirection.java b/oolab/src/main/java/agh/ics/oop/MoveDirection.java deleted file mode 100644 index afe1d16..0000000 --- a/oolab/src/main/java/agh/ics/oop/MoveDirection.java +++ /dev/null @@ -1,4 +0,0 @@ -package agh.ics.oop; - -public enum MoveDirection { -} diff --git a/oolab/src/main/java/agh/ics/oop/PredestinationEngine.java b/oolab/src/main/java/agh/ics/oop/PredestinationEngine.java new file mode 100644 index 0000000..4ecc2a3 --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/PredestinationEngine.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public class PredestinationEngine implements ISimulationEngine{ +} diff --git a/oolab/src/main/java/agh/ics/oop/ToxicCorpses.java b/oolab/src/main/java/agh/ics/oop/ToxicCorpses.java new file mode 100644 index 0000000..6efe41d --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/ToxicCorpses.java @@ -0,0 +1,4 @@ +package agh.ics.oop; + +public class ToxicCorpses implements IHolyGardener{ +} diff --git a/oolab/src/main/java/agh/ics/oop/Vector2d.java b/oolab/src/main/java/agh/ics/oop/Vector2d.java new file mode 100644 index 0000000..ada6c59 --- /dev/null +++ b/oolab/src/main/java/agh/ics/oop/Vector2d.java @@ -0,0 +1,60 @@ +package agh.ics.oop; + +import java.util.Objects; + +public class Vector2d{ + public final int x; + public final int y; + + public Vector2d (int x, int y){ + this.x=x; + this.y=y; + } + + + public String toString() { + return "(%d, %d)".formatted(x, y); + } + + public boolean precedes(Vector2d other) { + return x <= other.x && y <= other.y; + } + + public boolean follows(Vector2d other) { + return x >= other.x && y >= other.y; + } + + public Vector2d add(Vector2d other) { + return new Vector2d(x + other.x, y + other.y); + } + + public Vector2d subtract(Vector2d other) { + return new Vector2d(x - other.x, y - other.y); + } + + public Vector2d upperRight(Vector2d other) { + return new Vector2d(Math.max(x, other.x), Math.max(y, other.y)); + } + + public Vector2d lowerLeft(Vector2d other) { + return new Vector2d(Math.min(x, other.x), Math.min(y, other.y)); + } + + public Vector2d opposite() { + return new Vector2d(-x, -y); + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + if (obj == null || getClass() != obj.getClass()) return false; + Vector2d other = (Vector2d) obj; + return (x == other.x && y == other.y); + } + + @Override + public int hashCode() { + return Objects.hash(x, y); + } +} +