Jak to udělám v URWIGO?
#21
Publikováno 04 únor 2010 - 11:51
#22
Publikováno 04 únor 2010 - 11:56
Me porad nejde do hlavy ta vetev kdy se vyhodnoti NE - viz obrazek o jedno vyse...ZCh napsal/a:
- vstup při získání odpovědi testuje, zda byla správná odpověď
--> ANO - pak provedu akce které umožňují hráči pokračovat dál (aktivuji/zviditelním další zónu, zaškrtnu splnění úkolu, dám mu předmět...) a současně deaktivuji příkaz "Otázka pro postavu"
--> NE - pak hráči hodím zprávu "To je ale blbě...." a hráč je donucen se postavy zeptat znova kliknutím na příkaz "Zeptat se postavy" (tzn. cyklus vůbec neprogramuji, ale hráč ho realizuje svým chováním)
#23
Publikováno 04 únor 2010 - 12:02
To ale znamena, ze za tim vstupem v kdyz musim zase delat porovnani odpovedi a vyhodnoceni spravnosti. A pokud je to zase spatne tak vlozit do kdyz zase ten vstup a tak az do zblbnuti...me2d09 napsal/a:
Aby se po špatné odpovědi zeptalo wherigo znovu, vloží se do větve jinak znovu žádost o vstup (je to i v tom maacově odkazu, ale tady je jen to podstatné).
Ja toziz evidentne hledam neco jako prikaz GOTO z Basicu :-) To je taky naposledy co jsem neco psal...
#24
Publikováno 04 únor 2010 - 12:05
bobrb napsal/a:
Me porad nejde do hlavy ta vetev kdy se vyhodnoti NE - viz obrazek o jedno vyse...
Wherigo nemá (a ani nemusí mít) cyklus.
Doporučuji se trochu kouknout na filosofii chování playeru, kterou (zřejmě ne příliš dobře) popisuji na konci článku http://www.wherigo.c...-utrob-playeru/
ZCh
#25
Publikováno 04 únor 2010 - 12:15
#26
Publikováno 04 únor 2010 - 12:21
Ale ne to zblbnutí nic dělat nemusíš, stačí to přesně jak jsem to ukázal na screenshotu. Volá se vnořeně ten samý input (Cislo). Prostě při správné odpovědi se ta funkce zavolá znovu. Můžeš si to představit jako že je tam goto začátek, ale ve skutečnosti to tak vůbec nefunguje (je to vnořená funkce, takže se to kupí na zásobníku a jde z toho teoreticky předat ven parametr). Příkaz goto se už v běžných programovacích jazycích nepoužívá kvůli přehlednosti a koncepci programování, v lua to ani nejde.bobrb napsal/a:
To ale znamena, ze za tim vstupem v kdyz musim zase delat porovnani odpovedi a vyhodnoceni spravnosti. A pokud je to zase spatne tak vlozit do kdyz zase ten vstup a tak az do zblbnuti...
#27
Publikováno 04 únor 2010 - 12:30
#28
Publikováno 04 únor 2010 - 12:30
Ovšem takový cyklus co popsal me2d09 v 99,.9 % případů potřebovat nebudete...me2d09 napsal/a:
Pokud bych chtěl udělat cyklus...
Je třeba rozlišovat, zda chci udělat cyklus:
- na úrovni chování hráče (tedy člověk s něčím neuspěje, tak to zkouší znova, a znova, až se konečně trefí...)
- nebo na úrovni programu (tzn. lua scriptu)
Ten "lidský" cyklus se dělá tak, že:
- člověk (hráč) provádí "GO TO" - tím že někam opětovně jde, stiskne talčítko odpovídající naprogramovanému příkazu pro postavu či předmět, ...
- a na úrovni Wherigo programujeme jenom podmínku pro ukončení cyklu
Takže z hlediska konstrukcí běžně dostupných v builderu - ať klasickém, nebo URWIGO - stačí jen příkaz typu IF
ZCh
#29
Publikováno 04 únor 2010 - 12:39
Tak ted uz vim i proc to funguje:-)me2d09 napsal/a:
Ale ne to zblbnutí nic dělat nemusíš, stačí to přesně jak jsem to ukázal na screenshotu. Volá se vnořeně ten samý input (Cislo). Prostě při správné odpovědi se ta funkce zavolá znovu. Můžeš si to představit jako že je tam goto začátek, ale ve skutečnosti to tak vůbec nefunguje (je to vnořená funkce, takže se to kupí na zásobníku a jde z toho teoreticky předat ven parametr). Příkaz goto se už v běžných programovacích jazycích nepoužívá kvůli přehlednosti a koncepci programování, v lua to ani nejde.
#30
Publikováno 04 únor 2010 - 15:34
#31
Publikováno 04 únor 2010 - 19:31
#32
Publikováno 05 únor 2010 - 16:33
#33
Publikováno 05 únor 2010 - 19:12
taaaak, to je teda pekny .... ode dneska se bude vsude behatMaxinoha napsal/a:
Publikoval jsem článek s video návodem Běháme s URWIGO
#34
Publikováno 05 únor 2010 - 21:53
#35
Publikováno 05 únor 2010 - 22:02
ProKesTom napsal/a:
Dovolím si nesouhlasit, že cyklus není potřeba. Rekurze má totiž tu nevýhodu, že je hrozně náročná na paměť. Pokud je zapojen lidský faktor, tak to uživatel asi vzdá včas. Ale pokud se cyklí strojově, může paměť dojít velice snadno. Asi by bylo vhodné ošetřit i možnost cyklus (byť realizovaný rekurzí) ukončit a třeba hru vzdát, uložit a nechat "na zítra".
ale v běžných cartridgích nikdy nebudeš používat ani cyklus, ani rekurzi - rozhodně ne k tomu, aby ses znovu zeptal na špatně zodpovězenou otázku. ono to vypadá jako rekurze v urwigo diagramu, ale uvnitř žádná rekurze není, jen sekvenční volání funkcí:
1. nějaký event vyvolá Wherigo.GetInput(zinputMůjinput) - a skončí
2. input visí na obrazovce. lua stroj je v tu chvíli nečinný a na zásobníku nic není
3. uživatel napíše odpověď a klikne na tlačítko
4. v lua stroji se vyvolá metoda zinputMůjinput:OnGetInput("uživatelova odpověď")
5. tahle metoda porovná odpověď se správnou a pokud správná není, volá zase Wherigo.GetInput(zinputMůjinput) - načež zase skončí, na zásobníku zase nic není a čeká se na akci uživatele
cykly/rekurzi potřebuješ jedině v situacích, kdy zkoušíš programově generovat nějaká data, např. automaticky vytvářet zóny. a to si stejně musíš napsat ručně a tam ten cyklus napíšeš
"ty vaše kešky" jsou mi celkem ukradené :ep
#36
Publikováno 05 únor 2010 - 23:26
#37
Publikováno 06 únor 2010 - 11:50
Jde jednoduše zjistit, jestli hráč opouštějící zónu v ní zanechal právě jen předmět, který do ní patří (aniž bych se musel ptát na všechny předměty zvlášť)? Třeba dotaz, kolik předmětů je v zóně, když jeden a je v ní ten pravý, je to OK.
Kde lze použít MEDIA typu TEXT, když do ZPRAVA to nejde, do UZIVATELSKY KOD to nejde...?
#38
Publikováno 06 únor 2010 - 12:29
ProKesTom napsal/a:
Dík za objasnění "rekurze" ve WerIGu.
Jde jednoduše zjistit, jestli hráč opouštějící zónu v ní zanechal právě jen předmět, který do ní patří (aniž bych se musel ptát na všechny předměty zvlášť)? Třeba dotaz, kolik předmětů je v zóně, když jeden a je v ní ten pravý, je to OK.
Kde lze použít MEDIA typu TEXT, když do ZPRAVA to nejde, do UZIVATELSKY KOD to nejde...?
Ahoj, ptát se na všechny předměty zvlášť nemusíš, je přece více možností jak si něco ověřit, např. vytvořit si proměnou s hodnotou nepravda (false) a při "použití" předmětu správným způsobem proměnou změnit na pravda (true). Pak se jen dotazuje na stav této proměné.
Co se týče média typu TEXT tak tento "format" nabízel Wherigo Builder takže jej YourSelf dal i do URWIGA, ale to neznamená že jej musíš používat, takových věcí co se nikdy nepoužijí je více, ale pro zachování možnosti impotru LUA souborů vytvořených v Buildru zůstanou i v urwigu.
Možná by jsi měl zkusit vytvořit nějakou wherigo keš a řešit jak udělat to co potřebuješ v cartridge než zkoumat různé funkce urwiga k čemu jsou když je ani nevyužiješ - abysme se taky dočkali nějaké nové wherigo keše
#39
Publikováno 06 únor 2010 - 12:54
Ve vlastním playeru neexistuje žádný atribut předmětu (ani postavy), který by definoval správnou příslušnost do konkrétní zóny.ProKesTom napsal/a:
Jde jednoduše zjistit, jestli hráč opouštějící zónu v ní zanechal právě jen předmět, který do ní patří.
Při definici předmětu/postavy sice můžu zadat jeho lokaci do konkrétní zóny, nicméně to je jen jeho výchozí poloha při startu hry.
Takže žádný z builderů pochopitelně nemá nějaký konkrétní mechanismus pro testování zda předmět/postava je ve správné zóně.
Takže pokud něco takového potřebuješ, musíš si to naprogramovat sám.
Tzn. u zóny kam "předmět patří" (píši schválně v uvozovkách, abych ještě jednou zdůraznil, že tohle už je zcela definováno tvůrcem hry a player nedisponuje pro tohle žádným mechanismem) do události Při opuštění vložím test zda je tam opravdu ten předmět, který tam coby tvůrce hry chci mít
Jak už napsal Maxinoha - je to z důvody kompatibility s originálním Builderem.ProKesTom napsal/a:
Kde lze použít MEDIA typu TEXT, když do ZPRAVA to nejde, do UZIVATELSKY KOD to nejde...?
Přestože lze média tohoto typu použít coby obrázek nebo ikonku u zóny, předmetu a postavy, nechápu smysl tohoto použití - leda snad že by někdo vytvořil pouze textový (negrafický) player ?
#40
Publikováno 06 únor 2010 - 13:09
4 uživatel(ů) prochází toto téma
0 uživatelů, 4 návštěvníků 0 anonymních uživatelů