Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Generovanie náhodného bludisko

Bludisko môže byť definované napr. Ako 2D pole hodnôt typu byte (alebo niečo podobne praktického), kde každý prvok tohto poľa predstavuje jedno políčko. Hodnoty políčok budeme potrebovať celkom tri:

  • Nič (voľne priechodné políčko)
  • Múr (nepriechodné políčko)
  • Základ (imaginárny, využije sa len pri generovaní bludisko)

Pripravíme si základ bludisko:
základ bludisko - Algoritmy pre bludisko

Dookola je múr, políčka s krížikom znamenajú hodnotu "základ".

Budeme potrebovať nejakú funkciu, ktorá nám spočíta, koľko základov ešte v bludisku zostáva (prechádzame pole políčko po políčku a počítame hodnoty Základ - nič ťažké).

Tvorba bludisko prebieha takto. Najskôr náhodne vyberieme jedno základovej políčko: spočítame základy, na výsledok použijeme funkciu Random, vyjde číslo dajme tomu n. Potom prechádzame bludisko po riadkoch tak dlho, až narazíme na n-tej základovej políčko:
náhodne vybranej základovej políčko - Algoritmy pre bludisko

Šípky znázorňujú štyri možné smery, ktorými môžeme viesť z políčka múr.

Teraz jeden z tých smerov náhodne zvolíme a začneme budovať múr. Všetky voľná a základová políčka, na ktoré narazíme, sa mení na stene. Skončíme, keď narazíme na inú stenu (preto musí byť bludisko na začiatku ohraničené, aby nám múry neutiekli okolo):
múracky - Algoritmy pre bludisko

Odtiaľ sa vrátime k náhodnému výberu základu a postavíme ďalšie stenu a tak stále dokola, až kým všetky základová políčka v bludisku nie sú zamurovaná:
nové políčko … - Algoritmy pre bludisko … a nová múr - Algoritmy pre bludisko hotové bludisko - Algoritmy pre bludisko

A to je celé.
Výsledné bludisko má niekoľko príjemných vlastností:

  • Medzi ľubovoľnými dvoma voľnými políčkami existuje vždy práve jedna možná cesta, ani viac, ani menej. To vyplýva z toho, že v bludisku nemôžu byť žiadne izolované "ostrovy" múrov, ktoré by neboli napojené na okraj.
  • Všetky políčka označené tu na obrázku bodkou budú zaručene vždy voľná, môžeme na ne teda podľa ľubovôle umiestniť štart, cieľ a ďalšie veci: voľná políčka - Algoritmy pre bludisko

Ak nám pripadá bludisko príliš ťažké na prejdenie, stačí na začiatku niekoľko náhodne vybraných základových políčok zmeniť na stenu - čím viac, tým jednoduchšie potom bludisko bude, pretože tým umožníme vznik izolovaných úsekov múrov, ktoré sa nedotýkajú okraje a idú teda obísť viacerými spôsobmi.

Ak máte radšej také bludisko, kde múry predstavujú tenké čiary na rozhraní medzi políčkami, nevadí. V pamäti počítača necháme bludisko uložené vo vyššie uvedenom formáte a modifikujeme iba procedúru, ktorá ho zobrazuje - nepárne riadky a stĺpce sa vykreslí ako čiary s nulovou šírkou, párne normálne ako štvorčeky.


 

Všetky články v sekcii
Algoritmy pre bludisko
Článok pre vás napísal Mircosoft
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor je amatérský pascalista, assemblerista a bastlíř. Profesionálně psal nebo píše v HLASM, Rexxu, Cobolu, ST, LAD, FBD, PHP, SQL, JS, Basicu a pár dalších jazycích, které kupodivu stále existují a používají se :-).
Aktivity