package snakes; public class Ladder extends Square { private int transport; private boolean invariant() { return isValidTransport(transport); } private boolean isValidTransport(int transport) { return transport != 0 && game.isValidPosition(position + transport); } public Ladder(int transport, Game game, int position) { super(game, position); assert isValidTransport(transport); this.transport = transport; assert invariant(); } @Override protected String squareLabel() { return position + "->" + this.destination().position(); } @Override public ISquare landHereOrGoHome() { return this.destination().landHereOrGoHome(); } protected ISquare destination() { return game.getSquare(position+transport); } }