Diskuze o textových hrách

Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Kroužící orel

Stran: 1 2 3 4 5 ... 14
31
Nové textové hry / Re: Strach ze tmy
« kdy: 23. Duben 2020 - 20:44 »
Nic se neděje, pokud hra funguje nativně ve Win, to je hlavní, my linuxáci tu naštěstí máme zdrojáky. Díky za nakopnutí, mě napadlo, že by rich mohla být nějaká pythoní knihovna, hledal jsem jí v archovských repozitářích, ale nějak jsem přehlédnul, že je k dispozici v AURu. V Arch linuxu totiž téměř nemusím používat pip nebo condu, většina věcí je v repo a tak je to i s balíčkem python-rich:

https://aur.archlinux.org/packages/python-rich/

Nyní je vše OK, nemusím využívat ani virtuální prostředí a pomocí

python -m szt

se hra v aktuální verzi v pohodě spustí, parametry pro barvy fungují také. Přiznám se, že jsem po aktualizaci s gitu nečetl soubor Čtimě, proto jsem jen odhadoval tu knihovnu, příště budu pečlivější. Hru zase pořádně zkusím, takhle barevnější vypadá mnohem lépe.

32
TADS / Re: Kroužící orel 2
« kdy: 22. Duben 2020 - 21:07 »
Ano, souhlasím, já využívám kontejnery jakoby bez předmětů v nich, uvedl jsi pěkný příklad s tím pískem a stopami. Zde je nepotřebuji, stačí malá úprava, otisky a zvláštní stopu definuji pouze jako CustomImmovable, u stopy ještě Readable a objekt typu kontejner využiju jen u houští, které obsahuje další dva předměty, tam to dává smysl. Metodu PresentLater mám definovanou správně i bez kontejnerů, alespoň to tak vypadá, aktuální zdrojový soubor mistnostNapajedloProKone.t funguje nyní bez potíží.

Strašně moc Ti děkuji za parádní postřeh s těmi stopami, jasně, jako hráč bych je určitě zkusil prozkoumat ještě před kouknutím se do otisků. Tohle si musím hlídat, ještě projedu všechny zdrojáky, kde by se tento problém mohl vyskytnout - je více, než možné, že to nebude jediný případ. Nechtěl jsem zatím zveřejňovat žádné zdrojáky, ale co se dá dělat, takhle to je lepší a věřím, že si hru užiješ, je toho tam naštěstí mnohem více, než jen orlí jámy a pár řechtákových stop.

He, he, to jsi mě pobavil, na WTF momenty jako začátečník narážím ve všech jazycích, vím ale, že jsme se v minulosti o tomto bavili a doporučoval jsi začít nějakým neskriptovacím. Já tak nějak tuším, že Python není ouplně to nej pro začátečníka, už jen když se juknu na zdroják v Javě, je pro mě koukatelnější, než třeba Pythoňácký, na to si ale zvyknu - každopádně kdo ví, Python se k výuce využívá dnes asi docela často a důvod zde určitě bude (minimálně ta interaktivní konzole stojí za to, i když např. v Javě mám JSHELL). Každopádně Java se mi zdá fajn tak nějak na všechno (plus výborné příručky a bezva IDE), ale Python ať už je jakýkoliv, má obrovskou komunitu včetně české (Pyladies, Czechitas, kurzy KSP). Bez Tebe bych se v TADSu moc daleko nedostal, se dvěma výše uvedenými jazyky se také pomoci dočkám, takže proč do toho nejít (a můžu prozkoumávat i opravdu veliké projekty typu IS, v Pythonu Odoo a v Javě třeba A(I)dempiere). Stejně jde hlavně o princip, zaměřil jsem se na OOP, který mě svým stylem zaujal a pak už ho jen naroubuju na konkrétní jazyk (a je mi fuk, zda to bude C++, Ada nebo Objektový Pascal, všechny mají něco do sebe a třeba Pascal s Adou u mě díky svému užvatlanému stylu begin - end nebo neustálému with - use bodují v čitelnosti i na Javou).

Jo, vývojařina mě baví, linux už jsem si vybral, i když to trvalo pár let zkoušení - Arch mi sedne opravdu na všechno a zvládnu v něm vše, co potřebuji, ohledně jazyka uvidím později. Žádný systém nebo jazyk není lepší nebo horší stejně jako vše ostatní v životě, takhle to beru a je mi hej. Vývojařinu není problém spojit s rodinou, koňmi i dalšími zájmy, když opravdu chci, čas si vždy najdu.

Měl bych dotaz na Klub Kapsa, je na něj odkaz z tads.cz a už dříve jsem jeho stránky prozkoumal. Fungujete stále (teď třeba vzdáleně) s využitím C++ a grafických knihoven s IDE QT Creator? Teď jsem zjistil, že je k mání i kroužek Pythonu pro mladší účastníky. Mě by zajímaly reakce dětí, jak se na tyto jazyky dívají a zda se pro výuku osvědčily? Dříve jsem na táborech dětem také v učebně ukazoval něco v linuxu a počítačovém mapování, teď už sotva stíháme program venku a u koní, takže jsem počítadla zcela vyškrtnul, proto by mě zajímaly Tvé zkušenosti.

33
Nové textové hry / Re: Strach ze tmy
« kdy: 22. Duben 2020 - 21:00 »
Děkuji za vydání nové verze, je zajímavé, že tu první jsem pomocí wine 5.5-1 spustil

wine SzT.exe
002a:err:winediag:gnutls_initialize failed to load libgnutls, no support for encryption
002a:err:winediag:gnutls_initialize failed to load libgnutls, no support for pfx import/export
0030:fixme:advapi:RegisterEventSourceW ((null),L"AdobeARMservice"): stub
0030:fixme:advapi:ReportEventW (0xcafe4242,0x0004,0x0000,0x00000000,(nil),0x0001,0x00000000,0xeafcac,(nil)): stub
0030:fixme:advapi:DeregisterEventSource (0xcafe4242) stub
----------------------------------------------------------------------


                      S t r a c h   z e   t m y 


ale novější už nikoliv:


wine SzT_v1.1.exe
000f:err:service:process_send_command receiving command result timed out
000f:fixme:service:scmdatabase_autostart_services Auto-start service L"WineBus" failed to start: 1053
000f:err:service:process_send_command service protocol error - failed to write pipe!
000f:fixme:service:scmdatabase_autostart_services Auto-start service L"AdobeARMservice" failed to start: 1053
[44] INTERNAL ERROR: cannot create temporary directory!
002d:fixme:ver:GetCurrentPackageId (0x22fac0 (nil)): stub


Je to sranda, stačí pár změn a WINE to už nedá (problém bude asi v cannot create temporary directory), takže zase pojedu ze zdrojáků. A sakra, nepojedu, v aktuální verzi mi příkaz

python -m szt

vyhazuje chybu:

Traceback (most recent call last):
  File "/usr/lib/python3.8/runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib/python3.8/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/wanbli/Desktop/Textovky/Strach ze tmy/SzT-master/szt/__main__.py", line 3, in <module>
    from .hra import hra
  File "/home/wanbli/Desktop/Textovky/Strach ze tmy/SzT-master/szt/hra.py", line 3, in <module>
    from . import utility
  File "/home/wanbli/Desktop/Textovky/Strach ze tmy/SzT-master/szt/utility.py", line 10, in <module>
    from rich.console import Console
ModuleNotFoundError: No module named 'rich'

Můžu poprosit o kontolu toho rich modulu?

34
TADS / Re: Kroužící orel 2
« kdy: 20. Duben 2020 - 21:42 »
Moc děkuji za velmi rychlou odpověď, upřímně řečeno nešlo mi o povolení příkazu "podívej se do", ale kontejnerová hierarchie mě napadla hnedle poté, co jsem potřeboval postupně odhalovat nové objekty. Krásně mě totiž inšpirovala hra Heidi, kde je podobná situace využita u prstenu v hnízdě na stromě a já si po tom věčném študiu jejích zdrojáků a samozřejmě i Základny pár pasáží už pamatuju. Osobně mi právě kontejnery zde připadají přehledné, ale třeba se mýlím a je zde elegantnější řešení, zkusím se na něj ještě juknout (to bude asi ta refaktorizace = optimalizace kódu, kdy vymažu nadbytečný kód a nahradím jej štíhlejším, mám v el. podobně zajímavou knížku na toto téma s názvem Čistý kód - určena primárně pro Javu, ale našel jsem i ekvivalenty pro Python a C++, na vše se časem juknu).

Ajaj, u PresentLater jsem dopadl podobně jako předem u potíží s Orlí jámou, tam jsem nepochopil negaci a zde se ptám na již neexistující objekt Zvláštní stopa. Ano, housti.moved vše řeší a následná úprava dobjFor(LookIn) právě u houští s využitím if(bizoniKost.moved && chrestidlo.moved) také pomohla. Ještě jsem stopy označil jako Readable s tím, že příkaz "podívej se do" = "přečti", využití dobjFor(Read) asDobjFor(LookIn) zařídí vše potřebné, zde mám v Základě bezpočet příkladů. Ještě jednou jsem si přečetl sekci Hidden a PresentLater ve Tvém návodu, mix-in třída PresentLater v tomto případě řeší přesně to, co potřebuji.

Ano, já opravdu využívám u většiny objektů vlastnost CustomImmovable z třídy NonPortable, zkusil jsem si různé možnosti, ale nejvíce mi vyhovuje využití specialDesc u stopy a houští. Rád bych, ale se v reakci na rozvíjející se příběh tyto objekty ukazovaly a toto řešení je pro mé potřeby ideální (i když mohu pomocí ifů změnit i popis přímo v místnosti jak je to na více místech v Základně).

Já teď ve volných chvílích zkouším kromě TADSu i Javu a Python, rád se probírám definicemi OOP z různých pohledů, je to někdy docela terminologický guláš. Zatímco v Javě je mi rozdíl mezi třídou, objektem a metodou jasný, v Pythonu se, i když vše je objekt, setkávám mimo metody i s funkcemi a to ani nemluvím o OOP v Objektovém Pascalu nebo v Adě. Naštěstí je to stále o posílání zpráv objektům a využívání jejich metod, jen to musí jednomu docvaknout, viz můj dnešní a minulý dotaz. Každopádně i když mi to zpočátku přišlo trochu nereálné, dnes už vidím, že TADS3 se opravdu dá využít jako první jazyk pro výuku programování a principů OOP, to je paráda, jen to sakra trvá, už chápu, proč je programátorů stále nedostatek. Postupně jdu vyvíjet dále, baví mě to čím dál víc a to je hlavní.

35
TADS / Re: Kroužící orel 2
« kdy: 19. Duben 2020 - 22:19 »
Pokračuji dále v tvorbě, již několik dní se snažím vyřešit správnou definici metody PresentLater, zde mě však zastavila nečekaná věc. Ve hře se vyskytuje místnost Napajedlo pro koně, kde se nacházejí otisky koňských kopyt. Pomocí dobjFor(LookIn) a příkazu "koukni se do otisků" (koukni se na otisky nelze využít, protože parser příkaz pochopí jako prozkoumej otisky) naleznu zvláštní stopu. Tu definuji stejně jako otisky s tím, že po příkazu koukni se do stopy by se mělo objevit houští. I přes definici stejné metody dobjFor(LookIn) , která funguje v předchozím případě se tak ale nestane a získávám stejnou odpověď, jako bych se již do stop díval, ale houští nevidím.

Toto chování je mi zatím nepochopitelné, když jediný rozdíl mezi objekty otiskyKonskychKopyt a zvlastniStopa je ten, že zvlastniStopa představuje PresentLater a stejně tak houští. Využívám zde kontejnerovou hierarchii a hra se v pořádku zkompiluje, výsledek je však následující:

// začátek transskriptu hry
Napajedlo pro koně
Mělká zátočina slouží koním jako napajedlo, což je vidět ze všudypřítomných otisků kopyt, které lovce opravdu zaujmou, ani neví jak. Momentálně tu žádný řechták není, koním dost dobře stačí i čerstvá orosená ranní tráva. Paprsky slunce se na hladině krásně lesknou.
Můžeš jít na severovýchod, východ a na jihozápad.

>prozkoumej otisky
Stopovat zde by bylo nemožné, vidíš nejrůznější mozaiku těch nejmenších poníkových i mohutných těžkých stop. Ale moment, jedna je taková zvláštní.

>koukni se na otisky
Stopovat zde by bylo nemožné, vidíš nejrůznější mozaiku těch nejmenších poníkových i mohutných těžkých stop. Ale moment, jedna je taková zvláštní.

>koukni se do otisků
Tady je jedna opravdu zvláštní stopa, která koním určitě nepatří.

>r
Napajedlo pro koně

Mělká zátočina slouží koním jako napajedlo, což je vidět ze všudypřítomných otisků kopyt, které lovce opravdu zaujmou, ani neví jak. Momentálně tu žádný řechták není, koním dost dobře stačí i čerstvá orosená ranní tráva. Paprsky slunce se na hladině krásně lesknou.
Můžeš jít na severovýchod, východ a na jihozápad.

>prozkoumej stopu
Jedna stopa se od ostatních dost liší, je mnohem menší a vypadá trochu jako psí. Téměř se ztrácí, ale když ji sleduješ, vypadá to, že někam vede.

>koukni se na stopu
Jedna stopa se od ostatních dost liší, je mnohem menší a vypadá trochu jako psí. Téměř se ztrácí, ale když ji sleduješ, vypadá to, že někam vede.

>koukni se do stopy
Stopa už Ti pomohla k nalezení toho, cos potřeboval vidět.

>prozkoumej houští
Nic takového jako „houští“ tu nevidíš.
// konec transskriptu hry

Mohu poprosit o kontrolu tohoto chování? Také jsem si všimnul, že pokud objekt definuji jako Immovable, CustomImmovable nebo Fixture, v textu nebo po příkazu "rozhlédni se" se nezobrazí, ale bez tohoto označení ano. Byl bych rád, aby byl vždy objekt, který hráč nalezl, viditelný, ale nebylo jej možné sebrat, zde se ještě zkusím juknout do knihovny, proč se tak děje.

V příloze jsem stejně jako minule připravil hru jen s několika místnostmi včetně Napajedla pro koně.

36
Nové textové hry / Re: Strach ze tmy
« kdy: 19. Duben 2020 - 20:34 »
Ano, stávající knížka Python – Kompletní příručka jazyka pro verzi 3.8 je určena vývojářům, kteří již mají zkušenost s Pythonem, takže směle do ní, já se po dokončení začátečnické příručky na ní chystám také. Autor potřeboval někoho s pouze minimálními znalostmi programování, aby z jeho pohledu zjistil, zda je knížka vhodná pro začátečníky, určitě zkus pana Pecinovského kontaktovat:

http://knihy.pecinovsky.cz/60_python/index.html#FAQ

a pokud se dohodnete, bude paráda, když zašleš i své dojmy.

S repl je to jasné, musím si vytvořit účet a poté mohu vesele spouštět své projekty, o to mi šlo. Pokud bych např. vydal nějakou textovku v Pythonu, tímto způsobem bude parádně hratelná podobně jako mám možnost připravit aplikaci v TADS3 pro online hraní.

Dnes budu zase pokračovat v Orlovi a průběžně se seznamovat s Pythonem, už se těším, kombinace výše uvedených knih a šikovných online materiálů (třeba Pyladies, Pycharm akademie nebo kurzy od Udemy vypadají opravdu parádně).

37
Nové textové hry / Re: Strach ze tmy
« kdy: 15. Duben 2020 - 21:08 »
Paráda, děkuji za nakopnutí ohledně spuštění jako modul, příkaz python -m jsem neznal. Dobře, že jsi možnost uvedl i ve zdrojácích, určitě se najdou další linuxáci, kteří za ní budou vděční. Já se s Pythonem teprve seznamuji, dohodl jsem se s p. Pecinovským, že mu pomohu s revizí jeho nové knihy pro začátečníky a společně s TADS a Javou jsem se vrhnul i na Python, tahle pěkná kombinace (možná ještě s Javascriptem nebo C/C++, uvidíme) by mohla stačit na většinu věcí.

Už dlouho používám Arch Linux, dnes mám verzi Wine 5.5-1 a vše jede relativně bez problémů, viz výpis:

wine SzT.exe
000f:err:service:process_send_command receiving command result timed out
000f:fixme:service:scmdatabase_autostart_services Auto-start service L"WineBus" failed to start: 1053
000f:err:service:process_send_command service protocol error - failed to write pipe!
000f:fixme:service:scmdatabase_autostart_services Auto-start service L"AdobeARMservice" failed to start: 1053
----------------------------------------------------------------------


                      S t r a c h   z e   t m y                       


                        textová hra na hrdiny                         

                      verze 1.0   6. dubna 2020                       


----------------------------------------------------------------------

Na druhém disku ale sídlí Q4OS Centaurus, což je Debian 10 s GUI Trinity, zde je čtyřková verze a program se nespustí:

Debian 10
Wine 4.0-2

wine SzT.exe
000f:err:service:process_send_command receiving command result timed out
wine: Špatný formát EXE pro Z:\home\abc\Plocha\SzT.exe.

Vidím, že v Mintu 19 je stále čtyřková verze, Ulyana by měla mít stejně jako Focal pětkovou.

Hledal jsem na fórech, u podobné chyby jsem se dočetl, že je vhodné zkusit vývojovou verzi, takže bych v případě dnešního Mintu asi zkusil:

https://computingforgeeks.com/how-to-install-wine-on-ubuntu-linux-mint-desktop/

i když ruku na srdce, start pomocí Wine u mě trvá cca jednu minutu, nativně přes můj cli.py asi dvě sekundy.


Ano, na test juknu a vše ještě jednou zkusím.


Měl bych dotaz ohledně té webové verze, server repl.it je bezva, využívá jej mimojiné např. JetBrains akademie, takže na něj časem hodím voko vo něco víc. Pro to, aby Ti fungoval odkaz

https://szt.myrmica.repl.run/

opravdu stačí stávající zdroják nakopírovat na

https://repl.it/talk/share/My-Replrun-Project/10942

?

To by byla paráda. Python se mi právě líbí v tom, že mohu využít např. ncurses nebo QT5 pro jednu aplikaci plus (teď nevím, jestli si to moc nemaluju) např. s využitím Flasku nebo Djanga upravit jako aplikaci webovou.

38
Nové textové hry / Re: Strach ze tmy
« kdy: 14. Duben 2020 - 10:15 »
Díky za zajímavou textovku,

připadám si jako u her ze slavného Fantasy gamebook engine, škoda jen, že popis místností se často opakuje.

Hru jsem v linuxu spustil pomocí Wine, dobře funguje i web, zajímala mě samozřejrmě také kompilace a hraní nativní. Při pokusu o python __main__.py jsem dostával:

