Pohyb v poli   zodpovězená otázka

VB.NET

Dobrý den,

potřeboval bych poradit jak v poli zjistit zda:

1. existuje určitá cesta a které prvky obsahuje

2. popřípadě zda je nemožné cestu sestavit

http://img545.imageshack.us/i/schema.png...

BOD 1:

mám vyřešen způsobem, že zjistím co je na daných souřadnicích za prvek(číslo prvku), a následně pomocí předem daných kritérií posunu aktuální pozici na následující souřadnice kde krok opakuji.

Př. chci se dostat z pole(0,1) do pole(7,0) - (rozměry pole nejsou pevné, proto nemohu vycházet z toho že pokud se dostanu na konec pole... a druhá věc je že nemusím cestu hledat od kraje do konce)

moje řešení:

zjistím jestli jsou souřadnice počáteční X rovno koncovému X,

pak pomocí

WHILE (aktualni X <> cilove X) or (aktualni Y <> cilove Y)

provádím kontrolu prvků a postupuji po rovných tak dlouho dokud nenarazí na odbočku, která dovolí posun směrem k cílovému X, pak opět postupuje po rovných dokud nenarazí na odbočku... celé se to opakuje dokud nedosáhne cílového X, pak se vypíší prvky přes které cesta vedla

BOD 2:

to právě nevím jak udělat, pokud by byl cíl v oblasti, kam nevede cesta

pokud bych měl startovní souřadnice pole(7,1) a cílové pole(1,0)tak je cesta neproveditelná, ale WHILE mi zacyklí program...

můžete mi poradit,prosím?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkus se porozhlédnout po implementaci Algoritmu "A" ve vb.netu. Je určen pro hledání nejkratší cesty mezi dvěma body v poli. Používá se dosti často například ve flashových skákačkách a bludištích.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

např. http://www.codeproject.com/KB/recipes/Di...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Doporučuji každou kostičku v poli reprezentovat nějakým objektem. Pak můžete mít třídy pro jednotlivé typy políček, které dědí ze společného předka.

Kód pro hledání cesty, který je jednoduchý (algoritmus vyhledávání do šířky, pro implementaci fronty použijte v .NETu třídu Queue), bude daleko jednodušší než když v poli políček budete mít integery a uvnitř algoritmu šílenou smečku ifů.

Třída pro každé políčko bude mít metodu GetNeighbourFields, která vrátí kolekci sousedních políček.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

mohl bych Vás poprosit o nějaký inspirující odkaz, popř. kousek kódu(abych získal představu)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback