private void startCalculation() {
        if (Core.currentGame.getPlayerPos() == null) {
            System.err.println("No player!");
            return;
        }
        if (Core.currentGame.getGoalPos() == null) {
            System.err.println("No Goal!");
            return;
        }

        PathfinderAlgorithmus<Point> algorithm = null;
        switch (this.algorithmType.getSelectionModel().getSelectedIndex()) {
            case 0 :
                algorithm = new StandardAStar();
                break;
            case 1 :
                algorithm = new HeapAStar();
                break;
            case 2 :
                algorithm = new HeapAndHashAStar();
                break;
            case 3 :
                algorithm = new HeapAndHashAndBufferedAStar();
                break;
        }
        this.canvas.draw(Core.currentGame);
        GameGraph graph = new GameGraph(Core.currentGame);
        LocalTime now = LocalTime.now();
        List<Point> findWay = graph.findWay(Core.currentGame.getPlayerPos(), Core.currentGame.getGoalPos(), algorithm);
        LocalTime after = LocalTime.now();
        Duration duration = Duration.between(now, after);
        this.timeLabel.setText("Dur: " + duration.toString());
        if (findWay == null) {
            System.err.println("No way found!");
            return;
        }
        this.canvas.drawPath(findWay);
    }