Traceback (most recent call last):
  File "__main__.py", line 1, in <module>
    from szt.hra import hra
ModuleNotFoundError: No module named 'szt'

ale např. Pycharm program bez problémů spustí. Chvíli jsem hledal, přeci jen "exáč" u pythoních aplikací není ouplně triviální, nakonec pomohl parádní web Realpython a info o aplikaci Pyinstaller, situaci jsem nakonec vyřešil takto:

1. vytvořil jsem soubor cli.py a setup.py v adresáři s testy a naplnil jej podobně jako příklad na Realpython, pomocí cli.py mohu hru hned spustit příkazem
python cli.py

2. Pro zjednodušení lze přidat do souboru cli.py na začátek řádek
#!/usr/bin/env python3

a cli.py nastavit jako spustitelný, poté je vše OK.

Vše připravené pro linux zasílám v příloze.


Hra je alespoň pro mě dost těžká, ale nevadí, budu ještě zkoušet, rád bych prolezl i tu jeskyni. Teď makám na Orlovi dvojce a při tom pracuji s Javou plus nově i s Pythonem, tyhle jazyky mi jako kombinace plně vyhovují a člověk krásně vidí jejich odlišnosti.

Další zajíamavá textovka v Pythonu je k nahlédnutí zde:

https://www.raspberrypi.org/blog/making-text-adventure-wireframe-6/

Vypadá dobře, je to tradiční model hry s využitím OOP podobně jako v TADS3.

Něco takového výhledově připravím.

39
TADS / Re: Kroužící orel 2
« kdy: 6. Duben 2020 - 09:10 »
Na hře stále pracuji, děti máme doma a také tvořím nové stránky pro MŠ, postupuji však dále a to je hlavní. Setkal jsem se s pár záludnostmi u rozhovorů, všechny se mi podařilo dát dohromady, mnohdy stačí dát si oddych a další den řešení přijde, to asi zná každý z nás. Každopádně už se cítím mnohem jistější a mohu zúročit zkušenosti z Exotera, Tvého návodu a dalších her, takže se mi možná podaří hru dokončit bez dalších dotazů, uvidíme. Pomáhá i základní znalost Javy, konečně vidím tu výhodu OOP, programuje se mi díky němu přeci jen pohodlněji a orientace v kódu a v dokumentaci je mnohem snažší.

Mimochodem vyšla nová verze QTADS, jsou tam drobná vylepšení, hlavní však je, že se stále vyvíjí, k hraní na počítadle je to můj nejoblíbenější interpretr.

40
TADS / Re: Kroužící orel 2
« kdy: 18. Březen 2020 - 20:51 »
No tak to je paráda, s negací jsi vše krásně vysvětlil, jak vidno, přečíst si o ní něco v knížce je pěkné, ale opravdové využití je něco jiného, zvláště když neznám zákony Herr De Morgana, díky za ně. Pokud potřebuji prověřit, zda hráč nemá nůž nebo návnadu, musím využít OR, vše jasné. Jsem moc rád, že se právě tato chyba stala, protože se mi vryje do paměti víc, než kapitola o těchto zákonitostech pojednávající v různých příručkách.

Hmm, pomocí if(!moved) nic nevyřeším, musím se ptát, zda se pohnul předmět Orlí maso. Konstrukce if(!orliMaso.moved) je zcela funkční a situace funguje tak jak má, metoda makePresent pohnutí orlího masa způsobí a potíž je vyřešena. Na druhou stranu if(orliMaso.location != nil) využít nemohu, zde se vždy provede blok za else a dostávám hned hlášení "Orlí jáma už mi pomohla dostatečně, vzhůru za dalším dobrodružstvím. " stejně jak by již akce byla provedena.

Referenční manuál mě tady trochu mátl, když si rozkliknu LieOnAction , vidím hnedle v záhlaví informaci:
class LieOnAction :   TAction      // after macro expansion
a poté prohlížím Superclass Tree - LieOnAction tedy dědí od TAction a Resolver a právě zde jsem byl zmaten tím, že pod BasicProd a Resolver vidím uvedeno object, hmm, teď je mi po Tvé informaci jasné, že se jedná o speciální třídu, kterou manuál uvádí, ale tuhle informaci jsem přehlédl. Tady je to trochu jinak, než v Javě, kde pokud dobře chápu jasně vidím rozdíl mezi třídami a objekty, ve Tvém manuálu jsem se ale dočet, že rozdíl mezi nimi je v TADSu mnohem menší, na to si budu muset zvyknout. Nevadí, mám alespoň možnost porovnat obé, tyto jazyky tvořili zkušení programátoři a určitě sakra dobře věděli proč zvolili právě tento styl.

