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é).
Me porad nejde do hlavy ta vetev kdy se vyhodnoti NE - viz obrazek o jedno vyse…
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…
Ja toziz evidentne hledam neco jako prikaz GOTO z Basicu
To je taky naposledy co jsem neco psal…
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.cz/tvorime/pohled-do-utrob-playeru/
ZCh
A jak ZCh správně podotknul, nejedná se o cyklus, ale o spíš rekurzi (vnořené volání toho samého). Pokud bych chtěl udělat cyklus (lua to umí, urwigo diagramem přímo ne, protože to není potřeba), použiji k tomu uživatelský skript. Přikládám takovou malou ukázku co jde v URWIGU jednoduše udělat. (pokud si to chcete naprogramovat, vytvořte proměnou moje_pi a nastavte její identifikátor na moje_pi, jinak vám to nebude fungovat!)
Ale ne
to zblbnutí nic dělat nemusíš, stačí to přesně jak jsem to ukázal na screenshotu. Volá se vnořeně [b]ten samý input /b. 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 ([small]je to vnořená funkce, takže se to kupí na zásobníku a jde z toho teoreticky předat ven parametr[/small]). 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.
Tak jsem to nejak vytvoril a zkusil a ono to opravdu funguje tak jak jsem chtel. Sice jeste nevim presne proc, ale budu se v tom stourat dal:-)
Problem je hlavne v tom, ze jsem programoval naposledy neco jednoducheho naposledy na nejakem osmibitu a tam si zazil slavny a nenavideny prikaz GOTO. Ted se ho v podstate musim odnaucit a to bude chvili problem
V me logice (viz 04.02.2010 12:02) bych tu rekurzi potreboval vlastne donekonecna ale ono to fakt funguje bez ni:-)
Obema diky moooooooooooc
Ovšem takový cyklus co popsal me2d09 v 99,.9 % případů potřebovat nebudete…
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
Tak ted uz vim i proc to funguje:-)
Ahoj, na prezentaci jsem se už, bohužel, nevešel, ale urwigo jsem si stáhnul a je to perfektní, velké díky autorovi (autorům?).
A teď dotaz: Před nedávnem jsem se seznámil s tzv. "locationless" wherigovkami. Dokonce jsem se dozvěděl, že se to dá napsat v LUA. Podporuje urwigo i locationless wheriga? A pokud ne, plánujete to někdy v budoucnu zapracovat?
Díky za odpověď.
Publikoval jsem článek s video návodem Začínáme s URWIGO.
Publikoval jsem článek s video návodem Běháme s URWIGO
taaaak, to je teda pekny … ode dneska se bude vsude behat ![]()
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".
Moje dotazy:
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…?
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í:
- nějaký event vyvolá Wherigo.GetInput(zinputMůjinput) - a skončí
- input visí na obrazovce. lua stroj je v tu chvíli nečinný a na zásobníku nic není
- uživatel napíše odpověď a klikne na tlačítko
- v lua stroji se vyvolá metoda zinputMůjinput:OnGetInput("uživatelova odpověď")
- 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š
Díky matejcikovi za pěkné vysvětlení. Jinak pokud by někoho zajímala velikost zásobníku tak v emulátoru vyplivne Stack Overflow při 16379 volání a Oregon zatuhne v 12475 vnoření. Ale praktický význam je opravdu jen pro nějaké generování objektů a nebo nějaké výpočty.
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 ![]()
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.
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.
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 ?
Rozhodně nějaká nová wherigovka se objeví.
O tobych strach neměl. Právě, že pár dní jsem si s tím hrál, zkoušel to pochopit, a teď zkouším svojí první whergo keš. B)
Ale přemýšlím, jak se liší jednotlivé typy aktivit jako: Průvodce, Puzzle, Fikce a Geocache? A další, jaký smysl má Start. Je to asi jenom takový informační bod, ze?
Jinak se též přimlouvám za více videonávodů. ![]()