Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
BF extended 2022

Algoritmus na vygenerování 2D hrací plochy

Nedávno jsem narazil na problém, jak náhodně vygenerovat nějakou 2D hrací plochu pro hru například Sokoban a podobné. Nechtěl jsem žádné čtverec s nějakýma překážkami, chtěl jsem automaticky generovanou ohraničenou plochu ve 2D. Chvíli jsem hledal na internetu jak a co, a nenašel jsem nic, protože jsem ani nevěděl pod čím hledat.

Tak jsem vymyslel vlastni jednoduchý algoritmus, který toto splňuje. Kód je napasaný v C#, není zde použitýho nic složitého. Nejsložitější věc, kromě samotného nápadu je List :D

Nápad byl lehce vylepšený (generuje vodu dvou stupňů - neprůchozí a průchozí)a bylo mu přidáno jednoduché grafické rozhraní a větší možnost generování. Umí to nagenerovat více místností (jeskyně), a obsahuje mod alternative který spoji všechny jeskyně které jdou normálně projít do jedné velké. Všechno je to uložení stále ve 2D poli tudíž lze exportovat.

Upraveno do soutěže machr na algoritmy - dungeon generátor

V další lekci, Generování náhodného bludiště, si popíšeme algoritmus pro generaci náhodného bludiště.


Galerie

Program byl vytvořen v roce 2013.

 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 328x (135.25 kB)
Aplikace je včetně zdrojových kódů

 

Všechny články v sekci
Algoritmy pro bludiště
Přeskočit článek
(nedoporučujeme)
Generování náhodného bludiště
Program pro vás napsal martinsakra
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Autor programuje v C# a Javě + dělá v Unity3D
Aktivity

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!