V tomto konkrétním případě mě tedy zajímá metoda dobjFor(LieOn) - method of Thing in thing.t[10072], kde vidím Tebou popsané preCond a verify, ještě jednou jsem si projel Tvůj manuál, vše je vysvětleno v sekci Akce s objekty na akci "sněz jahody", paráda. Já jsem chybně chápal dobjFor() jako metodu, jasně, jedná se o zkratku nebo jak píše Erik v Getting Started na straně 71 makro, tady jsem si o propertysets přečetl více. Míchání dvou druhů akcí dohromady tedy není možné, chápu to snad správně jako pokus využít metodu třídy z jiné třídy, která jí nemá definovanou (ovšem to je případ z Javy, zde se jedná o makro).

Hmm, parser tedy nebude řvát, pokud metodu pojmenuji chybně, jasné, tady se jedná nikoliv o chybu v zápisu, ale v logice programu. Změna zápisu ifu vše vyřešila, jsem ale vděčný i za tuto informaci, teorii a nízkoúrovňovou logiku TADSu bych časem také rád pochopil, zdá se mi totiž, že OO jazyky jsou v této teorii o tom samém a jejich tvůrci se jen snaží přiohnout si je po svém, diskuze o tom "nej" jazyku jsou poté zcela zbytečné. Po Tvých informacích ještě více, než kdykoliv předtím vidím, že je opravdu jedno, jaký jazyk člověk zpočátku zvolí, TADS a Java se mi po praktickém využití každého z nich krásně spojí, musím jen co nejvíce programovat. A časem pochopím třeba i to, proč je Java tak ukecaná, ale díky tomu jednoduchá a čitelná pro čtení, proč se vývojáři jazyka C a následně C++ rozhodli pro své konstrukce nebo proč je Ada tak tvrdě striktní, ale např. pro mě ještě o chlup čitelnější, než zápis Javy. OOP bude možná přehlednější a pro budoucí rozšíření programu vhodnější, než strukturovaný zápis, to ale musím zjistit vlastní praxí, kdo ví a vše má svůj dobrý důvod.

Teď je drobet náročnější, že děti nejsou ve škole, takže na ranní vývojařinu mnoho času nezbývá, budu ale pokračovat jak budu moci, abych hru dokončil co nejdříve.

41
TADS / Re: Kroužící orel 2
« kdy: 25. Únor 2020 - 21:45 »
Orlí jámy a využití akce dobjFor(LieOn)

Na hře stále pracuji, mám hotovo cca 70 procent, takže jsem byl s rychlejším dokončením přeci jen přílišný optimista.
Je ale jasné, že se někde seknu, zatím jsem na většinu programátorských nástrah přišel. Už několik dní se ale pachtím s
akcí dobjFor(LieOn) a jak vidno, potřebuji si ujasnit věci, které se snažím aplikovat ne tak jak autoři při tvorbě jazyka předpokládali.
V příloze zasílám aktuální situaci s několika potřebnými místnostmi.

Ve hře se nachází orlí jámy určené na lov těchto dravců, potřebuji, aby hra reagovala na příkaz "lehni si do jámy" s tím,
že pokud má hráč nůž a návnadu, akce se provede a po zpracování opeřence získám nové předměty.


Pokud nemám v ruce žádný předmět, vše je OK a vyskočí hláška, kterou potřebuji:


>lehni si do jámy
Orla musím nejen na něco chytit, ale také mít šikovný předmět na zpracování masa a peří, nic nesmí zůstat nevyužito.


Pro úspěšný lov potřebuji mít v ruce nůž a návnadu. I přes můj kód však stačí mít jen jediný předmět, např. nůž a ještě
se text opakuje, místo aby hra zobrazila blok uvedený v else. Předměty typu PresentLater se v pořádku objeví:


>inv
Neseš nůž a na sobě máš bederní roušku, opasek, orlí medicínu a mokasíny.

>lehni si do jámy
Takže Ty se opravdu nebojíš lovu orlů...

>lehni si do jámy
Takže Ty se opravdu nebojíš lovu orlů...

>roz
Jihozápadní hranice prérie (ležíš na jámách)
Na jámách je orlí maso, orlí perutě, orlí pera a orlí letky.



Nejde mi jen o vyřešení problému, ale pochopení toho, co dělám špatně, přeci jen z Pecinovského Javy využívám IDE typu BlueJ, kde krásně graficky vidím provázanost tříd, objektů a volaných metod, zde mi není jasné následující:

V referenční knihovně si vyhledám Akce a rozkliknu LieOnAction, pokud dobře chápu, zjišťuji, že se jedná o třídu dědící od tříd TAction a Action a také od BasicProd a Resolver (které jsou však označeny jako objekty, i když po rozkliknutí jako třídy, zde se asi bude jednat o ten minimální rozdíl mezi třídou a objektem, který uvádíš ve svém manuálu). V sumáři vlastností a metod třídy LieOnAction vidím několik akcí xxx dobj xxx (snad se vyjadřuji přesně), nikoliv však akci s názvem dobjFor(LieOn), kterou potřebuji použít. Dobrá, vyhledám si všechny metody s názvem dobjFor(LieOn) (zde netuším, zda mohu akci typu dobj nebo iobj chápat jako metodu?) a vidím:
 
