Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Objektově orientované programování v Lua II

Luinar
Luinar (neregistrovaný)
5. 5. 2009 1:52 Nový

Deleni na komplexnich cislech

celé vlákno
Je to sice trochu hnidopisstvi, ale deleni na komplexnich cislech vypada ponekud jinak. Konkretneji se pak da spocist jako:
 __div = function(x, y)
         local mag = y.real ^ 2 + y.imag ^ 2 
         local y_upravene = { real = y.real/mag, imag = - y.imag/mag}
         return __mul(x,y_upravene) 
Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
5. 5. 2009 9:03 Nový

Re: Deleni na komplexnich cislech

celé vlákno
Hmm, kdyz jsem to psal z hlavy, tak jsem si rikal, ze to vyslo nejak moc jednoduse :-( Diky moc za upozorneni, vecer to s Petrem opravime.
Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
6. 5. 2009 11:26 Nový

Re: Deleni na komplexnich cislech

celé vlákno
Jeste jednou diky za upozorneni, uz je to opraveno.
karel
karel (neregistrovaný)
5. 5. 2009 9:48 Nový

Diky za tenhle serial

celé vlákno
Diky za tento serial, prisel prave vcas a dost se mi hodi. Cekam na kazde dalsi pokracovani.
Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
5. 5. 2009 11:52 Nový

Re: Diky za tenhle serial

celé vlákno
To jsem rad, ze serial nekomu pomuze. Kdybyste mel nejaky napad na dalsi tema (jsou naplanovane jeste tak 3-4 dily), tak se klidne ozvete.
D.A.Tiger aura:65
5. 5. 2009 13:00 Nový

Re: Diky za tenhle serial

celé vlákno
Nápady by byly, což o to :-D .

Například když už jste nakousl ty hry, nebylo by špatné popsat jak se hry vlastně vytváří. Nemyslím teď v konkrétním jazyce/knihovně/systému, ale obecný popis principů, technologii od klasických plošinovek, přes jednotlivé žánry až po 3D hry. Myslím že v tomto panuje (v širším podvědomí) docela chaos, nehledě na fakt, že článků (a ještě navíc v češtině) které by se obecně zabývaly herním software a nástroji které jsou k tomu potřeba nebo užitečné je jako šafránu...
Zdenek
Zdenek (neregistrovaný)
5. 5. 2009 14:07 Nový

Re: Diky za tenhle serial

celé vlákno
A ja bych zrovna pridal konkretni odkaz na framework pro hry a navic prave v Lua: LÖVE
D.A.Tiger aura:65
5. 5. 2009 15:04 Nový

Re: Diky za tenhle serial

celé vlákno
hmmm... aco třeba : http://gpwiki.org/index.php/Libraries - tam je toho mraky (konkrétních freamworků)
Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
5. 5. 2009 14:10 Nový

Re: Diky za tenhle serial

celé vlákno
To je dobry napad!

urcite to promyslim, tema je to dost siroke, ale kdyby se fakt probraly jenom principy, tak by to slo - jak rikas, prosinovky, potom klasicke "ctvereckove" i true 3D dungeony, klasicke strategie (ctverecky i sestiuhelniky :-), doom-like hry, letecke simulatory apod.
D.A.Tiger aura:65
5. 5. 2009 14:56 Nový

Re: Diky za tenhle serial

celé vlákno
Jsem rád že se líbí - už teď se moc těším :)

Jen jako typ - Asi bych začal tím jak hry vůbec interně fungují (aktualizační cykly, grafika, kolize, atpd), pak bych to postupně rozvíjel (pres žánry až po 3D ), no a nakonec bych skončil tím jak se profesionálně (nebo poloprofesionálně :)) ) hry vůbec koncipují....

Hmm... to by možná vydalo i na několik článků :-D
karel
karel (neregistrovaný)
5. 5. 2009 15:14 Nový

Re: Diky za tenhle serial

celé vlákno
Zajimalo by me napr. jak vytvorit v Lua vetsi projekt, tj. mit vice modulu, ktere se navzajem volaji. Dale nejaky zakladni prehled knihovnich funkci, proste takove ty veci, ktere jsou potreba pro napsani slozitejsich programu nez jake byly zatim videt v ukazkach. Vim ze to jde asi najit na netu ale neni nad dobre zpracovany clanek ktery da cloveku zakladni prehled a nasmeruje ho.

