initial commit
This commit is contained in:
commit
506ce1f188
7
.vscode/settings.json
vendored
Normal file
7
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"java.project.sourcePaths": ["src"],
|
||||||
|
"java.project.outputPath": "bin",
|
||||||
|
"java.project.referencedLibraries": [
|
||||||
|
"lib/**/*.jar"
|
||||||
|
]
|
||||||
|
}
|
18
README.md
Normal file
18
README.md
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
## Getting Started
|
||||||
|
|
||||||
|
Welcome to the VS Code Java world. Here is a guideline to help you get started to write Java code in Visual Studio Code.
|
||||||
|
|
||||||
|
## Folder Structure
|
||||||
|
|
||||||
|
The workspace contains two folders by default, where:
|
||||||
|
|
||||||
|
- `src`: the folder to maintain sources
|
||||||
|
- `lib`: the folder to maintain dependencies
|
||||||
|
|
||||||
|
Meanwhile, the compiled output files will be generated in the `bin` folder by default.
|
||||||
|
|
||||||
|
> If you want to customize the folder structure, open `.vscode/settings.json` and update the related settings there.
|
||||||
|
|
||||||
|
## Dependency Management
|
||||||
|
|
||||||
|
The `JAVA PROJECTS` view allows you to manage your dependencies. More details can be found [here](https://github.com/microsoft/vscode-java-dependency#manage-dependencies).
|
BIN
bin/AriadneIterator$Accomplished.class
Normal file
BIN
bin/AriadneIterator$Accomplished.class
Normal file
Binary file not shown.
BIN
bin/AriadneIterator$Starting.class
Normal file
BIN
bin/AriadneIterator$Starting.class
Normal file
Binary file not shown.
BIN
bin/AriadneIterator.class
Normal file
BIN
bin/AriadneIterator.class
Normal file
Binary file not shown.
BIN
bin/CreateSmallMaze.class
Normal file
BIN
bin/CreateSmallMaze.class
Normal file
Binary file not shown.
BIN
bin/CreateSmallMazeTest.class
Normal file
BIN
bin/CreateSmallMazeTest.class
Normal file
Binary file not shown.
BIN
bin/Room.class
Normal file
BIN
bin/Room.class
Normal file
Binary file not shown.
BIN
lib/hamcrest-core-1.3.jar
Normal file
BIN
lib/hamcrest-core-1.3.jar
Normal file
Binary file not shown.
BIN
lib/junit-4.13.2.jar
Normal file
BIN
lib/junit-4.13.2.jar
Normal file
Binary file not shown.
72
src/AriadneIterator.java
Normal file
72
src/AriadneIterator.java
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Stack;
|
||||||
|
|
||||||
|
public class AriadneIterator implements Iterator<Room>{
|
||||||
|
private Room entry;
|
||||||
|
private Stack<Room> ariadnesThread;
|
||||||
|
private List<Room> visited;
|
||||||
|
|
||||||
|
private State currentstate;
|
||||||
|
|
||||||
|
public AriadneIterator(Room entry) {
|
||||||
|
this.entry = entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
return cs.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Room next() {
|
||||||
|
return ariadnesThread.peek();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stepRetreating() {
|
||||||
|
ariadnesThread.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasMinotaur() {
|
||||||
|
return ariadnesThread.peek().getMinotaur();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void step() {
|
||||||
|
currentstate.step();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init() {
|
||||||
|
ariadnesThread = new Stack<>();
|
||||||
|
ariadnesThread.push(entry);
|
||||||
|
visited = new ArrayList<>();
|
||||||
|
visited.add(entry);
|
||||||
|
currentstate = new Starting();
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Starting implements State {
|
||||||
|
@Override
|
||||||
|
public void step() {
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Accomplished implements State {
|
||||||
|
@Override
|
||||||
|
public void step() {
|
||||||
|
stepRetreating();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasNext() {
|
||||||
|
return !ariadnesThread.empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
16
src/CreateSmallMaze.java
Normal file
16
src/CreateSmallMaze.java
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
public class CreateSmallMaze {
|
||||||
|
|
||||||
|
|
||||||
|
public static Room createSmallMaze() {
|
||||||
|
Room a = new Room("a2");
|
||||||
|
Room b = new Room("b2");
|
||||||
|
b.addReachable(a);
|
||||||
|
a = new Room("b1");
|
||||||
|
a.setMinotaur(true);
|
||||||
|
a.addReachable(b);
|
||||||
|
b = new Room("a1");
|
||||||
|
b.addReachable(a);
|
||||||
|
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
}
|
23
src/CreateSmallMazeTest.java
Normal file
23
src/CreateSmallMazeTest.java
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class CreateSmallMazeTest {
|
||||||
|
|
||||||
|
Room entry = CreateSmallMaze.createSmallMaze();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSmallMaze() {
|
||||||
|
AriadneIterator iter = new AriadneIterator(entry);
|
||||||
|
|
||||||
|
// Erstes next ruft nur init() auf sodass wir nun mit dem Iterator arbeiten können
|
||||||
|
iter.next();
|
||||||
|
|
||||||
|
|
||||||
|
assertEquals("a2", iter.next().getName());
|
||||||
|
assertEquals("b2", iter.next().getName());
|
||||||
|
assertEquals("b1", iter.next().getName());
|
||||||
|
assertEquals("b2", iter.next().getName());
|
||||||
|
assertEquals("a2", iter.next().getName());
|
||||||
|
}
|
||||||
|
}
|
28
src/Room.java
Normal file
28
src/Room.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
public class Room {
|
||||||
|
private String name;
|
||||||
|
private boolean minotaur;
|
||||||
|
|
||||||
|
private Set<Room> reachable;
|
||||||
|
|
||||||
|
public Room(String name) {
|
||||||
|
this.name = name;
|
||||||
|
minotaur = false;
|
||||||
|
reachable = new HashSet<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMinotaur(boolean v) {
|
||||||
|
minotaur = v;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addReachable(Room room) {
|
||||||
|
reachable.add(room);
|
||||||
|
room.addReachable(this);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user