Diskuze: Machr na OOP - Robot Karel
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Vlastník

Zobrazeno 50 zpráv z 50.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Ano, evidujeme kdo má jaké placky, až se dostanu k implementaci, tak to tam přidám.
Veľkosť 2D poľa má byť 10x10, ako je v ukážke?
Musí to posouvání být jako v té ukázce? Myslím to, že třeba jednou za sekundu udělá krok pak po sekundě zabočí atd.
když to pojede najednou tak jak pak implementovat debuger?
Nevím co máš na mysli. Je jedno jestli bude vykonávat příkazy hned nebo s nějakým sleep/timerem, na implementaci to nic nemění.
Mé řešení:
myslel jsem debuger že si na přání pozastavíš běh programu.
Ma to podporovat len tie 4 zakladne prikazy alebo aj ostatne?
http://mormegil.wz.cz/…prog_doc.htm
Stačí jen ty 4. Samozřejmě pokud to uděláš rozšířenější, máš vyšší šanci na výhru.
Musíme si hrát s grafikou výstupu? Nebo stačí nějak vybarvit políčka v tabulce?
...nějakým způsobem (klidně v textovém režimu)...
Myslím si, že je to snad jasné.
Je ale pak máš dělat pingátor (machr na php). A najednou design...
Ne, to je dobrý. ;D
To bylo před měsícem
Jsem tu kvůli Tobě prohledal celé fórum a hledal novou soutěž a zároveň
se divil, že by byly tento týden 3.
Já vím, Proto jsem
psal "Ne, to je dobrý
".
Protože se mi to něchtělo vysvětlovat. Já myslel to že ta soutěž byla
podle zadání hlavně zaměřená na kód, ale pak se řeklo, že ten kdo bude
mít hezčí design má větší šanci.
no pokud to chceš dělat proměnnými, tak klidně asi můžeš.
string policko1_1
string policko1_2
string policko1_3
...
// Ale to nebude moc OOP.
Myslel jsem to ještě jinak, ale říkat to tady nebudu .
prostě karel si tam může položit kolik chce.
Opravil jsem pár chybiček a přidal příkaz vpravo-vbok. Ovšem syntax je velice volný. Nechce se mi prozrazovat vyčůranost provedení, tak jen napíši, že v příkazu nezáleží na velikosti písmen, jaký znak použijete mezi vlevo/vpravo a vbok atd.
A v jakym jazyce to budeš dělat?
//Teda pokud to budeš dělat .
Momentálně to vypadá takto - http://karel.filippyrek.cz/
"Program si načte sérii příkazů z textového souboru a ty nechá robotem
postupně vykonat." Tak jak sdraco napsal ;D
Pokud sem budeš psát takové nesmysly, tak budeš z vlákna vykázán. Program dělá to, co má.
Omlovám se - nevšiml jsem si, že Karel není na začátku.
Já jsem to pochopil tak, že se to vykonává na serveru, a nyní se snaží o provedení v JS a proto je tam ten neexistující odkaz:
To neřeš to jsem tam zapomněl
// Lepší?
Ale mohl by jsi to udělat v JS... (pohyb Karla) A tu tabulku nechceš udělat nějak lépe? A úplná blbůstka - když už máš ten HTML5, tak zkus meta charset...
Game Maker sice neoplývá kdovíjakými vymoženostmi,
ale základy OOP obsahuje. Zkusil jsem napsat robota
a myslím, že se celkem povedl.
Jo, přejmenoval jsem ho, jmenuje se Andy.
http://ulozto.cz/…7Nf/andy-exe
Návod:
shift při startu nebo restartu (R) umožňuje zvolit:
shift při počátečním umisťování robota
umožňuje zvolit soubor s příkazy
( jinak se použije soubor prikazy.txt v adresáři programu )
F9 screenshot
SPACE spustí vykonávání příkazů v souboru
seznam příkazů (case sensitive)
POLOZ
KROK
VLEVO-VBOK
ZVEDNI
( chybné příkazy se ignorují)
Pozn: vlevo vbok se provádí jako nastavení směru
tzn. robot se reálně točí zrcadlově podle směru pohybu
Tak mi to nedalo, přidal jsem příkaz výstřel (vystřel, vystrel, vysTRel,...) - co to udělá je asi jasné... Dále program vezme všechny soubory s koncovkou karl v Directory.GetCurrentDirectory().
Tak přidávám svůj výtvor: http://misaz.wz.cz/…r-na-oop.zip . Je tam nápovšda, tak to určitě pochopíte. Nakonec semi povedlo zprovoznit i debuger. V obrázcích níže je screenshot a OOP návrh (diagram) na kterém je vidět jak jsou propojené třídy.
a ještě poslední oprava http://misaz.wz.cz/…a-oop1.1.zip
příkaz vlevo-vbok otáčel Karlem naopak.
Možná hloupý dotaz, ale co všechno a jak mám odevzdat?
Hodíš sem link na zdrojové kódy projektu a ideálně i na spustitelnou verzi.
Už jsem poslal SZ, ale tak pro všechny:
https://dl.dropboxusercontent.com/…57_Karel.rar
Je to zkompilováno pro x64.
Grafický výstup už jsem zpracovat nestihl, takže to jsem tam jen nějak
naflákal
Jinak program se vypíná tak, že se napíše neplatný příkaz
Tak jsem si to vše projel. Aplikace to nejsou špatné, ale soutěž je zaměřena na návrh, kterým programy bohužel příliš nevynikají.
Očekával jsem, že mi ukážete, jak umíte polymorfismus (Vykresli
implementuje každý předmět), dědičnost (např. HerniObjekt -> Karel),
že uděláte příkazy jako samostatné třídy proti nějakému rozhraní
(IPrikaz) a podobně. To jsem ve vašich programech bohužel nenašel a místo
toho jsou plné switchů a cyklů
TomBen - Zajímavý pokus, jak je vidět, v GM většina
věcí také nějak jde Moc se
v tom ale nevyznám, je to takové špagetové, třeba že je načítání
příkazů v obejktu políčka.
p4koo - Políčko může mít jen 1 předmět. Implementace mi přijde taková zmatená, hlavně rozhraní ICommand, od kterého bych očekával spíše že definuje jak má vypadat jeden příkaz. U těch vnořených fields jsem se také nějak ztratil.
Misaz - Tohle je taková implementace, kde návrh dává asi největší smysl, i když by to šlo hodně, hodně vylepšit. Kdyby jsi použil polymorfismus a dal Kresli() do každého objektu, vyhl by jsi se switchi v kresliči. Bohužel toto nenapadlo nikoho, i když se jedná o základní principy OOP. Pomocí reflexe bys úplně odstranil další nepříjemný switch v interpreteru. Chybí mi dědičnost (TypPolicka je v objektové aplikaci nesmyslný, k tomu je přeci zjištění typu instance) a přijde mi zvláštní, že je mapa atributem Karla, naopak on by měl být součástí mapy.
matesax - Načítání mapy je přímo v program.cs, jediné pole jsem nalezl jen ve třídě Marks a to je ještě statické. S přidáním dalšího objektu na políčko bys začal mít problémy. Střílení je zajímavé, ale nebylo součástí zadání.
Lubos857 - Dávat v objektově orientovaném programu do
pole čísla není to pravé ořechové Zkompilovaná verze mi vyhodila chybu s nějakým dll. Kód na mě
působí spíše procedurálně, ačkoli se tváří jako objektový. Je to
samé větvení a cykly, např. v metodě draw jich je prostě moc.
FilipPyrek - Program se mi moc líbí, hlavně zabudovaný systém na podprogramy, který je elegantní a jednoduchý. Bohužel z objektového hlediska je to všechno v jedné třídě a nedá se moc mluvit o rozdělování odpovědnosti.
Růžovou placku Machr na OOP dnes získává Michal Žůrek - misaz.
Asi se pokusím na základě výsledků v této soutěži sepsat něco o OOP
a návrhu aplikací. Snad bude soutěž příště úspěšnější
Tak toto mě teda nenapadlo...
Nicméně díky, příště zkusím vylepšit.
Alespoň se všichni (nebo alespoň zúčastnění) snad poučili z nějakých chyb.
Mohl bych poprosit zkušenější o zhodnocení z hlediska návrhu ? http://leteckaposta.cz/291930236 - nejlépe tady, aby to
viděli všichni, ale klidně i PM
Zobrazeno 50 zpráv z 50.