NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Jak si navrhnout projekt?

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
rachet
Člen
Avatar
rachet:23.10.2017 22:50

Zdravím,

chci vytvořit jednu aplikaci (nápad zhruba mám v hlavě), ale nechci začít bezhlavě programovat, proto se chci zeptat, jak si například vy rozvrhujete plán projektu, do jakých etap a tak podobně? Dost by mě to zajímalo, protože jsem dělal pouze malé projekty, kde mi stačila polovina A4 a plán už jsem měl zhruba hotový. Jednalo by se o hru, takže hádám, že by ten plán měl mít nějaký děj, postavy, prostředí a tak, ale to je asi vše co mě tak napadá.

 
Odpovědět
23.10.2017 22:50
Avatar
Tomáš Valenta
Brigádník
Avatar
Tomáš Valenta:23.10.2017 23:26

Ahoj. Když jsem dělal hry, tak jsem si nejdříve pořádně rozmyslel cíl hry a základní mechaniky. Většina lidí dělá tu chybu, že například začínají přemýšlet nejdřív na grafice, na příběhu, postavách nebo předmětech. Takže bych doporučoval udělat si ty mechaniky ( jako objekty nebo sprity pouzit krychle nebo ctverce) a az pote se zabyval grafikou a pozdeji pibehem atd.

Nahoru Odpovědět
23.10.2017 23:26
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:24.10.2017 9:25

Ideální je si vše rozdrobit na co nejmenší projektíky. Neříkám, abys pro jednu metodu vytvářel jednu třídu:), ale když máš projekt rozdělený na spousty částí, je to sice obsáhlejší, ale líp se debugguje.
Musíš se na to dívat objektově a uvidíš jak ti to půjde. Líbí se mi tvůj dotaz, protože jdeš na věc zodpovědně a chytře, tak ti dám malý example:
Třeba kdybys chtěl naprogramovat tetris:

  • nejdříve (jak to napsal už tomiuk) si musíš představit, jaký bude prvotní cíl hry (nikdy nepočítej s tím, že to, co si zmyslíš na začátku, že tak i dopadne:) )
  • třeba k tomu tetrisu: budu mít nějaké prostředí, ve kterém se budou skládat kostky na sebe a budu k tomu používat asi klávesnici. Do toho budu chtít nějaký counter na počítání skóre atd.
  • teď se ti to rozdrobilo na pár objektů - prostředí, kostky, posluchač, counter
  • vytvoříš si základní unit testy. Je dobré si naťukat vždy všechny metody, které používáš a aspoň zlehka si vždy vše otestuj. Když s tím začneš na začátku, bude se ti to zdát zbytečné. Za dva týdny intenzivní práce, až budeš mít nějaké výsledky, tak uvidíš, jak budeš rád, že tě třeba nějaký (teď na začátku zbytečný) test upozorní na logické chyby.
  • každou z těchto tříd si budeš programovat samostatně, takže si uděláš náčrt a hlavně (to nejpodstatnější) takový stručný výpis toho, co by měl každý z těch objektů umět. Je to dobré vědět hlavně kvůli tomu, abys věděl, jestli by se ti nehodila dědičnost z jiné třídy a naopak, nebo jestli není několik objektů založených na stejné funkci, takže bys mohl použít rozhraní (to je třeba i tento příklad - kostky, kdy bude mít každá sice jiný tvar, ale budou vykonávat to samé) atd. atd. prostě přemýšlíš nad využitím OOP
  • začni všechny třídy postupně programovat. Dobrá věc je, když každou třídu programuješ doopravdy maximálně nezávisle na ostatních třídách. Máš pak jistotu, že programuješ skutečně objektově:)

Takže si můžeš třeba vytvořit nějakou úplně jinou třídu, která s projektem vůbec nesouvisí a pak s touhle třídou testuješ ostatní třídy. Například v tomto tetrisu. Pro testování třídy prostředí netestuj z počátku konkrétní kostičku, ale vytvoř si úplně odlišnou komponentu a dej ji nějaký divný patvar. Pokud bude tato třída plnit podmínky rozhraní a prostředí ji tedy příjme, tak to už je pro tebe úspěch, pokud se chová tak, jak by se měla každá kostka chovat, i když graficky to bude nějak divné. - například když si místo kostky nakreslíš kužel nebo ufouna nebo (a to já obzvlášť doporčuju) nějaký asynchronní tvar. Když pracuješ se čtverečky a kolečky, často to svádí ke zbytečným chybám;) )

  • no a to nejpodstatnější na závěr. Pokud jde o školní nebo komerční projekt, radím všem, aby ještě před samotným spuštěním IDE, spustili nejdřív Word nebo nějaký jiný editor a začali s dokumentací. Lehká dokumentace jako úvod, generovaný obsah, kapitoly a rovnou si vytyčili nějaký plán, co kdy jak budu dělat. Pokud jde o soukromé projekty, je dobré si takový boďák dělat na tabuli případně na papír. Současně vždycky u každé metody, kterou kdy vytvoříš, tak si ji okomentuj. Ne tak, že napíšeš (tahle metoda vrací to a to). To pochopíš z názvu metody případně její funkce. Ale komentuj, proč a k čemu ta či ona metoda vlastně je.

Není to tak zbytečný krok - zvlášť, kdybys potřeboval v budoucnu pomoc nebo když si ten projekt otevřeš po měsíční pauze.
Komentář typu: /metoda nastaví atribut pocetObjektu, ve kterem si pamatuju, kolik objektu je v tetrisu/
A vím, na co ten atribut a ta metoda je. Ze začátku a hlavně když něco vytváříš, tak je ti jasné, k čemu to je, ale pokud nemáš v palici kvantový počítač s pamětí 10 tera a jsi jen člověk, uvidíš jak by ses v tom mohl po čase ztrácet. Ne vždy, ale ušetříš si tím prostě práci.

No a až budeš mít 20% projektu hotového - tím se myslí, že už si můžeš hru nějak zahrát, tak pak tě čeká zábavná část celého programování:)
Ladění, ladění, ladění, ladění, ladění, potom ještě následuje ladění a na závěr to vyladíš:)

Nahoru Odpovědět
24.10.2017 9:25
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:24.10.2017 9:32

Jo a ještě jedna poznámka.
Osobně se mi osvědčila dobrá věc. Pokud chceš najít co nejvíc chyb ve svém programu - dej to někomu na hraní. Zjisti, jestli se v tom programu orientuje nebo jestli třeba už na začátku bádá, jak program spustit, k čemu je tam to ono tlačítko a tak.
Někdy ti jiní uživatelé (nejlepší jsou právě takoví, kteří začnou řvát, že to nechtějí, protože tomu nerozumí:) - ti najdou nejvíc chyb)
najdou takové chyby, které by tě nikdy nenapadli, ale chyby to jsou. Příklad - když děláš kalkulačku, tak by tě nenapadlo, že tam někdo naťuká místo čísel písmena-.-

Nahoru Odpovědět
24.10.2017 9:32
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítač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.

Zobrazeno 4 zpráv z 4.