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