dobjFor(LieOn) - method of ComplexContainer in extras.t[207]
dobjFor(LieOn) - method of Thing in thing.t[10072]
dobjFor(LieOn) - method of Room in travel.t[4617]
dobjFor(LieOn) - method of NestedRoomFloor in travel.t[5161]
dobjFor(LieOn) - method of Floor in travel.t[5336]
dobjFor(LieOn) - method of BasicChair in travel.t[6440]
dobjFor(LieOn) - method of NominalPlatform in travel.t[6730]

Zde mě zaráží, že jsem nedohledal žádné propojení s třídou LieOnAction, tady něco chápu špatně. Potřebuji pracovat s věcmi v inventáři, takže se juknu blíže na aplikaci této metody ve spojení s třídou Thing a dostávám předpis:

    dobjFor(LieOn)
    {
        preCond = [touchObj]
        verify() { illogical(&cannotLieOnMsg); }
    }

Já se však ve svém kódu snažím využít nikoliv preCond a verify (mohu je chápat jako atributy metody?), ale verify, check a action společně s podmínkou začínající příkazem if a končící else, nakonec se snažím umožnit hráči nejen si s potřebnými předměty lehnout do jámy, ale také při položení obou věcí dosáhnout téhož pomocí dobjFor(PutIn) asDobjFor(LieOn).

Pokud dobře chápu, potřebuji rozšířit funkcionalitu metody dobjFor(LieOn) tak, abych mohl využít atributů verify, check a action. Je nepříjemné, že můj zápis hra nebere jako chybu (syntaktická to pro kompilátor není, sémantická však ano, pokud dobře rozumím, i tak je chování zvláštní, neměl by TADS při překladu zařvat, že se snažím volat neexistující atributy?).

Něco mi holt uniká, nechápu zatím propojení mezi třídou LieOnAction a metodou dobjFor(LieOn), tuším, že zde takové propojení bude např. přes třídu Thing a její metody.

Tohle ale pro další tvorbu musím pochopit, jinak na netriviálních akcích ztroskotám. Je mi jasné, že jsem se u Exoteru ptal na každou prkotinu, protože bez chápání výše uvedeného jsem se dál prostě nemohl dostat a jen zkoušel, zda nějaký zápis projde či nikoliv (a podobně jako zde se mi to např. s hořící pochodní podařilo, hru kompilátor přeložil, ale chovala se jinak, než jsem zamýšlel).


Moc se omlouvám za sakra dlouhou zprávu, snažil jsem se vyjádřit co nejpodrobněji. Mohu poprosit o objasnění - nejde jen o vyřešení problému, ale hlavně o postup a vysvětlení, co dělám špatně? Je mi jasné, že až mi tyto věci docvaknou, bude už šumák, jaký jazyk pro tvorbu použiji (samozřejmě budu-li se pohybovat v rámci OOP, pokud se nemýlím), protože stále více vidím, že princip programování je u všech těchto jazyků podobný. Pecinovského "Architektura nejdříve" a využití návrhových vzorů a UML bude parádní pro vymýšlení jak mám funkcionalitu programu navrhnout, šikovná metodika, např. programování řízené testy a právě pochopení propojení třída - objekt - metody mi umožní program konkrétně zapsat. Tak vývojařinu v současné době chápu, pokud se mýlím, nevadí, člověk se stále učí.

Zatím se loučí

Orel

42
TADS / Re: Kroužící orel 2
« kdy: 3. Únor 2020 - 10:28 »
Paráda, přesměrování rovnou do týpí díky Tvému zápisu parádně funguje, upravím u všech vchodů, tenhle trik jsem v manuálu nenašel nebo přehlédnul, určitě se do budoucna bude hodit. Zatím jde tvorba bez problémů, jdu pokračovat, únor budu ještě na tvorbu potřebovat, ale nevadí, rád bych se vyvaroval co největšího počtu chyb a popsal bez příliš častého využívání knihovní hlášky co nejvíce situací, do kterých se hráč může dostat.

Zatím se loučí

Orel

43
TADS / Re: Kroužící orel 2
« kdy: 15. Leden 2020 - 10:33 »
Krásné ránko přeji,

hlásím, že vývoj jde podle plánu, nejvíce času zaberou detaily typu přesného popisu všeho možného, správné mluvnické
rody a košaté rozhovory. Zatím jsem si poradil se všemi potížemi ohledně postav, práce s oděvy i kontejnery, opravdu
mi velmi pomáhá, když se umím podívat do knihovny funkcí a metod, kterou jsem si upravil pro Zeal. Dnes jsem dokonce
zjistil, že nejsem zdaleka sám, kdo vyvíjí hru z indiánského prostředí, This land is my land vypadá moc pěkně, sice
si jí na svém železe opravdu nespustím, ale i ta videa stojí za to.

