Strategy #31
			
				
			
		
		
		
	| 
						 | 
					@ -0,0 +1,76 @@
 | 
				
			||||||
 | 
					package ch.zhaw.pm2.racetrack.strategy;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import ch.zhaw.pm2.racetrack.PositionVector;
 | 
				
			||||||
 | 
					import ch.zhaw.pm2.racetrack.Track;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.Arrays;
 | 
				
			||||||
 | 
					import java.util.Iterator;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class PathFinderStrategy implements MoveStrategy{
 | 
				
			||||||
 | 
					    private ArrayList<tryOutPaths> possiblePaths;
 | 
				
			||||||
 | 
					    private Track track;
 | 
				
			||||||
 | 
					    List<PositionVector.Direction> directions = Arrays.asList(PositionVector.Direction.values());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public PathFinderStrategy(Track track, int carIndex) {
 | 
				
			||||||
 | 
					        this.track = track;
 | 
				
			||||||
 | 
					        possiblePaths = new ArrayList<>();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void test(){
 | 
				
			||||||
 | 
					        ArrayList<tryOutPaths> temporary = new ArrayList<>();
 | 
				
			||||||
 | 
					        Iterator<tryOutPaths> it = possiblePaths.iterator();
 | 
				
			||||||
 | 
					        while(it.hasNext()) {
 | 
				
			||||||
 | 
					            tryOutPaths current = it.next();
 | 
				
			||||||
 | 
					            if (!current.isFeasible()) {
 | 
				
			||||||
 | 
					                it.remove();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                for (PositionVector.Direction direction : directions) {
 | 
				
			||||||
 | 
					                    temporary.add(current);
 | 
				
			||||||
 | 
					                    temporary.get(temporary.size() - 1).takeDirection(direction);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //ab hier zu löschen
 | 
				
			||||||
 | 
					        for (tryOutPaths paths : possiblePaths){
 | 
				
			||||||
 | 
					            for (PositionVector.Direction direction : directions) {
 | 
				
			||||||
 | 
					                temporary.add(paths);
 | 
				
			||||||
 | 
					                temporary.get(temporary.size() - 1).takeDirection(direction);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //bis hier löschen
 | 
				
			||||||
 | 
					        possiblePaths.clear();
 | 
				
			||||||
 | 
					        possiblePaths.addAll(temporary);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public PositionVector.Direction nextMove() {
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    public class tryOutPaths {
 | 
				
			||||||
 | 
					        ArrayList<PositionVector.Direction>  directionsTaken = new ArrayList<>();
 | 
				
			||||||
 | 
					        PositionVector currentPosition;
 | 
				
			||||||
 | 
					        Track track;
 | 
				
			||||||
 | 
					        private boolean feasible;
 | 
				
			||||||
 | 
					        private boolean finished;
 | 
				
			||||||
 | 
					        public tryOutPaths(Track track){
 | 
				
			||||||
 | 
					            this.track = track;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public boolean isFeasible(){
 | 
				
			||||||
 | 
					            return feasible;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public void takeDirection(PositionVector.Direction direction) {
 | 
				
			||||||
 | 
					            if(directionsTaken.size() >= 50){
 | 
				
			||||||
 | 
					                feasible = false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else if(finished){
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                //check if possible eventuell hier??
 | 
				
			||||||
 | 
					                directionsTaken.add(direction);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue