Programování pro hračičky/Andělé/2012/Domácí úkol 5

Jak používat klasifikační nálepkuTato stránka je součástí kurzu:
středoškolská
Příslušnost: skupinová

Toto je stránka vytvořená v rámci již proběhlého kurzu a nyní sloužící k jeho archivaci. Tuto stránku již prosím needitujte! Pokud se chcete do kurzu zapojit, pak vyhledejte aktuální běh na hlavní stránce kurzu či se zeptejte v příslušné diskusi.


Byť domácí úkol k 5. lekci spočívá v programování v rámci mudu a nepotřebuje být přepisován sem, můžete si své problémy a nápady odložit též zde, nebo se tu o nich poradit.

Jako u minulých úkolů si prosím udělejte vlastní kapitolu, tedy oddělte své zápisky od předchozího textu nadpisem se svým jménem.

Waran (Slenderman aka Jan Horák)

editovat

Nastavení hlášek pro netradiční směry

editovat

Jak tak zkouším virtual_compilerem generovat 4D prostor, narazil jsem na další hloupý problém. Už mi nestačí totiž šest základních směrů (sever, jih, východ, západ, nahoru, dolů), a tak jsem zavedl další dva - oranžová a modrá. Problém je však s hláškami. Odchodovou hlášku jsem už upravil pomocí set_exit_msg. Nevím ale jak to udělat, že když mám nastaveno (pomocí EXIT_VIEW), že jde koukat skrz průchody, abych hráče viděl směrem oranžová, a ne "0". Co zatím brouzdám po nápovědách, ne a ne na to narazit.

Aha. No, tak to bude možná, obávám se, na zásah do programových knihoven. Myslím, že tohle je někde v modulu /i/living/eyes... Zkusím na to kouknout zítra večer nebo v pondělí, pokud to stihnu, a popřemýšlím, co by se s tím dalo dělat. --Mmh (diskuse) 8. 12. 2012, 19:55 (UTC)
Jinak tedy, nakolik to chápu z naší rozmluvy, jedná se o čtyřrozměrný prostor, tedy k osám sever-jih, východ-západ a nahoru-dolu přibývá nová. Vlastně bychom mohli zkusit rozšířit programové knihovny tak, aby šly další dimenze udělat snáze, ale pak mám dojem, že oranžová-modrá možná není úplně ideální označení. Spíše bych se klonil k něčemu jako minulost-budoucnost. Také by pak bylo potřeba rozmyslet všechny tvary (sever, na sever, k severu, ze severu, od severu, na severu, severní -- a teď to odpovídající třeba pro "oranžová", nebo pro "budoucnost"). --Mmh (diskuse) 8. 12. 2012, 19:59 (UTC)
S označením budoucnost/minulost problém nemám (oranžová a modrá byla první kombinace slov, jejihž první písmena se ještě nevyskytují ve směrové zkratce). Jinak koukám, že Charles Howard Hinton už nové směry ve čyřrozměrném prostoru nazval, a to ana a kata. Jenom nevím, jak to v češtině ohýbat...
--Waran (diskuse) 9. 12. 2012, 10:57 (UTC)
Ana a kata je prostě řecky nahoru a dolů, takže u mne tedy nic moc. Samozřejmě by z toho něco odvodit šlo (třeba to rozšířit na anoda a katoda, tedy řecky cesta nahoru a cesta dolů, a pak by se chodilo na anodu, od anody, foukal by anodní vítr atd.). Mnou plácnutá minulost a budoucnost mají také tu výhodu, že zkratková písmena nekolidují s jinými směry. Dále mne napadá Pratchettovský střed a okraj (ovšem s by kolidovalo), pak obecné tam a onam, případně kupředu a zpět, nebo také hladce a obrace. Nějaké další nápady? --Mmh (diskuse) 9. 12. 2012, 15:52 (UTC)
Hned sem dodám ten nápad z naší rozmluvy, než to zapomenu: přídech a úvan. --Mmh (diskuse) 9. 12. 2012, 16:37 (UTC)
Pratchettovské je i posměrně a protisměrně, to se nám ale moc nehodí. Přídech a úvan zní zajímavě, ale vítr by pak byl úvanní nebo jaký?--10. 12. 2012, 21:27 (UTC), Utar (diskuse)
Jo, přídešní a úvanní. --Mmh (diskuse) 10. 12. 2012, 21:47 (UTC)
Beru. --10. 12. 2012, 23:01 (UTC), Utar (diskuse)
Jsem též za. --Waran (diskuse) 11. 12. 2012, 19:43 (UTC)
Ještě bych dal do úvahy, zda by nebylo lepší to prohodit, tedy údech a přívan, protože slovo přídech má už svůj význam. --Mmh (diskuse) 12. 12. 2012, 01:33 (UTC)
(Nijak zvlášť pádný důvod to ovšem není, východ i západ mají v jazyce také jiné významy než jen světové strany.) --Mmh (diskuse) 12. 12. 2012, 01:34 (UTC)
To mne taky napadlo, prohodit to. Ale nemohl jsem se rozhodnout, která verze je lepší, tak jsem to sem ani nepsal. Spíš bych se pak rozhodoval podle toho, jaké zprávy se s těmihle směry budou pojit. Pokud to bude prostě Hráč přichází z, tak radši přívan, ať se do toho ten přídech neplete. Pokud to ale bude Hráč přidechává/přivání/přilétá z, tak klidně i přídech.
Jiný pohled, co mne napadl, byl: je A, B, C, kde B je obyčejný svět, doleva (C > B, B > A) to je jeden směr (např. přídech), doprava druhý (úvan). A a C pak budou pojmenované právě těmi prohozenými názvy (zde by to vyšlo světy Přívanu/Údechu). Tohle je varianta spíše pro speciální hlášku, ne jen Hráč přichází z. Nejsem si ale jist, zda Waran nechtěl celou osu Přívanů/Údechů (co třeba je pak prostě číslovat: o přídech nalevo od Přívanu III je Přívan IV). --12. 12. 2012, 08:07 (UTC), Utar (diskuse)
Nakolik to chápu, jedná se o celou novou souřadnicovou osu.
Zjistil jsem však pro přídech i přívan nepříznivou věc: zkratka "p" je už zažitá jako zkratka za "prohlédni si". --Mmh (diskuse) 12. 12. 2012, 21:14 (UTC)
Prošel jsem si všechny možné předpony a kombinace, a jako možné řešení s nekolidující zkratkou mne napadá kombinace úvan/obdech, případně odvan/údech. --Mmh (diskuse) 13. 12. 2012, 01:25 (UTC)
Jo, a možná by stálo za to se přesunout na stránku domácího úkolu k 6. lekci, protože tam už jde přímo o pohyb a o průchody mezi místnostmi (potažmo jejich směry). --Mmh (diskuse) 13. 12. 2012, 21:22 (UTC)

Když už jsme u těch směrů, je nějaká metoda pro předání pole všech aktuálních směrů? Neboli aby mi to teď naplnilo pole deseti hodnotami (4 hlavní, 4 vedlejší, nahoru, dolů) a po přechodu na vyšší dimenze více položek? --10. 12. 2012, 23:01 (UTC), Utar (diskuse)

Jak "aktuálních"? Něco jako query_command_list()? --Mmh (diskuse) 10. 12. 2012, 23:28 (UTC)
Myslel jsem trochu něco jiného (všechny směry, které umí EXIT_VIEW; to je asi ta správná definice), ale tahle funkce se taky hodí. Díky --10. 12. 2012, 23:58 (UTC), Utar (diskuse)
Poté, co jsme to onlajn prodebatovali přímo v Prazích, sem jen šoupnu výsledek pro zdejší čtenáře: EXIT_VIEW umí správně do věty zapracovat osm světových stran a směry nahoru a dolů. Není žádná funkce, která by vracela pole těchto deseti směrů. Existuje funkce query_ss_array(), která vrátí pole osmi světových stran, což je užitečné pro mapové moduly. Ani trojrozměrnou mapu už nemáme (nepočítáme-li mimořádnou možnost přechodu mezi jednotlivými mapovými doménami, tedy po třetí souřadnici). Pokud bychom dodali čtvrtý rozměr, byla by to zprvu nová dvojice typu nahoru/dolů, tedy mimo mapové funkce. Samozřejmě, kdyby z toho chtěl někdo vypracovat celou mapovou doménu, už by se hodilo si na to udělat příslušné inherity (a případně i zadefinovat mezisměry, třeba szdp jako severozápadodolnopřívan). --Mmh (diskuse) 11. 12. 2012, 11:24 (UTC)

