NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze: Machr na Javu - Objektová textovka

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

Aktivity
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:25.2.2013 21:53

Vážení přátelé,
další kolo minisoutěže o placku a nálepky je tady, tento týden se hraje o placku "Machr na Javu". Jelikož Java se velkým způsobem zasloužila o rozmach objektově orientovaného programování a objektového návrhu vůbec, zaměřil jsem tuto soutěž právě na ni. Pocvičme si objektové myšlení. Pro programátory v C# jen připomenu, že Java je asi z 70% totožný jazyk, neměli byste tedy mít s úlohou vůbec žádný problém, rozdíly jsou minimální.

Navrhněte objektovou strukturu textové hry. Předpokladem samozřejmě je, aby šla co nejlépe rozšiřovat. Jedná se o klasickou textovou hru typu Zork: http://www.youtube.com/watch?…

Ukázka jak hra vypadá, každá lokace je popsána takovýmto způsobem:

Stojíš u činžovního domu, je porostlý lišejníkem. V potemnělé ulici si hraje vítr s novinama.

Predměty: popelnice, noviny
Můžeš jít: činžák, stanice_metra

Nyní hře zadáme příkaz do konzole:

jdi činžák

a hra se přesune do činžáku. Stejně tak můžeme do inventáře sebrat nějaký předmět:

seber noviny

Další příkazy jsou prohledej (např. popelnici, např. přidá do prostoru další předmět kapesní svítilna), polož, použij...

Chce se po vás tedy vypořádat se objektovým způsobem se zpracováním příkazů, tvořením a propojením lokací, sbíráním a používáním předmětů. Pokud to stihnete, můžete implementovat i způsob dialogů mezi postavami. Jedná se tedy o jakýsi engine. Hodnotit se bude čistý a jednoduchý návrh, tedy stihněte spíše méně a dejte si záležet na tom, aby to bylo prakticky řešené. Nemusíte řešit načítání místností a dat ze souboru, stačí třeba 2 testovací místnosti nadatlované někde v konstruktoru hry aby to bylo na čem vyzkoušet. Vše je jen o spolupráci mezi objekty, zbytek je vedlejší.

Určitě víte o co se jedná, kdyžtak se samozřejmě ptejte. Mám také připravený nějaký svůj model, není nic extra, později ho sem dám pro inspiraci :) Tak se do toho dejme!

Edit: Tradičně jsem zapomněl napsat deadline, bude v sobotu v 19:00 :)

Editováno 25.2.2013 21:54
Odpovědět
25.2.2013 21:53
New kid back on the block with a R.I.P
Avatar
David
Tvůrce
Avatar
David:25.2.2013 21:58

učím se sice v c# ale asi to zkusím :D

Nahoru Odpovědět
25.2.2013 21:58
Nic néni nemožné!
Avatar
Зайчик
Člen
Avatar
Зайчик:25.2.2013 22:00

Achjo, nesnáším javu, ale když oni mají tak pěkné logo! ;( :@ Kvůli němu snad přejdu! (v)

Nahoru Odpovědět
25.2.2013 22:00
Коммунизм для нашего будущего!
Avatar
David
Tvůrce
Avatar
David:25.2.2013 22:01

jo no logo je nejlepší na javě taky sa mě hrozně líbý :D 8-)

Nahoru Odpovědět
25.2.2013 22:01
Nic néni nemožné!
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:25.2.2013 22:12

Ještě soutěž připomenu Samik11, Drahomír Hanákovi (i když ten teď asi pracuje) a byl bych docela zvědavý na Kita :P

Nahoru Odpovědět
25.2.2013 22:12
New kid back on the block with a R.I.P
Avatar
Samik11
Tvůrce
Avatar
Samik11:25.2.2013 22:17

dík, jenom dotaz... musí ta hra obsahovat ty stejné příkazy a i ten výstup? Nebo to může být něco jiného, kde se dá hodnotit nápad? :-D

Editováno 25.2.2013 22:17
Nahoru Odpovědět
25.2.2013 22:17
„Radost vidět a rozumět, to je nejkrásnější dar přírody.“ Albert Einstein
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Samik11
David Hartinger:25.2.2013 22:19

Nápad je jak udělat objektovou strukturu :) Hra by měla omět menit lokace a sbírat a používat předměty pomocí příkazů.

Nahoru Odpovědět
25.2.2013 22:19
New kid back on the block with a R.I.P
Avatar
Samik11
Tvůrce
Avatar
Odpovídá na David Hartinger
Samik11:25.2.2013 22:22

ok, škoda chtěl jsem udělat něco na bázi pokemonů... :D