Na avizovane paralelni programovani se velmi tesim, to me take zajima.
Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
5. 5. 2009 16:03 Nový

Re: Diky za tenhle serial

celé vlákno
Ano, to urcite bude v dalsich dilech - zakladni knihovni funkce dostupne ve "standardni" Lua, zajimave knihovny a frameworky, ktere se mohou doinstalovat, Lua na WWW (presneji Lua ve web frameworcich), moduly (+ jmenne prostory) atd.
Ladislav Thon
Ladislav Thon (neregistrovaný)
5. 5. 2009 14:30 Nový

použití konstruktoru?

celé vlákno
Možná hloupá otázka, ale má to nějaký důvod, že operátorové metametody nevolají konstruktor, ale setmetatable nad asociativním polem? Přece by klidně mohlo být
__add = function(x, y) return Complex:new(x.real + y.real, imag = x.imag + y.imag) end
Nebo ne?
Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
5. 5. 2009 14:42 Nový

Re: použití konstruktoru?

celé vlákno
Muze to tak samozrejme byt (jestli myslite druhy ci treti demonstracni priklad), protoze se vzdy vytvari nova instance komplexniho cisla (presneji asociativniho pole + metatabulky).
Petr Pitak
Petr Pitak (neregistrovaný)
5. 5. 2009 22:45 Nový

Operator : v Complex:new

celé vlákno
Zajimalo by me, proc v definici a pozdejsim volani ma funkce new pred sebou operator ":" a ne "." .

Vzdyt v tomto pripade je Complex spise jen modul, ne konkretni instance tridy. A pokud se koukam spravne, ani v tele funkce nevidim pouziti implictniho parametru self.

Prehledl jsem neco ?
Ksl
Ksl (neregistrovaný)
5. 5. 2009 23:04 Nový

Re: Operator : v Complex:new

celé vlákno
V Lua žádné instance třídy nejsou. :]
z1 = Complex:new(1, 2)
je vlastně totéž, co
z1 = Complex.new(Complex, 1, 2)

s tím, že ten "neviditelný" Complex v arglistu se na "volané" straně ignoruje. V zásadě je možné deklarovat funkci pomocí tečky a přitom ji volat pomocí dvojtečky i naopak, ale k čitelnosti by něco takového pochopitelně asi neprospělo.

Je úplně jedno, jestli ji vytvořím ve tvaru Complex:new(real, imag) a volám z=Complex:new(1, 2) nebo ji jestli vytvořím ve tvaru Complex.new(real, imag) a volám z=Complex.new(1, 2).

Osobně bych tady samozřejmě preferoval tečku, už jako takové "nakopnutí", ale funkční je oboje.

Petr Pitak
Petr Pitak (neregistrovaný)
5. 5. 2009 23:32 Nový

Re: Operator : v Complex:new

celé vlákno
Jasne, tak to si rozumime. Spatne jsem se vyjadril - vim ze v Lue nejsou tridy - myslel jsem to semanticky jako zpusob pouziti :).

Jinak mate pravdu, ono to asi fakt vytvori jen ten prebytecny argument, to je to, co me zmatlo - proto jsem tam chtel dat tu tecku.
Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
6. 5. 2009 11:13 Nový

Re: Operator : v Complex:new

celé vlákno
Mate pravdu, u funkce new se skutecne parametr self nepouziva (instance objektu se jeste nevytvorila), take v prvni kapitole je konstruktor zadefinovan pouze s teckou. Pouziti dvojtecky je v tomto pripade spis kvuli zprehledneni programu - nemusi se premyslet ani u volani funkci/metod, kde pouzit tecku a kde dvojtecku, vzdy se pouzije dvojtecka (presneji, klidne je mozne "dvojteckove" metody volat i "s teckou", ale musi se rucne doplnit prvni parametr, jak uz predemnou napsal Ksl, popripade naopak mit zadefinovanou metodu s teckou a explicitnim selfem a volat i s dvojteckou).

Pouziti dvojtecky v new ma samozrejme za nasledek velmi nepatrne prodlouzeni programu (kvuli predavani zbytecneho parametru), ale to bych si dovolil v takto vysokourovnovem jazyce ignorovat - ostatne i programatori v Jave/C++ vetsinou vsude pouzivaji "bezne" metody namisto statickych metod (v podstate funkci) i tam, kde ve skutecnosti nepotrebuji this :-)
pozortucnak
pozortucnak (neregistrovaný)
6. 5. 2009 23:27 Nový

