DEV Community

Cover image for Javascript SVG Maze Generator
owieczka
owieczka

Posted on

Javascript SVG Maze Generator

๐‹๐š๐›๐ข๐ซ๐ฒ๐ง๐ญ๐ฒ ๐ญ๐จ ๐Ÿ๐š๐ฌ๐œ๐ฒ๐ง๐ฎ๐ฃฤ…๐œ๐ž ๐ฌ๐ญ๐ซ๐ฎ๐ค๐ญ๐ฎ๐ซ๐ฒ, a ich generowanie moลผe byฤ‡ wrฤ™cz ๐ก๐ข๐ฉ๐ง๐จ๐ญ๐ฒ๐ณ๐ฎ๐ฃฤ…๐œ๐ž

Istnieje wiele algorytmรณw tworzenia labiryntรณw, takich jak ๐ƒ๐…๐’ (๐ƒ๐ž๐ฉ๐ญ๐ก-๐…๐ข๐ซ๐ฌ๐ญ ๐’๐ž๐š๐ซ๐œ๐ก), ๐๐ซ๐ข๐ฆ๐ฌ ๐€๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ czy ๐‘๐ž๐œ๐ฎ๐ซ๐ฌ๐ข๐ฏ๐ž ๐๐š๐œ๐ค๐ญ๐ซ๐š๐œ๐ค๐ข๐ง๐ . Jednym z najprostszych i najbardziej satysfakcjonujฤ…cych jest wล‚aล›nie ๐‘๐ž๐œ๐ฎ๐ซ๐ฌ๐ข๐ฏ๐ž ๐๐š๐œ๐ค๐ญ๐ซ๐š๐œ๐ค๐ข๐ง๐ , znany jako ๐š๐ฅ๐ ๐จ๐ซ๐ฒ๐ญ๐ฆ ๐ค๐จ๐ฉ๐š๐ง๐ข๐š ๐ญ๐ฎ๐ง๐ž๐ฅ๐ข.

Dziaล‚a on wedล‚ug kilku podstawowych krokรณw:
๐Ÿ”นRozpoczyna siฤ™ od losowego punktu.
๐Ÿ”นKopie tunel w kierunku nieodwiedzonych sฤ…siadรณw.
๐Ÿ”นCofanie nastฤ™puje wtedy, gdy nie ma dostฤ™pnych ล›cieลผek.