Nahoru Odpovědět
25.2.2013 22:22
„Radost vidět a rozumět, to je nejkrásnější dar přírody.“ Albert Einstein
Avatar
melichor
Člen
Avatar
melichor:25.2.2013 22:29

Mno, podle mne hlavni vlastnost programatora je dobre odhadnout situaci. Na neco takovyhleho je podle meho nazoru Java uplne zbytecna.

 
Nahoru Odpovědět
25.2.2013 22:29
Avatar
Hartrik
Tvůrce
Avatar
Hartrik:25.2.2013 22:30

O prázdninách jsem přesně tohle dělal ve VBScriptu a poté i v Javě, škoda jen že kód je téměř nepoužitelný...

 
Nahoru Odpovědět
25.2.2013 22:30
Avatar
Odpovídá na David Hartinger
Drahomír Hanák:25.2.2013 22:30

Na tuhle kategorii jsem se zrovna těšil, ale bohužel se nemůžu teď zúčastnit. Tak alespoň doufám, že se tu objeví spousta kvalitního kódu a snad budu mít příště čas :)

 
Nahoru Odpovědět
25.2.2013 22:30
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na melichor
David Hartinger:25.2.2013 22:33

Java je univerzální a moderní jazyk, hodí se téměř na vše. Navíc podporuje syntaxi céčka, takže kdybys to dělal třeba v něm neobjektově, v Javě to bude úplně stejné. Tvůj argument tedy nechápu. My si tu trénujeme objektové myšlení na jednoduchých úlohách, abychom dobře zvládali ty složité.

Nahoru Odpovědět
25.2.2013 22:33
New kid back on the block with a R.I.P
Avatar
melichor
Člen
Avatar
melichor:25.2.2013 22:36

Java nema pointery :-D

 
Nahoru Odpovědět
25.2.2013 22:36
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na melichor
David Hartinger:25.2.2013 22:37

Děkujeme za informaci.

Nahoru Odpovědět
25.2.2013 22:37
New kid back on the block with a R.I.P
Avatar
melichor
Člen
Avatar
melichor:25.2.2013 22:40

Mno, rikas, ze Java podporuje syntaxi C, coz je naprostej nesmysl, protoze Java nema pointery. Tak si tu ze mne nedelej srandu :-P

 
Nahoru Odpovědět
25.2.2013 22:40
Avatar
melichor
Člen
Avatar
melichor:25.2.2013 22:44

Pokud ti jde o objektovej navrh, tak nechapu, proc se ta soutez jmenuje "Machr na Javu", C++ i C# a dalsi jazyky jsou na objektovej navrh stejne vhodne a v C++ by zrovna tohle slo o hodne lepe

 
Nahoru Odpovědět
25.2.2013 22:44
Avatar
Odpovídá na melichor
Drahomír Hanák:25.2.2013 23:02

Docela by mě zajímalo tvé provedení z hlediska dodržování základních objektových principů, používání návrhových vzorů a obecně architektury takové hry. Nechceš se zapojit? :)

Proč se vybrala Java je uvedeno hned na začátku úvodního příspěvku ;)

 
Nahoru Odpovědět
25.2.2013 23:02
Avatar
melichor
Člen
Avatar
Odpovídá na Drahomír Hanák
melichor:25.2.2013 23:06

Klidne
(btw pro me to proste neni dostatecnej duvod, protoze me C++ naucilo objektovy navrh daleko lepe, nez java)

 
Nahoru Odpovědět
25.2.2013 23:06
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na melichor
David Hartinger:26.2.2013 0:01

Proč je soutěž v Javě je napsané hned v prvním příspěvku, je dobrý nápad si přečíst alespoň ten než se zapojíš do diskuze. Céčková syntaxe není o pointerech, mnoho jazyku ji poskytuje a pointery nemá. Těším se na tvůj návrh, když tě C++ tak dobře naučilo objektově programovat.

Nahoru Odpovědět
26.2.2013 0:01
New kid back on the block with a R.I.P
Avatar
Maxfx
Tvůrce
Avatar
Maxfx:26.2.2013 0:22

Příště třeba bude v C nebo v Asm :D

Editováno 26.2.2013 0:23
Nahoru Odpovědět
26.2.2013 0:22
Být ovládán znamená být sledován, pod dohledem, špehován, veden, uzákoněn, reglementován, ohrazen, indoktrinován, pře...
Avatar
Зайчик
Člen
Avatar
Odpovídá na Maxfx
Зайчик:26.2.2013 8:36

Těžko, :P pak už je jen andriod. :)

