

miny - zobrazení "prázdných" sousedních políček
Dobré odpoledne.
Chtěl jsem se zeptat, jak udělat, že když kliknu na prázdné políčko (myslím takové, které neudává počet min v okolí), tak se mi zobrazí všechny sousední takováto políčka? Radši to ještě upřesním obrázkem - na červeně začmárané políčko jsem kliknul a chci, aby se zobrazily všechny sousední "prázdná" políčka + jedno sousední udávající počet min v okolí:
http://img230.imageshack.us/my.php?image=minyvk2.gi f
Díky.
V princípe ide o to, že kliknutie na prázdne políčko má za následok to isté, ako keby sa súčasne kliklo aj na všetky susediace políčka.
Môžeš to riešiť rekurziou, alebo použiješ efektívnejší front/zásobník, prípadne sa pozrieš po nejakom fill algoritme, napr. Flood fill alebo Quick fill.
Princip je mi jasný, ale nedokážu to "říct" počítači. Nenaznačil by si mi prosím ten postup pomocí zásobníku?
Zkusím nejdřív já
....mám tedy nějaký zásobník, kam si napoprvé uložím políčko na které jsem kliknul -> ověřím, jestli má kolem sebe "prázdná" políčka a pokud ano, tak je uložím do zásobníku -> a takhle postupně než dojde k momentu, kdy už v zásobníku nic nebude = kolem políček nebudou další volná. Chápu to správně?
Zasobnik (stack) je nieco ako kopa (alebo skor "stlpec") z ktoreho mozes brat len z vrchu (to co si tam polozil ako posledne).
len susedov ktori prichadzaju do uvahy.
Princip si napisal vpodstate spravny. Naukladas si tam vsetkych susedov ktori prichadzaju do uvahy, a potom vyberas z vrchu zasobnika po jednom a ak to ma dalsich susedov tak ich zas naukladas do zasobnika. Samozrejme poziciu ktoru prave vysetrujes uz do zasobnika neukladas ptz. by sa to zacyklilo
Ak si na policku ktore nie je prazde (je v nom nejake cislo) tak neukladas do zasobnika nic.
P.S. ale pozor aby si si neukladal do zasobnika pole ktore si uz vysetroval resp ktore su uz "odkryte") ptz sa ti to zacykli. //edit: k tomu este doplnim ze do zasobnika ukladaj uz vysetrene (odkryte) pozicie, t.j. vysetruj vsetkych susedov pred ukladanim do zasobnika, lebo inac to nebude efektivne prip. sa to uplne zacykli.
Jednoduchsie je pouzit rekurziu. Nastuduj si aj algoritmy na ktore ti dal linky los.
To máš pravdu s tím zacyklením...musím si dát majzla, bych ověřoval pořád dokola.
Děkuju všech za odpovědi, myslím, že mě to nasměrovalo lepším směrem a dám to už dohromady. Kdyby ne, tak se zeptám.
Zatím se mějte.
Presne tak. Dokonca pri ukladaní na zásobník nemusíš nič overovať, stačí, že to overíš až pri spracovaní políčka zo zásobníka.
Napr. úplne primitívna implementácia by mohla vyzerať nejako takto:
Díky los. Už se mi to povedlo pomocí fronty.