Teleportační místnost - /i/move.c hlásí chybu na řádku 302

editovat

Při stavbě teleportační místnosti se mi vyskytl následující problém:
Odchycení uživatelského příkazu a proměnné s probíhá bez problému, potíže nastávají zde:

this_player()->move("/w/slenderman/room/1", "MOVE_MAGIC",
                    "$Ten(1,OBJ_TP) se soustředí na našedlý obláček.\n$Ten(1,OBJ_TP) s tichým zabzučením mizí.",
                    "Něco zabzučelo, a v místnosti se objevuje $ten(1,OBJ_TP).");
return 1;

(soubor /i/move.c mám samozřejmě zděděný)
Při spuštění mi to však hlásí chybu:

Soubor: /i/move.c  Řádek: 302
Objekt: /w/slenderman/portalovka

	old_room->add_encumbrance(this_object(),ENC_REMOVE,0);
	if (way & MOVE_ATOM_MESSAGE)
	    this_object()->send_move_out_msg(old_room, new_room, way,

Chyba: Bad argument 1 to &()

Sedím nad tím už notnou chvíli, a stále nemůžu objevit, kde jsem udělal chybu. Nejsem si jistý, zda jsem správně zadal typ přesunu (MOVE_MAGIC), ale když to tam zadám bez uvozovek, hlásí to, že proměnná nebyla definována.
--Waran (diskuse) 8. 12. 2012, 12:18 (UTC)

Chyba je to přímo ukázková: Nejde o "MOVE_MAGIC", nýbrž o MOVE_MAGIC. Je to celočíselná konstanta, tedy "přezdívka" nějakého celého čísla, které si nemusíme pamatovat (a které se může interně případně změnit) a můžeme místo něho používat tento identifikátor. Když se tam místo toho dá totéž v uvozovkách, tedy řetězec, a modul /i/move se pokusí tento řetězec pomocí & (bitový součin) soperovat s celým číslem, nastane ona chyba: špatný parametr č. 1 u operace &. --Mmh (diskuse) 8. 12. 2012, 13:32 (UTC)
Do "záhlaví" doplněno #include <move.h> a funguje. Díky.
--Waran (diskuse) 8. 12. 2012, 13:52 (UTC)

Počítač Slandy4U - Sběr nápadů

editovat

Jako prostředek ke splnění domácího úkolu jsem si vzal myšlenku počítače v počítači (inspiroval jsem se počítačovou učebnou lycea v Prazích), k vyzkoušení se v Prazích dostanete příkazem:
cíl /w/slenderman/pocitacovka
stroj spustíte příkazem $ start.
Při tvoření tohoto úkolu jsem se myšlenkou dost nadchnul, problém je ale v tom, že mě nenapadá, co by mohl všechno počítač umět.
Napadne-li někoho něco, budu velmi vděčný, když mi nápad nějak pošlete (buď přímo v prazích, např. z mé pracovny (cíl /w/slenderman/workroom) příkazem piš dopis (pozor, ve většině místností to nejde)), nebo na jeden z dalších prostředků, uvedených v mých kontaktech.
Předem díky za pomoc!
--Waran (diskuse) 7. 12. 2012, 21:02 (UTC)

Poznámka: pro anděly by piš dopis mělo být možné kdekoliv, protože si svůj (neviditelný) mejlový klient nosí pořád s sebou; pokud se někomu náhodou cestou ztratil (objekt může zaniknout při spoustě příležitostí), může si dotyčný pořídit nový v Místě věcí v Pantomatu. --Mmh (diskuse) 8. 12. 2012, 13:34 (UTC)