Nahoru Odpovědět
26.2.2013 8:36
Коммунизм для нашего будущего!
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:26.2.2013 9:09

Také jsem na sebe zvědavý. Nedávno jsem si něco podobného udělal v Javascriptu. Mělo to asi 8 místností a dalo se mezi nimi chodit klikáním. Víc to však neumělo. Celé jsem to měl nacpáno do jednoho souboru .html.

Nahoru Odpovědět
26.2.2013 9:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na melichor
Kit:26.2.2013 9:19

V C++ se objektově téměř nedá programovat. Vždyť je i problém poslat objekt přes return, aby se náhodou nezapomnělo ten objekt uvolnit a nevznikl memory leak. Nedovedu si představit, jak bych v tom dělal Dependency Injection. Možná přes nějaký framework?

Nahoru Odpovědět
26.2.2013 9:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:26.2.2013 11:05

Za tímhle účelem se v C++ objekt uvnitř funkce nevytváří dynamicky, ale deklaruje se na stacku a při vrácení se kopíruje, přičemž si můžeš přesně nastavit jak. Pokud je to v daný situaci moc neefektivní, pak si buď musíš dávat pozor anebo pokud se to využívá častěji, napsat si nějakou třídu pro inteligentní pointer, kterej paměť při skončení platnosti sám dealokuje, ve standardních knihovnách C++ už něco takovýho existuje. Já osobně se vyhýbam vracení objektů vytvořených uvnitř funkcí, pokud by byly potřeba vytvořit dynamicky, vždycky vytvářim objekt na nejvyšší urovni kde se používá (většinou main) a pak předávam parametrem.

 
Nahoru Odpovědět
26.2.2013 11:05
Avatar
Maxfx
Tvůrce
Avatar
Odpovídá na Зайчик
Maxfx:26.2.2013 11:11

:D tak se musí jít trošku níž :D

Nahoru Odpovědět
26.2.2013 11:11
Být ovládán znamená být sledován, pod dohledem, špehován, veden, uzákoněn, reglementován, ohrazen, indoktrinován, pře...
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Lukáš Hruda
Kit:26.2.2013 11:23

To je přesně ono. V Javě i v PHP vracím nově vytvořené objekty returnem systematicky. Výsledkem každé metody je objekt. Mám změřeno, že je to i nejrychlejší způsob předávání výsledku.

Nahoru Odpovědět
26.2.2013 11:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Luboš Běhounek Satik:26.2.2013 12:01

(Odpověď na 26.02.2013 09:19, hapruje mi tu internet)

Větší kontrola nad kódem (ale i větší odpovědnost), přece nijak nesouvisí s tím, jak dobře se dá v něčem programovat objektově.

Uvolňování paměti by se mělo ideálně dít na té úrovni, na které byl objekt vytvořen.

S pamětí není problém ani když se na objekt odkazuje ze spousty míst a programátor přesně neví, kdy přesně se paměť má uvolnit, tohle se většinou řeší tím, že si objekt u sebe sám udržuje, kolik odkazů na něj existuje - samozřejmě programátor při vytváření / ničení ukazatele na tento objekt na to musí pamatovat a volat příslušné funkce.
Pokud zavolá snížení počtu odkazů a počet klesne na nulu, tak v tu chvíli objekt sám zavolá destruktor, protože už na něj nikdo neukazuje, je to vlastně takový poloautomatický prapředek garbage collectoru :) .

Nahoru Odpovědět
26.2.2013 12:01
https://www.facebook.com/peasantsandcastles/
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Lukáš Hruda:26.2.2013 12:18

Na podobnym principu funguje ten inteligentní pointer, až na to že ten si ty funkce volá sám. Tam si ale zase musíš dávat pozor, když z něj adresu předáváš klasickýmu pointeru.

 
Nahoru Odpovědět
26.2.2013 12:18
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:26.2.2013 12:19

"Uvolňování paměti by se mělo ideálně dít na té úrovni, na které byl objekt vytvořen."

To platí možná v C++, ale není možné to zobecňovat na celé OOP. Použil jsi v C++ nadstavbu, která je v Javě a C# již součástí jazyka. OOP v C++ mi pořád připadá jako nějaký přílepek, se kterým se původně moc nepočítalo.

V OOP metoda objektu běžně vytváří jiný objekt a returnem ho předá volajícímu. Jak jinak bych mohl udělat třeba Factory?

Se stejnou odvahou mohu zařadit do OOP i Lisp, ve kterém se dá programovat v podstatě jakkoli, tedy i objektově.

Nahoru Odpovědět
26.2.2013 12:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:26.2.2013 12:27

