started re-implementing using java
This commit is contained in:
10
.classpath
Normal file
10
.classpath
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<classpath>
|
||||||
|
<classpathentry kind="src" path="src/main/java"/>
|
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
|
||||||
|
<attributes>
|
||||||
|
<attribute name="module" value="true"/>
|
||||||
|
</attributes>
|
||||||
|
</classpathentry>
|
||||||
|
<classpathentry kind="output" path="bin"/>
|
||||||
|
</classpath>
|
||||||
26
src/main/java/de/srsoftware/web4rail/Plan.java
Normal file
26
src/main/java/de/srsoftware/web4rail/Plan.java
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
package de.srsoftware.web4rail;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import de.srsoftware.web4rail.tiles.Tile;
|
||||||
|
|
||||||
|
public class Plan {
|
||||||
|
private HashMap<Integer,HashMap<Integer,Tile>> tiles = new HashMap<Integer,HashMap<Integer,Tile>>();
|
||||||
|
|
||||||
|
public Tile set(int x,int y,Tile tile) {
|
||||||
|
Tile old = null;
|
||||||
|
HashMap<Integer, Tile> column = tiles.get(x);
|
||||||
|
if (column == null) {
|
||||||
|
column = new HashMap<Integer,Tile>();
|
||||||
|
tiles.put(x, column);
|
||||||
|
}
|
||||||
|
old = column.get(y);
|
||||||
|
column.put(y,tile);
|
||||||
|
return old;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Tile get(int x, int y) {
|
||||||
|
HashMap<Integer, Tile> column = tiles.get(x);
|
||||||
|
return column == null ? null : column.get(y).position(x,y);
|
||||||
|
}
|
||||||
|
}
|
||||||
5
src/main/java/de/srsoftware/web4rail/tiles/BlockH.java
Normal file
5
src/main/java/de/srsoftware/web4rail/tiles/BlockH.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class BlockH extends StraightH{
|
||||||
|
private Contact north,center,south;
|
||||||
|
}
|
||||||
5
src/main/java/de/srsoftware/web4rail/tiles/BlockV.java
Normal file
5
src/main/java/de/srsoftware/web4rail/tiles/BlockV.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class BlockV extends StraightV{
|
||||||
|
Contact west,center,east;
|
||||||
|
}
|
||||||
5
src/main/java/de/srsoftware/web4rail/tiles/Contact.java
Normal file
5
src/main/java/de/srsoftware/web4rail/tiles/Contact.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class Contact {
|
||||||
|
|
||||||
|
}
|
||||||
16
src/main/java/de/srsoftware/web4rail/tiles/DiagES.java
Normal file
16
src/main/java/de/srsoftware/web4rail/tiles/DiagES.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class DiagES extends Tile{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
switch (direction) {
|
||||||
|
case SOUTH:
|
||||||
|
case EAST:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
16
src/main/java/de/srsoftware/web4rail/tiles/DiagNE.java
Normal file
16
src/main/java/de/srsoftware/web4rail/tiles/DiagNE.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class DiagNE extends Tile{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
switch (direction) {
|
||||||
|
case NORTH:
|
||||||
|
case EAST:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
16
src/main/java/de/srsoftware/web4rail/tiles/DiagSW.java
Normal file
16
src/main/java/de/srsoftware/web4rail/tiles/DiagSW.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class DiagSW extends Tile{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
switch (direction) {
|
||||||
|
case SOUTH:
|
||||||
|
case WEST:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
16
src/main/java/de/srsoftware/web4rail/tiles/DiagWN.java
Normal file
16
src/main/java/de/srsoftware/web4rail/tiles/DiagWN.java
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class DiagWN extends Tile{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
switch (direction) {
|
||||||
|
case NORTH:
|
||||||
|
case WEST:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
14
src/main/java/de/srsoftware/web4rail/tiles/StraightH.java
Normal file
14
src/main/java/de/srsoftware/web4rail/tiles/StraightH.java
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class StraightH extends StretchableTile{
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
switch (direction) {
|
||||||
|
case EAST:
|
||||||
|
case WEST:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
15
src/main/java/de/srsoftware/web4rail/tiles/StraightV.java
Normal file
15
src/main/java/de/srsoftware/web4rail/tiles/StraightV.java
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class StraightV extends StretchableTile{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
switch (direction) {
|
||||||
|
case NORTH:
|
||||||
|
case SOUTH:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public abstract class StretchableTile extends Tile {
|
||||||
|
public int length = 1;
|
||||||
|
}
|
||||||
55
src/main/java/de/srsoftware/web4rail/tiles/Tile.java
Normal file
55
src/main/java/de/srsoftware/web4rail/tiles/Tile.java
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public abstract class Tile {
|
||||||
|
|
||||||
|
public enum Direction{
|
||||||
|
NORTH,SOUTH,EAST,WEST;
|
||||||
|
}
|
||||||
|
private class Position {
|
||||||
|
int x,y;
|
||||||
|
}
|
||||||
|
|
||||||
|
Position position;
|
||||||
|
private HashMap<Direction,Tile> neighbours = new HashMap();
|
||||||
|
|
||||||
|
public abstract boolean hasConnector(Direction direction);
|
||||||
|
|
||||||
|
public boolean connect(Direction direction, Tile neighbour) {
|
||||||
|
if (hasConnector(direction)) {
|
||||||
|
switch (direction) {
|
||||||
|
case NORTH:
|
||||||
|
neighbour.neighbours.put(Direction.SOUTH, this);
|
||||||
|
neighbour.position.x = position.x;
|
||||||
|
neighbour.position.y = position.y-1;
|
||||||
|
case SOUTH:
|
||||||
|
neighbour.neighbours.put(Direction.NORTH, this);
|
||||||
|
neighbour.position.x = position.x;
|
||||||
|
neighbour.position.y = position.y+1;
|
||||||
|
case EAST:
|
||||||
|
neighbour.neighbours.put(Direction.WEST, this);
|
||||||
|
neighbour.position.x = position.x+1;
|
||||||
|
neighbour.position.y = position.y;
|
||||||
|
case WEST:
|
||||||
|
neighbour.neighbours.put(Direction.EAST, this);
|
||||||
|
neighbour.position.x = position.x-1;
|
||||||
|
neighbour.position.y = position.y;
|
||||||
|
}
|
||||||
|
neighbours.put(direction, neighbour);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Tile neighbour(Direction direction) {
|
||||||
|
return neighbours.get(direction);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Tile position(int x, int y) {
|
||||||
|
position.x = x;
|
||||||
|
position.y = y;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
11
src/main/java/de/srsoftware/web4rail/tiles/Turnout.java
Normal file
11
src/main/java/de/srsoftware/web4rail/tiles/Turnout.java
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public abstract class Turnout extends Tile {
|
||||||
|
|
||||||
|
private boolean straight = true;
|
||||||
|
|
||||||
|
public boolean toggle() {
|
||||||
|
straight = !straight;
|
||||||
|
return straight;
|
||||||
|
}
|
||||||
|
}
|
||||||
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutEN.java
Normal file
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutEN.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class TurnoutEN extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
return direction != Direction.SOUTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutES.java
Normal file
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutES.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class TurnoutES extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
return direction != Direction.NORTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutNE.java
Normal file
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutNE.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class TurnoutNE extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
return direction != Direction.WEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutNW.java
Normal file
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutNW.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class TurnoutNW extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
return direction != Direction.EAST;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutSE.java
Normal file
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutSE.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class TurnoutSE extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
return direction != Direction.WEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutSW.java
Normal file
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutSW.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class TurnoutSW extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
return direction != Direction.EAST;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutWN.java
Normal file
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutWN.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class TurnoutWN extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
return direction != Direction.SOUTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutWS.java
Normal file
10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutWS.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
public class TurnoutWS extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasConnector(Direction direction) {
|
||||||
|
return direction != Direction.NORTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user