Zeptal bych se na jednu drobnost, kterou sice umím vyřešit, ale rád bych věděl, zda je možné elegantní řešení vzhledem
ke struktuře mých zdrojáků. Jedná se o využití třídy Enterable, pokud chci např. jít do týpí, mohu zadat "dovnitř" nebo
"jdi dovnitř", ale po zadání "jdi to týpí" dostanu odpověď "To není něco, do čeho bys mohl vstoupit". Situaci chápu,
ostatně popisuješ jí ve svém návodu a také v Getting Started in TADS3 je na straně 56 přesně vysvětleno, co a proč dělat
plus v Library a souboru travel.t je krásně vidět provázanost jednotlivých tříd.
V příloze zasílám minimální zdrojáky pro postavu a dvě místnosti, je možné při této struktuře docílit funkčnosti příkazu
"jdi to týpí"? Pokud to nebude možné, nezbývá mi vše předělat tak jak popisuje manuál a je vyřešeno např. u chaty v Heidi.

A bych měl ještě něco z druhého soudku, TADS stále prozkoumávám a z Frobtads 1.2.3 jsem již před časem přešel na verzi
1.2.4. Vše je OK, jen pokud se pokouším zkompilovat Základnu, dostávám následující chybové hlášení, které jsem v předchozím
sestavení nezaznamenal:

symbol_export itemTablet.t -> obj/itemTablet.t3s
Neoprávněný přístup do paměti (SIGSEGV) (core dumped [obraz paměti uložen])

Program v Cčku bych např. projel pomocí GDB a Valgrindu, zde v TADSu debugger nemám. Mohu poprosit o simulaci, docela by
mě zajímalo, kde může být problém, protože se s ním při své budoucí tvorbě mohu setkat taky.

Jdu makat dále, tvorba mě čím dál více baví a to parádní způsob pro další vývoj.

44
TADS / Re: Kroužící orel 2
« kdy: 22. Prosinec 2019 - 19:37 »
Zdravím Toma,

děkuji za parádní povzbuzení, na programování jsem se opravdu nevyklašlal, jen jsem musel zkusit pár přístupů a zjistit, který mi nejvíce vyhovuje. Stejně jako s Linuxem, kde pro mě z vícero důvodů zvítězil Arch jsem zkoušel i C, Python a nakonec se zaměřuji na Javu a TADS, nejde ani tak o jazyk, ale naučit se opravdu programovat a chápat souvislosti, zde mi sednul Pecinovský a skvěle jsem se odpíchnul od věčného začátečníka.

Orla v TADSu se pokusím vytvořit sám bez dotazů, když se juknu do historie naší komunikace, už se jen usmívám nad některými dotazy, ale jinak to nešlo. Poradil jsem si se dvěma osobami v jedné místnosti a změnou dne a noci, nerad bych Ti zkazil zážitek z hraní dotazy se zdrojáky. Opravdu pečlivě se snažím vše popsat, ať se hráč do světa může pořádně vcítit, TADS mi dává parádní možnosti plus zkoumám mapovací program Trizbort, který by se možná dal využít jako automapa k webovému hraní, to zjistím časem.

Snažím se pokud možno opouštět Workbench, debugger obsažený ve frobtads mi stačí, zatím vyvíjím v kombinaci editor Pluma + příkazová řádka frobtadsu a zkouším QT Creator včetně testovacích skriptů, o tomto všem jsme si psali minule. Zde získám bezva zkušenosti plus Library reference jsem si připravil pro offline prohlížeč dokumentace Zeal (jen zatím neumím provést indexaci, aby Zeal vyhledával pomocí fulltextu, na to se vrhnu výhledově). Zdrojáky jsou opravdu mohutné, "užvatlanost" Javy vidím i zde, pokouším se však dodržovat maximální přehlednost, takže s vývojem nemám probléma ani při několika tisících řádků kódu.

Krásné prázdninové a sváteční dny přeje

Orel

45
TXT / Re: TXT engine
« kdy: 22. Prosinec 2019 - 19:23 »
Zdravím Pedra a spol.,

výborně, Trizbort jsem před nedávnem také objevil a pro tvorbu map a základní popis místností jej spokojeně využívám i pro vývoj v TADSu. Javascript plánuji s TADSem výhledově propojit, tady bude parádní možnost moderního online hraní, jeho integrace se skvělým TXT enginem je paráda, jen tak dále.

Jen ty nej nej nej svátky s radostí přeje společně s koňmi a poníky

Orel

Stran: 1 2 3 4 5 ... 14