package script; import java.util.AbstractMap; import java.util.ArrayList; import java.util.Map; public class Movement { int iterator; ArrayList<Map.Entry<Integer, Integer>> moves; //Direction, Steps public Movement() { this.iterator = 0; moves = new ArrayList<Map.Entry<Integer, Integer>>(); } public Movement(Movement movement) { //Deep copy this.iterator = movement.iterator; this.moves = new ArrayList<Map.Entry<Integer, Integer>>(); for (Map.Entry<Integer, Integer> e: movement.moves){ this.moves.add(new AbstractMap.SimpleEntry<Integer, Integer>(e.getKey(), e.getValue())); } } public ArrayList<Map.Entry<Integer, Integer>> getAllMoves() { return this.moves; } public Map.Entry<Integer, Integer> getNextMove() { Map.Entry<Integer, Integer> entry = this.moves.get(iterator); iterator++; return entry; } public void startFromBeginning() { this.iterator = 0; } }