28 votes

Trajectoire optimale (par longueur)

En supposant un espace de jeu de N par N carrés, avec des tours et des ennemis occupant une zone de 1x1, quelle est la configuration optimale du labyrinthe pour obliger les ennemis à parcourir la plus grande distance globale dans le labyrinthe de N par N carrés ?

16voto

Martin C. Martin Points 1145

En supposant que l'on commence dans le coin supérieur gauche et que l'on termine dans le coin inférieur droit, le chemin le plus long possible sera un chemin qui zigzague sur toute la carte du nord au sud ou de l'est à l'ouest. Pour m'amuser, j'ai écrit le programme récursif suivant pour trouver le chemin le plus long et produire un résultat. Il aboutit à cette solution, quelle que soit la taille, le poids et la hauteur que vous entrez :

Notez cependant que cela ne signifie pas que le chemin le plus long est en fait une stratégie optimale dans les jeux de type défense à tourelle, car vous devez prendre en compte des éléments tels que le coût des tours et les mises à niveau. Le plus souvent, la meilleure situation consiste simplement à forcer les unités à se rassembler autant que possible dans une zone de combat. Cela devient encore plus compliqué lorsque vous tenez compte de facteurs tels que les tours de ralentissement. Voici quelques exemples de résultats :

# = wall
. = path
N = start
O = end

Width = 10, Height = 5
N#...#....
.#.#.#.##.
.#.#.#.#..
.#.#.#.#.#
...#...#.O

Width = 10, Height = 10
N#...#....
.#.#.#.##.
.#.#.#.#..
.#.#.#.#.#
.#.#.#.#..
.#.#.#.##.
.#.#.#.#..
.#.#.#.#.#
.#.#.#.#.#
...#...#.O

@Raven Dreamer

Oui, je réalise ce dernier cas limite, je ne sais pas pourquoi il ne fait pas encore cette dernière optimisation, mais j'ai modifié mon code pour inclure une entrée/sortie mobile. Voici un exemple de génération d'une entrée centrale :

...#...#...#...##...
.#.#.#.#.#.#.#.##.#.
.#.#.#.#.#.#.#.##.#.
.#.#.#.#.#.#.#.##.#.
.#.#.#.#.#.#.#.##.#.
.#.#.#.#.#.#.#.##.#.
.#.#.#.#.#.#.#.##.#.
.#.#.#.#.#.#.#.##.#.
.#.#.#.#.#.#.#.##.#.
.#.#.#.#.#.#.#.##.#.
N#.#.#.#.#.#.#.##.#O
#..#.#.#.#.#.#.##.##
..#..#.#.#.#.#.##.## <---
.#..#..#.#.#.#.##.## <---
.#.#..#..#.#.#.##.## <---
.#.#.#..#..#.#.##.## <--- need optimization here
.#.#.#.#..#..#.##.## <---
.#.#.#.#.#..##..#.## <---
.#.#.#.#.#.####.#.## <---
...#...#...####...## <---

J'ai supprimé mon programme depuis que j'ai trouvé la source de l'erreur, je mettrai une version fonctionnelle plus tard, mais cela va demander un peu de réécriture. La réponse reste cependant inchangée, le chemin le plus long n'est pas si intéressant, mais c'était un exercice de programmation amusant.

6voto

Arkive Points 11181
N = 10
Path Length = 61
Towers = 30
N#...#....
...#.#.#..
..#..#..#.
.#..#..#..
#..#..#..#
..#..#..#.
.#..#..#..
.#.#..#...
.#.#.#..#.
...#...#.O

Cette conception diagonale utilise moins de tours que la conception verticale traditionnelle et donne une longueur de chemin légèrement supérieure pour N = 10. Pour N = 9, je n'ai pas été en mesure de produire un chemin plus long que l'approche verticale.

Je n'ai pas testé d'autres cas que N = 9, 10 et 12, mais je pense que pour N = 1 + 4x, où x est un nombre entier > 0, l'approche verticale donnera la longueur de chemin maximale, mais pas nécessairement le nombre de tours le plus bas.

Plus d'enquête :

  • Entrée/sortie au milieu
  • Pour quelles valeurs de N cette approche diagonale est-elle plus efficace ?
  • Identification des stratégies combinatoires
    • L'approche ci-dessus utilise des murs diagonaux avec des segments verticaux dans les coins NE et SO.

6voto

Majenko Points 31077

C'est ma construction préférée. C'est une construction en spirale. Il est 190x. et 156x# Sa principale force est que les creeps tournent autour du milieu, donc vous pouvez investir tout votre argent dans quelques tours fortes et les mettre au milieu de votre labyrinthe.

..................#O
.################.#.
.#..............#.#.
.#.############.#.#.
.#.#..........#.#.#.
.#.#.########.#.#.#.
.#.#.#......#.#.#.#.
.#.#.#.####.#.#.#.#.
.#.#.#.#....#.#.#.#.
.#.#.#.#.####.#.#.#.
.#.#.#.#......#.#.#.
.#.#.#.########.#.#.
.#.#.#..........#.#.
.#.#.############.#.
.#.#..............#.
.#.################.
N#..................

1voto

Sur des jeux comme le tower defense de bureau où il y a une entrée en haut et à gauche, une ligne diagonale du haut à gauche vers le bas à droite avec un espace en bas à droite, avec des lignes de chaque côté parallèles avec un espace en haut à gauche répété est le meilleur, car tous les rampants passent devant chaque tour, et en améliorant le peu de centre tous les rampants volants passeront devant les meilleures tours.

1voto

Eric D. Smith Points 11

Est-ce que l'on suppose que les murs/tours/obstacles sont placés de façon permanente ? Si non, vous pouvez essayer jonglerie .

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X