RE: Objektově orientované programování v Lua II

celé vlákno
Pavel Tišnovský aura:98
6. 5. 2009 23:30 Nový

RE: Objektově orientované programování v Lua II

celé vlákno
jj, tim se take budeme zabyvat. Potom jeste Meta Luou, nad ni se da postavit napriklad Smalltalk-like objektovy system :-)
pozortucnak
pozortucnak (neregistrovaný)
6. 5. 2009 23:39 Nový

RE: Objektově orientované programování v Lua II

celé vlákno
Jinak máte můj obdiv...
Těch článků/znalostí...

Jinak mimo mísu... Rád bych se něco dočetl o jazyce ocaml...
Pavel Tišnovský aura:98
7. 5. 2009 22:25 Nový

RE: Objektově orientované programování v Lua II

celé vlákno
Díky :-)

OCaml je skutečně zajímavej, ještě taky Erlang (ten má podle mě skvělou budoucnost, ale uvidíme, ona je oblíbenost jazyka dost módní" věc). Avsak znalost Luy se urcite neztrati, nejaky ten embedded jazyk se hodi skoro v kazde stredni ci vetsi aplikaci, minimalne proto, aby se clovek nemusel morit s konfiguraky :-)
pozortucnak
pozortucnak (neregistrovaný)
6. 5. 2009 23:41 Nový

RE: Objektově orientované programování v Lua II

celé vlákno
Pavel Tišnovský aura:98
7. 5. 2009 22:05 Nový

RE: Objektově orientované programování v Lua II

celé vlákno
Popravdě jsem se na to ještě nedíval, zkusím teď o víkendu a popř. poreferuju :-)
pozortucnak
pozortucnak (neregistrovaný)
6. 5. 2009 23:35 Nový

RE: Objektově orientované programování v Lua II

celé vlákno
Asi blbé dotazy - programovat (zatim) neumim...
1) Mužu v jazyce C volat Lua funkce? (Tedy přesně opačně než bylo zatím popsáno...)
2) Jde s Lua vytvořit dll/so knihovna?
3) Ale hlavně by mě zajimalo, jak by se delal bidding na C++ knihovnu...
D.A.Tiger aura:65
7. 5. 2009 2:17 Nový

RE: Objektově orientované programování v Lua II

celé vlákno
Pavel Tišnovský aura:98
7. 5. 2009 22:22 Nový

RE: Objektově orientované programování v Lua II

celé vlákno
1) samozřejmě to jde. Napřed se pomocí funkcí lua_push....() doplní na zásobník interpretru potřebné parametry a potom se zavolá lua_call(). Výsledek se přečte pomocí lua_getresult() a dále zpracuje.

2) jde to, ale záleží, co je přesně očekáváno. Interpretr Lua + vlastní céčkový program do DLL/so půjde dát. V předchozích verzích byly nějaké problémy s tím, že mohla existovat jen jedna instance interpretru, to je teď myslím už vyřešeno.

3) půjde to, ale ruční volání C++ metod z Lua je trošku náročné (samozřejmě to jde, ale ruční práce se zásobníkem je otravná). Lepší je IMHO použít nástroje typu http://wwhiz.com/LuaPlus/LuaPlus.html apod.
lukas.kolinsky
lukas.kolinsky (neregistrovaný)
13. 5. 2009 13:40 Nový

metatabulky

celé vlákno
Mel bych pripominku, kdyz se mluvilo o metatabulkach, mohlo se zminit (pro ty vetsi zacatecniky), ze s jeji pomoci se da simulovat case z C. Kdyz se pise nejaky skript treba s eventy (addony pro WoW atp.) tak mit 30 ifu a elseifu je trochu neprehledne, takze je lepsi si vytvorit tabulku s metatabulkou s __index a to co prijde jako event predavat jako klic pro tabulku. Jako else pak slouzi klic v __index
Pavel Tišnovský aura:98
18. 5. 2009 21:45 Nový

Re: metatabulky

celé vlákno
jj, díky za upozornění. Ještě pro propašuji do některého z dalších dílů seriálu, například do nějakého demonstračního příkladu.
Zasílat nově přidané příspěvky e-mailem