Výsledky 4. kola .NET Challenge

Tomáš Jecha, MVP, MCSD       16.12.2008       Offtopic       10617 zobrazení

Komentáře poroty k řešení z 4. kola

Soutěž .NET Challenge je za námi. Skončilo její poslední kolo, v němž měli soutěžící za úkol napsat buď vlastní desktopovou aplikaci malování po vzoru Microsoft Paint nebo (těžší úloha) hledání min pro webové prohlížeče. Celkem se nám sešlo 14 řešení od 10 lidí (7 řešení lehké úlohy, 7 řešení těžké a z toho 4 poctivci vypracovali obě).

Výsledky 4. kola soutěže .NET Challenge

 

Lehká úloha – Malování

Výsledková listina úlohy Malování

Každý zná malování. Každý ho alespoň jednou použil. Ale ne každý si pokusil malování naprogramovat sám… V .NET Challenge se vás o to pokusilo 7. Z toho dva si vzali na pomoc WPF, ostatní se spokojili se starým dobrým GDI+.

Praktický každý něčím překvapil. U jednoho to bylo MDI (víc otevřených dokumentů najednou), u druhého nástroj výběr (přesunování vybrané plochy) a další zase pluginovým systémem nástrojů nebo lupou.

K samotnému vykreslování jste využili většinou GDI+, tam moc algoritmizace není. Podle mě ale asi nejpalčivějším problémem bylo již zminěné “pluginování”. Pokud se má jádro udržet čisté, je potřeba nabídnout dostatečně komfortní rozhraní pro psaní vlastních nástrojů (se kterými pochopitelně můžete psát i ty základní). Jak ale něco takového udělat? Uživatel by měl mít tyto možnosti:

  • zvolit si nástroj v panelu nástrojů
  • nastavit nástroji parametry, pokud nějaké má
  • nabídnout interakci s kreslícím plátnem a reagovat na akce myši

Osobně se mi zdá jako nejlepší řešení napsat knihovnu jádra, jenž si zareferencuje každý plugin. Mimo jiné poskytne jádro základovou třídu pluginu a interface kreslící plochy (ten implementuje hlavní aplikace a bude ho předávat pluginům, ty díky tomu získají funkce pro vykreslování a odchytávání událostí myši). Nakonec je tu zařazení do panelu nástrojů a nastavení. To jde celkem snadno (plugin má vlastnost “JménoPluginu” a “IkonkaPluginu” a hlavní program všechny projde a přidá do nabídky, popřípadě se tam přidá sám při inicializaci nástroje. Trochu složitější to je s nastavováním. Tam bych volil buď využití podědění z ovládacího prvku formulářové aplikace (UserControl) a jeho upravení podle potřeby. Jeho istanci pro vložení do okénka s nastavením obstará opět třída dědící abstraktní základ pluginu. Do takové míry to však dopracovat jen jediný soutěžící (nastavování nástroje udělal trochu jinak, než jsem popsal, ale jinak je systém stejný).

Trochu jsme se divili, že prakticky nikdo neimplementovat takové ty běžné jednoduché filtry (rozostření, prohození barev atp.). Jejich psaní je docela zajímavé zpestření a není ani moc složité.

Bohužel jste zapomínali často na komentáře a tím jste si bodobě ublížili. Je to prostě jedno z hodnotících kritérií.

 

Těžká úloha – Hledání min

Výsledková listina úlohy Hledání min

Webové hledání min úplně nabízelo zpracování v Silverlightu. Také ho 5 řešilů ze 7 použilo. Zbylá dvě řešení využila postbacku a vygenerovaného pole do stránky (jako obrázek nebo tabulka tlačítek).

Co se týče algoritmů, tak skoro všichni postupovali podobně. Vygenerovalo se pole podle nastavených parametrů (počet min, rozlišení hracího pole) a v druhém kroku se zapsaly do prázdných polí čísla podle počtu okolních min. Při odkrývání se program do pole podíval, vyhlásil prohru / výhru, či jen zobrazil prázdné pole (+ odkryl všechny okolní prázdné). Nesmíme zapomínat, že v hledání min by nemělo být možné natrefit na minu v prvním kroku.

Rozhodujícím parametrem propracovanosti byla architektura návrhu a možnosti nastavení. Ideální bylo mít objekt, který reprezentoval celou hrací plochu a ten podle využité technologie zobrazovat na stránce. V nastavení potěší předvolby her (těžká, lehká atp.) nebo přímo konfigurovatelnost hrací plochy. Bodovou výhodu také přinesla implementace nejlepších časů (skore).

Co bude dál?

V současné době připravujeme závěrečné vyhodnocení výsledků, které vypublikujeme na stránkách soutěže VbNet.cz. O změnách budeme informovat elektronickou poštou. Prosíme, aby si všichni řešitelé ještě jednou zkontrolovali informace v profilu, ať nedojde k případným problémum při rozesílání cen.

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Výsledky 4. kola .NET Challenge

Bylo to fain zkusit si zas něco nového, bylo to dobré odreagování od programování PLCéček, i když jsem byl nucen to dělat po večerech, když jsem uspal děti:-)

Velký obdiv pořadatelům, že to vůbec zvládli všechno zkontrolovat.

Tomáš Vacek

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

Diskuse: Výsledky 4. kola .NET Challenge

Taky díky za uspořádání soutěže. Po škole není moc nálada na učení, tak jsou takovéhle "malé" úlohy příjemné povyražení, zvlášť když se při nich člověk konečně přinutí použít takové pěkné věci jako Silverlight, WPF, WCF...

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

Diskuse: Výsledky 4. kola .NET Challenge

Taky díky za uspořádání soutěže. Po práci není moc nálada psát nějaký větší hobby projekt, tak takovéhle malé úlohy jsou příjemné povyražení :)

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

Diskuse: Výsledky 4. kola .NET Challenge

Bylo to příjemné povyražení a v rámci těch osmi úloh jsem si osvěžil řadu věcí, které mi zatím ještě v práci na stůl jakožto zadání nedorazily :-). Díky za uspořádání soutěže, doufám, že příští rok bude opět něco podobného, moc jsem se při tom bavil a už se těším na ceny :-).

-Laďa Valík

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.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • 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