taky bych se zapojil, ale ještě pořád nemám noťas :(

 
Nahoru Odpovědět
26.2.2013 12:27
Avatar
Odpovídá na Kit
Luboš Běhounek Satik:26.2.2013 12:30

Ano, myslel jsem to hlavně pro jazyky, kde se o paměť stará programátor a ne pro GC nebo podobné mechanismy, které fungují úplně jinak.

Factory v C++ uděláš tak, jak jsem popisoval - normálně na haldě vytvoříš objekt, na něj si vrátíš ukazatel a jen si hlídáš ty počty ukazatelů na něj, případně to můžeš celé řešit i přes smart pointery, které tohle dělají za tebe ještě zautomatizovaněji.
V tomhle případě pak samozřejmě objekt může být zničen i na jiné úrovni, než kde byl vytvořen.

Lisp vůbec neznám, netuším, jak to má s podporou objektů.

Nahoru Odpovědět
26.2.2013 12:30
https://www.facebook.com/peasantsandcastles/
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Kit:26.2.2013 12:39

Lisp je strašně mnohotvárný, proto se v něm objekty dají dělat jakkoli. Prototypově i prostřednictvím tříd, kombinovaně nebo úplně jinak.

Nahoru Odpovědět
26.2.2013 12:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Kit
Lukáš Hruda:26.2.2013 12:56

C++ byl první C-based jazyk kterej obsahoval základy OOP, ze začátku toho kromě nějakých základů tříd neuměl o moc víc než C. Dál se v něm třídy vyvíjely poněkud jinym směrem. Třídy v C++ nejsou dělaný tak, aby se v něm pohodlně programovalo objektově, ale tak, aby programátor mohl vytvářet datový typy se kterýma je možno zacházet co nejvíce stejně jako se základními typy, tedy co nejpřirozeněji. V C++ se objektově programovat dá (vždyť Java i C# z něj vychází), jen u toho programátor musí řešit věci spojený s tím, že je to víc low-level jazyk, a ne vždy je to v něm nejlepší a nejpohodlnější řešení, obzvlášť pokud je potřeba programovat efektivně. Jak už jsem tu ale psal jednou v jiný diskusi, podle mě má C++ mnohem propracovanější třídy a práci s nima než Java a C# dohromady.

 
Nahoru Odpovědět
26.2.2013 12:56
Avatar
melichor
Člen
Avatar
melichor:26.2.2013 18:16

Aneb klasika, bitva mezi javistama a programátorama...

 
Nahoru Odpovědět
26.2.2013 18:16
Avatar
melichor
Člen
Avatar
Odpovídá na Kit
melichor:26.2.2013 18:18

Vis, ono v C++ to chce taky obcas premejslet nad tim, co ti ta funkce vrati a ne jenom tam placnout objekt, nekdy se ti hodi pointer, nekdy reference a nekdy objekt samotny, popr. to vyresit jinak.
Java se ti o vsechno postara sama, ale efektivita je ta tam...

 
Nahoru Odpovědět
26.2.2013 18:18
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na melichor
David Hartinger:26.2.2013 20:04

Slušně tě žádám, pokud se nechceš soutěže účastnit, tak to tu nerozmazávej, programuj si třeba v děrných štítkách, nám je to jedno. Tohle je soutěž v Javě, zbytečně to tu znečišťuješ offtopic diskuzí. Děkuji.

Editováno 26.2.2013 20:04
Nahoru Odpovědět
26.2.2013 20:04
New kid back on the block with a R.I.P
Avatar
melichor
Člen
Avatar
melichor:26.2.2013 20:38

Mno, az na to, ze jsem rikal, ze se ty souteze zucastnim. V tom pripade podle tve vety to tu rozmazavat muzu :-D

 
Nahoru Odpovědět
26.2.2013 20:38
Avatar
Kit
Tvůrce
Avatar
Odpovídá na melichor
Kit:27.2.2013 8:33

O efektivitě Javy toho bylo napsáno hodně. Java je efektivní, jen se v ní nesmí programovat jako v Céčku. V tu chvíli se z ní stane líný moloch.

Nahoru Odpovědět
27.2.2013 8:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
vodacek
Tvůrce
Avatar
vodacek:27.2.2013 8:48

já to vidím jednoduše, napište program v C#, pak stačí jen nakopírovat soubory do fazolového editoru, u děičkosti místo : se narve extends, jména vlasností tříd přidělat na malé počáteční písmenko, u metod to samé, napráskat tam hrůůzostrašné get-set metody a je prakticky hotovo :-) a ještě možná string na String a to je tak vše důležité

 
Nahoru Odpovědět
27.2.2013 8:48
Avatar
Kit
Tvůrce
Avatar
Odpovídá na vodacek
Kit:27.2.2013 8:56

... a dostaneš z toho typicky línou javovskou aplikaci.

Nahoru Odpovědět
27.2.2013 8:56
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
vodacek
Tvůrce
Avatar
Odpovídá na Kit
vodacek:27.2.2013 9:01

bohužel je tak soutěž zadána, jen jsme naznačil že převod mezi těmito jazyky není příliš obtížný

 
Nahoru Odpovědět
27.2.2013 9:01
Avatar
Kit
Tvůrce
Avatar
Odpovídá na vodacek
Kit:27.2.2013 9:55

Převod není obtížný. Jen těmi primitivními settery a gettery, které se v C# používají tak často, se v Javě musí trochu šetřit, aby to nebylo líné. Reagoval jsem jen na ty "hrůůzostrašné get-set metody", které v Javě být nemusí, když se program napíše správně.

Nahoru Odpovědět
27.2.2013 9:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
vodacek
Tvůrce
Avatar
Odpovídá na Kit
vodacek:27.2.2013 9:58

z tvého/vašeho příspěvku tento fakt není vůbec zjevný

 
Nahoru Odpovědět
27.2.2013 9:58
Avatar
Kit
Tvůrce
Avatar
Odpovídá na vodacek
Kit:27.2.2013 10:03

C# zavedl gettery a settery jako syntaktický cukr, který se bohužel velmi často zneužívá v podobě get; set;. Vypadá to elegantně, ale velmi často to správně není. Je zbytečné tento nešvar přenášet do Javy. Možná proto v ní tento syntaktický cukr není.

Nahoru Odpovědět
27.2.2013 10:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:27.2.2013 10:09

V Javě je to úplně stejné jako v C#. Co jde ven je getter/setter, i rychlostně to vychází stejně, vždyť jsi to tenkrát měřil.

Editováno 27.2.2013 10:12
Nahoru Odpovědět
27.2.2013 10:09
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:27.2.2013 10:59

Měl jsem na mysli, že v C# se getter/setter zapisuje jako přetížené přiřazení. Na jednu stranu je to příjemné, na druhou stranu pak objekt mívá příliš mnoho rozhraní a z toho pramení nízká uzavřenost objektu. Objekty se pak používají jen jako pouhá datová skladiště a to je špatně. Při přepisu takového špatného návrhu vznikají v Javě zmíněné "hrůůzostrašné get-set metody".

V některých případech to skutečně výkonově vyjde nastejno, protože kompilátor dělá optimalizaci. Vždycky se mu to však nepodaří. O výkon však jde až na druhém místě. Pokud chceme dělat OOP, nelze zasílání zpráv vždy degradovat na přiřazení do lokální proměnné objektu nebo vyzvednutí její hodnoty.

Nahoru Odpovědět
27.2.2013 10:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:27.2.2013 11:01

Chápu jak to myslíš, ale bohužel se to dělá v praxi opravdu tak, že se vygeneruje tuna getterů/setterů, dělá to většinou IDE.

Nahoru Odpovědět
27.2.2013 11:01
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:27.2.2013 11:45

Bohužel nevhodně navržené IDE svádí k chybným programátorským návykům. programátoři si pak naivně myslí, že provozují OOP.

Nedávno jsem našel zajímavou knihu "Myslíme v jazyku Java", ve které je podle mne velmi dobře zpracováno OOP nejen pro Javu. Na rozdíl od jiných učebnic začíná s objekty a rozhraním. Teprve pak jde na kolekce, algoritmy a datové typy.

Nahoru Odpovědět
27.2.2013 11:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Samik11
Tvůrce
Avatar
Samik11:2.3.2013 10:19

Tak přidávám svůj pokus. Za chyby se omlouvám, ať už jde o funkčnost nebo špatně zvolený návrh. Podstatné je přece zúčastnit se. :-)

http://uloz.to/…-samik11-rar

Nahoru Odpovědět
2.3.2013 10:19
„Radost vidět a rozumět, to je nejkrásnější dar přírody.“ Albert Einstein
Avatar
David Dostal
Tvůrce
Avatar
David Dostal:2.3.2013 18:42

Ahoj, šla by uzávěrka prosím ještě trochu posunout? Rád bych se zúčastnil, ale na počítač jsem se dostal až dneska.
PS: většinu textové hry už jsem dneska udělal, tak by bylo škoda, kdybych to dělal nanic.

 
Nahoru Odpovědět
2.3.2013 18:42
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 50 zpráv z 75.