Najlepszym sposobem wizualizacji procesu tworzenia labiryntu jest pokazanie jego stopniowego powstawania i rozwoju. W idealnym przypadku moลผna by wykorzystaฤ‡ grafikฤ™ ลปรณล‚๐ฐ๐ข๐š (#Turtle), ktรณra ล›wietnie nadaje siฤ™ do procedur graficznych. Niestety, w ล›rodowisku webowym nie ma natywnego wsparcia dla tej techniki. ๐๐š ๐ฌ๐ณ๐œ๐ณฤ™ล›๐œ๐ข๐ž ๐’๐•๐† ๐จ๐Ÿ๐ž๐ซ๐ฎ๐ฃ๐ž ๐ค๐ซ๐ณ๐ฒ๐ฐ๐ž ๐ข ๐ž๐ฅ๐ž๐ฆ๐ž๐ง๐ญ๐ฒ ๐๐€๐“๐‡, ๐ค๐ญรณ๐ซ๐ž ๐ฉ๐จ๐ณ๐ฐ๐š๐ฅ๐š๐ฃฤ… ๐ง๐š ๐ฉ๐ซ๐จ๐œ๐ž๐๐ฎ๐ซ๐š๐ฅ๐ง๐ž ๐จ๐ฉ๐ข๐ฌ๐š๐ง๐ข๐ž ๐ ๐ซ๐š๐Ÿ๐ข๐ค๐ข ๐ข ๐ฃ๐ž๐ฃ ๐๐ฒ๐ง๐š๐ฆ๐ข๐œ๐ณ๐ง๐ž ๐ ๐ž๐ง๐ž๐ซ๐จ๐ฐ๐š๐ง๐ข๐ž.

Zobaczcie sami, jak ล‚atwo moลผna stworzyฤ‡ wล‚asny, hipnotyzujฤ…cy labirynt za pomocฤ… #JavaScript i #SVG
https://codepen.io/owcakw/pen/dPPmoBQ

Jeล›li potrzebujesz pomocy ze swoim projektem, albo masz pomysล‚ ale nie wiesz jak to zrealizowaฤ‡, ๐ณ๐ ล‚๐จล› ๐ฌ๐ขฤ™ ๐๐จ ๐ง๐š๐ฌ, na pewno pomoลผemy.


๐Œ๐š๐ณ๐ž๐ฌ ๐š๐ซ๐ž ๐Ÿ๐š๐ฌ๐œ๐ข๐ง๐š๐ญ๐ข๐ง๐  ๐ฌ๐ญ๐ซ๐ฎ๐œ๐ญ๐ฎ๐ซ๐ž๐ฌ, and watching them being generated can be ๐ก๐ฒ๐ฉ๐ง๐จ๐ญ๐ข๐œ.

There are many algorithms for maze generation, such as ๐ƒ๐…๐’ (๐ƒ๐ž๐ฉ๐ญ๐ก-๐…๐ข๐ซ๐ฌ๐ญ ๐’๐ž๐š๐ซ๐œ๐ก), ๐๐ซ๐ข๐ฆโ€™๐ฌ ๐€๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ, and ๐‘๐ž๐œ๐ฎ๐ซ๐ฌ๐ข๐ฏ๐ž ๐๐š๐œ๐ค๐ญ๐ซ๐š๐œ๐ค๐ข๐ง๐ . One of the simplest and most satisfying methods is ๐‘๐ž๐œ๐ฎ๐ซ๐ฌ๐ข๐ฏ๐ž ๐๐š๐œ๐ค๐ญ๐ซ๐š๐œ๐ค๐ข๐ง๐ .

It follows a few basic steps:
๐Ÿ”นStarts from a random point.
๐Ÿ”นDigs tunnels toward unvisited neighbors.
๐Ÿ”นBacktracks when no paths are available.

The best way to visualize the maze creation process is by showing its gradual formation and growth. Ideally, #Turtle Graphics would be a great tool for this, as they are perfect for procedural drawing. However, the web environment lacks native support for turtle-based graphics. ๐…๐จ๐ซ๐ญ๐ฎ๐ง๐š๐ญ๐ž๐ฅ๐ฒ, ๐’๐•๐† ๐ฉ๐ซ๐จ๐ฏ๐ข๐๐ž๐ฌ ๐œ๐ฎ๐ซ๐ฏ๐ž๐ฌ ๐š๐ง๐ ๐๐€๐“๐‡ ๐ž๐ฅ๐ž๐ฆ๐ž๐ง๐ญ๐ฌ ๐ญ๐ก๐š๐ญ ๐ž๐ง๐š๐›๐ฅ๐ž ๐ฉ๐ซ๐จ๐œ๐ž๐๐ฎ๐ซ๐š๐ฅ ๐ ๐ซ๐š๐ฉ๐ก๐ข๐œ๐ฌ ๐๐ž๐ฌ๐œ๐ซ๐ข๐ฉ๐ญ๐ข๐จ๐ง๐ฌ ๐š๐ง๐ ๐๐ฒ๐ง๐š๐ฆ๐ข๐œ ๐ ๐ž๐ง๐ž๐ซ๐š๐ญ๐ข๐จ๐ง.

See for yourself how easy it is to create your own hypnotic maze using #JavaScript and #SVG!
https://codepen.io/owcakw/pen/dPPmoBQ

If you need help with your project, or you have an idea but you don't know how to implement it, and you need help, ๐ฐ๐ซ๐ข๐ญ๐ž ๐ญ๐จ ๐ฎ๐ฌ ๐š๐ง๐ ๐ฐ๐ž ๐ฐ๐ข๐ฅ๐ฅ ๐ก๐ž๐ฅ๐ฉ ๐ฒ๐จ๐ฎ!!.

saas #software #javascript #owieczka #css #web #webdevelopment #code #softwarehouse #developer #maze #algorithm

Top comments (1)

Collapse
 
michael_liang_0208 profile image
Michael Liang

Interesting post.