private void step() {
        Random random = new Random();

        // Akadályok ellenőrzése
        for (Enemy enemy : gameElements.enemies) {
            Blockage blockage = null;
            for (Blockage block : gameElements.blockages) {
                if (enemy.getPosition().distance(block.getPosition()) < block.getRange()) {
                    blockage = block;
                }
            }

            // Kell-e lépnie az ellenséges egységnek ebben a körben
            if ((ticks % enemy.getSpeed(blockage) == 0)){
                // Megnézzük melyik úton van rajta
                List<Line2D> roads = new ArrayList<Line2D>();
                for (Path path : gameElements.map.getPaths()) {
                    // Visszafelé iterálunk, hogy az előbbre lévő utat találjuk meg az utak csatlakozásánál
                    for (int i = path.getRoads().size(); i > 0; i--) {
                        Line2D road = path.getRoads().get(i - 1);
                        if (enemy.getPosition().distanceFromRoad(road) == 0) {
                            roads.add(road);
                            // Találtunk már utat az útvonalon
                            break;
                        }
                    }
                }

                // Véletlenszerűen választunk egy útat, ami mentén mozgatjuk
                if (!roads.isEmpty()) {
                    Line2D road = roads.get(Math.abs(random.nextInt() % roads.size()));
                    enemy.move(Path.getDirection(road));
                }
            }
        }
    }