--- Log opened Sun Feb 24 00:00:58 2008
00:06 -!- gerpetya [i=gerpetya@catv-d5de8335.catv.broadband.hu] has quit [Read error: 104 (Connection reset by peer)]
11:39 -!- gerpetya [i=gerpetya@catv-d5de8335.catv.broadband.hu] has joined #spqr
11:39 < gerpetya> hali
11:39 < gerpetya> vagy?
11:43 < vmiklos> joregg
11:44 < gerpetya> lenne egy kerdesem a leptetessel kapcsolatban
11:45 < gerpetya> ugyebar a kigyoelemnek a fieldet vhogy ismernie kene, amin van
11:45 < gerpetya> (a leptetes miatt)
11:46 < gerpetya> es akkor a kigyoelem rendezne a leptetest
11:46 < vmiklos> hm
11:46 < gerpetya> vagy pedig a mezok intezzek el a leptetest es akkor...
11:46 < vmiklos> a leptetest nem a kigyonak kene vegeznie?
11:46 < gerpetya> igen, de a kigyo csak az elemeit ismeri
11:47 < vmiklos> tehat akkor kigyoemem leptet -> kigyo leptet -> minden kigyoelem leptet -> kigyoelemhez tartozo mezo utkoztet
11:47 < vmiklos> ez igy baromsag?
11:48 < gerpetya> csak az a gaz, hogy magat a tenyleges leptetest csak a gamefield vegezheti, hiszen o ismeri a mezok szomszedjait
11:48 < vmiklos> hm
11:48 < gerpetya> tehat meg maga a mezo sem tudja, hogy ki a szomszedja
11:49 < gerpetya> ahhoz hogy megtudja, le kell kerdeznie a gamefield-tol
11:49 < gerpetya> igazabol arra kene sztem torekedni, hogy egy adott esemenyt minel kevesebb objektum vegezzen el
11:49 < vmiklos> igen, ez stimm
11:50 < vmiklos> gamefield == mezo?
11:50 < gerpetya> nem
11:50 < gerpetya> a gamefield maga a játéktér
11:50 < gerpetya> a mezo pedig az eleme
11:50 < vmiklos> ja ertem
11:51 < gerpetya> meg azt se nagyon tudom, hogy hogyan taroljuk magat a mezoket a játéktér osztályban
11:51 < vmiklos> 2d tomb?
11:52 < gerpetya> pill
11:52 < gerpetya> na, csak kavarodok már itt az ékezetekkel:)
11:52 < gerpetya> szval
11:53 < gerpetya> a lényeg, hogy az lenne a legjobb, ha a mező közvetlenül tudná, hogy ki a szomszédja
11:53 < vmiklos> hat akkor esetleg olyasmit lehetne, hogy: a kigyonak van egy leptet metodusa ami meghivja az egyes kigyoelemekre a leptet metodust az meg annyit csinal, hogy meghivja a kigyoelem alatt levo mezo
11:53 < gerpetya> és a kígyóelem honnan tudja, hogy ki van alatta?
11:54 < vmiklos> bah:)
11:54 < vmiklos> hat akkor esetleg olyasmit lehetne, hogy: a kigyonak van egy leptet metodusa ami meghivja az egyes kigyoelemekre a leptet metodust az meg annyit csinal, hogy meghivja a gamefield lepteto metodusat, megadva h merre akar lepni, meg h o kicsoda. a gamefield metodusa az visszaadja ennek megfeleloen az uj mezot
11:54 < vmiklos> na ezt akartam irni, bar a kerdes tovabbra is fennall
11:54 < gerpetya> mert végülis el tudná tárolni a kígyóelem az alatta lévő mezőt, csak akkor már elég redundáns lenne
11:55 < vmiklos> jaja
11:55 < vmiklos> hm nem. amit most utoljara irtam ahhoz nem kell tudja a kigyoelem h hol all
11:56 < vmiklos> leven a kigyoelem a gamefieldnek csak a kigyoelem objektumot adja at
11:56 < vmiklos> es a gamefield meg pl vegigkerdezi a mezoktol h "bennevagy-e"
11:56 < vmiklos> "bennevan-e"
11:57 < vmiklos> aztan ha ez igy nagyon lassu lesz akkor esetleg tarolhatjuk a kigyoelemben h o hol van, de ezt majd kesobb
11:58 < gerpetya> nem is csak a lassúságán van a gond, hanem hogy rengeteg felesleges művelet van, ezért nem tetszik
11:58 < gerpetya> csak minden elképzelésemmel ez a baj
11:58 < gerpetya> :S
11:58 < vmiklos> sztem most arra kene torekedni h minden adatot csak 1x taroljunk
11:59 < vmiklos> az h ezt lassu-e elerni az nem a ma problemaja
11:59 < gerpetya> ok
12:03 < vmiklos> a gamefielden a fal is u.ugy egy teljes mezot foglal el mint a bogyo, ugye?
12:04 < vmiklos> ezt a legegyszerubb megvalositani :)
12:07 < gerpetya> igen, az is egy mező
12:08 < vmiklos> jatek inditasanal en a kovetkezokre gondoltam: egyreszt a jatekosok letrehozasa, masreszt a gamefield inicializalasa (gondolom ott konstruktorban meg kene adni pl egy 2d tombben h melyik mezon mi legyen; 0 = semmi, 1 = strawberry stb es akkor az alapjan letrehozna a megfelelo objektumokat) harmadreszt pedig a kigyok letrehozasa. van meg valami ami szted kell?
12:08 < vmiklos> ja es nyilvan a kigyok jatekosokhoz valo rendelese
12:09 < gerpetya> igen
12:09 < gerpetya> ennyi, ami kell
12:09 < gerpetya> vagyis nem (mármint nincs más ami kell) :D
12:09 < vmiklos> k
12:10 < vmiklos> asszem 1x leirom magamnak szoban mielott elkezdek szenvedni a netbeans szekvencia-diagram-keszitojevel ;)
12:13 < gerpetya> még vmi az ütközéshez: a kígyóelem honnan tudja, hogy melyik kígyóhoz tartozik?
12:14 < vmiklos> nem jo ha kap ra 1 referenciat konstruktorban?
12:15 < vmiklos> vagy pedig megkerdezheti attol az objektumtol ahol a kigyok listajat taroljuk
12:15 < vmiklos> elvileg utobbi az ami rendundancia nelkul tarol:)
12:17 < vmiklos> utobbit kene, ha kovetkezetesek vagyunk (mezo se tudja h kik a szomszedjaik redundancia-elkerules vegett)
12:20 < gerpetya> nézegettem a régi doksikat (mintapelda.pdf meg hasonlók) és ott is van redundancia rendesen
12:21 < gerpetya> végülis a kígyóelem az nem változik
12:21 < gerpetya> mindig ugyanaz a kígyó lesz a tulajdonosa
12:21 < vmiklos> uhum
12:21 < gerpetya> nemtom
12:22 < vmiklos> van egy otletem
12:22 < vmiklos> a kigyo mar letezik mikor letrejonnek az egysegei?
12:22 < gerpetya> hát gondolom
12:22 < vmiklos> mert akkor az egysegek megkaphatnak konstruktorban a kigyo referenciajat
12:23 < vmiklos> es arra is meglenne a magyarazat h miert nem csinaljuk u.ezt a mezoknel: mivel a mezok letrehozasakor meg a szomszedok nem leteznek altalaban
12:24 < gerpetya> viszont a mezőknél meg azért lenne jó megint tárolni, mert nem kéne minden egyes szomszéd kérésnél végignézni az összes mezőt
12:25 < vmiklos> hm. akkor azt lehet, hogy ketszer megyunk vegig
12:25 < vmiklos> egyszer letrehozzuk az osszeset
12:25 < vmiklos> es masodik korben meg beallitjuk a szomszedokat
12:25 < gerpetya> jaja
12:26 < vmiklos> a snake valtozoihoz sztem kene 1 enum ami megmondja h a 4 iranybol merre fog lepni a kov lepteteskor
12:27 < gerpetya> az van, igen, csak még a honlapra nem írtam
12:27 < vmiklos> ok
12:30 < vmiklos> azt szerinted hol lenne erdemes tarolni h pl a wasd meg a nyilak melyik kigyot vezerlik?
12:31 < gerpetya> a játékosban kéne tárolni
12:31 < gerpetya> mivel minden kígyót ugyanaz vezérel egy játékoson belül, ezért gondolom
12:32 < vmiklos> elvileg lehet olyat h 1 jatekosnak 2 kigyoja van es azokat kulon tudja vezerelni :)
12:32 < vmiklos> ja de akkoris jo amit mondtal
12:33 < vmiklos> jatekosban lehetne tarolni azokat a bill. kodokat amik az adott jatekoshoz tartoznak + egy referenciat az aktiv kigyora
12:34 < vmiklos> + egy listat az osszes jatekoshoz tartozo kigyora de gondolom erre te is gondoltal csak meg nincs fenn a honlapon
12:34 < gerpetya> az már elvileg fenn van
12:35 < vmiklos> ja latom
12:35 < gerpetya> annyira belemélyültem ebbe az egész modellbe, hogy már a legegyszerűbb dolgokon sem tudok gondolkodni:(
12:36 < vmiklos> :)
12:41 < vmiklos> a robotoknal legyen ugy h a jatekosban van egy boolean h robot-e vagy nem?
12:41 < vmiklos> leven az ido leptetesenel a robotoknal random kell majd egy olyan h iranyt valtoztat v epp nem csinal semmit. a normal jatekosoknal meg nyilvan nem szabad belenyulni
13:02 < vmiklos> hm feltetelezem h igy lesz aztan max majd atirom
13:06 < vmiklos> masik kerdes: akkor az utkozes osszefoglalva ugy lenne, hogy: vegigmegyunk minden jatekoson, azon belul kigyon, azon belul kigyoelemen;
13:07 < vmiklos> a kigyoelem lekerdezi a megfelelo iranyhoz tartozo kovetkezo mezot, tehat pl ujmezo = mezo.getLeft() majd annak meghivja a stepOn metodusat
13:07 < vmiklos> jol gondolom?
13:18 < gerpetya> igen
13:18 < gerpetya> vhogy igy lesz
13:19 < vmiklos> amugy igaza volt a sracnak, ha 1 ember elore lekodolja a jatekot utana mar tok 1xu umlt csinalni belole :P
13:19 < gerpetya> :)
13:19 < vmiklos> pl: kigyoelem mozgatasa
13:20 < vmiklos> az uj elemnel meghivom a stepOn metodust es akkor eltarolja h rajta vagyok
13:20 < vmiklos> de a regirol meg ki kell lepni valami stepOuttal
13:20 < vmiklos> es ez most csak teljesen veletlenul jutott eszembe. ha meg lekodolod akkor trivialis
13:20 < vmiklos> na mind1;)
13:22 < gerpetya> ez a modell még mindig nem tetszik, a rengeteg keresés miatt:(
13:23 < vmiklos> azt is lehet csinalni, hogy mindent 2x tarolunk, csak akkor meg a valtoztatas lesz csunya
13:23 < gerpetya> hát igen, az se szép megoldás
13:23 < vmiklos> tehat pl ilyen forciklusnal mikor ilyen van, h
13:23 < vmiklos> for (minden kigyora)
13:23 < vmiklos> eh
13:23 < vmiklos> for (minden jatekosra)
13:24 < vmiklos> for (minden kigyora)
13:24 < vmiklos> for (minden kigyoelemre)
13:24 < vmiklos> akkor ugyis egyszerre latsz mindent
13:24 < vmiklos> tehat nem baj h a kigyoelem nem tudja h melyik kigyohoz tartozik
13:24 < vmiklos> az ilyen esetekben meg lehet uszni redundancia nelkul
13:26 < vmiklos> amugy most, hogy a mezoknel meg a kigyoelemben meg a mezoben is van redundancia, hol kell meg sokat keresni?
13:27 < gerpetya> mármint akkor most a kígyóelem meg a mező között van redundancia?
13:27 < vmiklos> nemugy :)
13:27 < vmiklos> szal azt beszeltuk h lesz olyan h a palyan taroljuk a mezoket meg a mezokben is a szomszedokat
13:28 < vmiklos> ill. h a kigyoban taroljuk a kigyoelemek listajat de a kigyoelemekben is taroljuk h melyik kigyohoz tartoznak
13:28 < gerpetya> igen
13:28 < gerpetya> ok
13:28 < gerpetya> és a keresés a kígyóelem-mező között jön elő
13:29 < vmiklos> kiveve ha azt is taroljuk a kigyoelemben :)
13:29 < gerpetya> na igen
13:29 < gerpetya> "mármint akkor most a kígyóelem meg a mező között van redundancia?"
13:29 < gerpetya> ezért írtam
13:29 < gerpetya> :)
13:29 < vmiklos> jaa
13:30 < gerpetya> végülis ez az egyetlen redundancia, ami változik is
13:30 < gerpetya> hiszen a többi állandó
13:30 < gerpetya> szval az nem is annyira gáz
13:30 < vmiklos> es akkor legalabb sehol sincs felesleges kereses
13:31 < vmiklos> mezo.stepOut(); mezo = mezo.getLeft(); mezo.stepOn();
13:31 < vmiklos> kb ennyi a szinkronban tartas
13:31 < vmiklos> nem veszes
13:32 < gerpetya> vagy hogy tuti legyen, mezo = mezo.stepOn();
13:32 < gerpetya> és akkor még csak el sem lehet rontani
13:32 < vmiklos> jaja:)
13:33 < gerpetya> na, akkor ezt leírom, megalkotom és felviszem a honlapra
13:33 < vmiklos> ooo. erre gondoltal: mezo.stepOut(); mezo = mezo.getLeft().stepOn(); ?
13:33 < gerpetya> ja igen
13:33 < gerpetya> :D
13:33 < vmiklos> k :)
13:38 < vmiklos> kozben megkerdeztem egyik evfolyamtarsam es aztmondja h naluk is voltak ilyen redundanciak
13:49 -!- cassus [n=cassus@3e44ab41.adsl.enternet.hu] has joined #spqr
13:49 < cassus> g direkt nincs itt?
13:50 < vmiklos> mi nem raktuk ki :)
13:50 < cassus> ok
13:51 < vmiklos> a szekvenciadiagramokhoz csinaltam ilyen "otlet szoban" dolgot, es petyaval azt beszeltuk idaig, mert ez igy kb felvetett 1 csomo problemat
13:51 < vmiklos> h hogy legyen a leptetes, utkozes, stb
13:51 < cassus> ok
13:51 < vmiklos> de most nekem kb tiszta szal epp indul a netbeans h akkor ebbol legyen szep uml szekvenciadiagram
13:51 < cassus> remélem erről csináltok "meeting"-et
13:51 < cassus> és a döntéseket feljegyzitek oda
13:51 < vmiklos> hat persze :D
13:52 < vmiklos> amugy nem jutott eszembe de majd tenyleg kene csinalni
13:52 < cassus> hajrá :)
13:52 < cassus> ugye tudtok létrehozni ti is meeting-et?
13:53 < vmiklos> jaja
13:53 < cassus> ok
13:53 -!- KisGergelyG [n=Miranda@catv-5984b1c9.catv.broadband.hu] has joined #spqr
13:53 < cassus> hi
13:53 < gerpetya> hali
13:53 < KisGergelyG> hello
13:53 < cassus> röviden tudjátok prezentálni, hogy milyen megoldást találtatok az ütközés kezelésére?
13:53 < vmiklos> igen
13:53 < cassus> hogy ha nem tetszik, már most vissza tudjam dobni...
13:54 < cassus> akkor hallgatlak
13:54 < gerpetya> :)
13:54 < vmiklos> azt talaltuk ki h mivel mindig a snakeunit utkozik valamivel, ezert az adott utkozes ott lesz lekodolva amivel utkozik a snakeunit
13:56 < cassus> nem
13:56 < cassus> :)
13:56 < vmiklos> mondjuk engem ez annyibol erint h mikor leptetunk egy snakeunitot
13:56 < vmiklos> akkor 3 dolgot csinalok
13:57 < vmiklos> egyreszt kilepek a regi mezorol
13:57 < cassus> a bogyónak kell tudnia, hogy milyen hatása lesz a kígyóra?
13:57 < vmiklos> masreszt az iranynak megfelelo szomszedos mezot lekerdezem
13:57 < vmiklos> harmadreszt ralepek arra az uj mezore, ami ekkor kezeli az utkozest is
13:58 < gerpetya> hát végülis a való életben is elég kétértelmű a dolog
13:58 < gerpetya> vagy a kígyó tudja, hogy mit csinál ha megeszi a bogyót
13:58 < gerpetya> vagy a bogyó tudja, hogy mi történik ha megeszi a kígyó
13:58 < cassus> vagy egy 3. fél
13:59 < cassus> a kígyó ütközéskezelője
13:59 < cassus> megnéztétek a visitor-t?
13:59 < KisGergelyG> cassus furán jelennek meg az ékezetes karaktereid
13:59 < vmiklos> forditva is csinalhatod, csinalhatsz a snakeunitnak collideWith(FieldBerry fb), collideWith(StoneBerry sb) metodusokat
13:59 < vmiklos> de akkor meg barmilyen uj elem van akkor modositani kell a snakeunit objektumot
13:59 < cassus> vagy egy 3. fél
13:59 < cassus> megnéztétek a visitor-t?
13:59 < KisGergelyG> csak kérdés, hogy fel akarunk-e készülni arra, hogy lesz még másfajta bogyó
14:00 < cassus> fel hát
14:00 < cassus> G: nem, neked furcsák :)
14:00 < KisGergelyG> csak nekem jól mutatja gerpetyáét is
14:01 < vmiklos> cassus: milyen visitort?
14:02 < vmiklos> :)
14:02 < cassus> http://en.wikipedia.org/wiki/Visitor_pattern
14:02 < cassus> én utf8-at használok alap karakter kódolásként irc-en is
14:03 < KisGergelyG> és azt mirandában hol kell beállítani?
14:03 < cassus> A practical result of this separation is the ability to add new operations to existing object structures without modifying those structures.
14:03 < cassus> g: ahhoz nem értek :)
14:03 < KisGergelyG> na jó, akkor hagyjuk
14:04 < vmiklos> cassus: jaa, vilagos
14:05 < vmiklos> ez az amit mondtam h a kigyonak lehet 8fajta collideWith() metodusa
14:06 < cassus> aha, majdnem
14:06 < vmiklos> effektive u.ugy a konek hivom meg az utkozos metodusat csak az osszesen egy 1soros callback ha jol ertem
14:06 < vmiklos> es a tenyleges funkcionalitas igy a kigyoban lesz
14:06 < cassus> mert honnan tudja a mező, hogy melyik objektum rajta a kígyó?
14:06 < cassus> az igazi, az, hogy van egy collidable interfész
14:06 < cassus> amit minden word objectum megvalósít
14:06 < vmiklos> jaja, igy is van
14:06 < gerpetya> most így van
14:07 < cassus> de akkor nem csak a kígyóban van collideWidth
14:07 < gerpetya> nem
14:07 < gerpetya> minden bogyóban, falban, kígyóelemben
14:07 < cassus> sőt, akkor a valódi handler-ek sem a kígyóban vannak, hanem egy külön objektumban
14:07 < cassus> csak valahogy a szimmetriát kell ügyesen biztosítani
14:07 < KisGergelyG> és akkor ha sokminden ütközik egyszerre egy mezőn, akkor minek a collidewith-je hívódik meg, és milyen paraméterrel?
14:08 < cassus> a kérdés jó
14:08 < vmiklos> egyszerre egy kigyo lep a mezore
14:08 < cassus> ez nem jó :)
14:08 < vmiklos> egyesevel leptetjuk a kigyokat 1 forciklusban, nem? :)
14:08 < KisGergelyG> az nem szimmetrikus
14:08 < vmiklos> es akkor az a kigyo utkozik a mezon talalhato objektumokkal
14:08 < cassus> mert ha 4 kígyó megy egymással szemben, és egyszerrre kellene találkozniuk
14:09 < cassus> akkor nem jó, ha random módon az egyik életben marad
14:09 < KisGergelyG> mert akkor pl. ha két fűrész kígyó lép azonos mezőre, akkor attól függ, hogy melyik hal meg, hogy te melyiket veszed előre a ciklusban
14:09 < vmiklos> hmm
14:09 < gerpetya> nemnem
14:09 < cassus> najó
14:09 < gerpetya> én nem így gondoltam
14:09 < gerpetya> úgy gondoltam, hogy minden lép
14:09 < gerpetya> aztán minden kígyóra megnézzük az ütközéseket
14:10 < cassus> vagy minden mezőre...
14:10 < KisGergelyG> igen, csak hogyan nézed meg? minden, a mezőn lévő világobjektumnak mehívod a collide-ját minden másik obejktummal paraméterül?
14:10 < vmiklos> es ha kigyoval meg bogyoval is utkozol akkor melyik a "hatasosabb"?
14:11 < KisGergelyG> szerintem a legszebb, legtisztább az lenne, ha minden mezőn lévő dolgokból egy heterogén kollekció készülne, és minden obejktum ezt kapná paraméterül
14:11 < KisGergelyG> hogy mikkel is ütközött
14:11 < gerpetya> igen, először is definiálni kéne, hogy mi van az ilyen szélsőséges esetekben
14:11 < cassus> vmiklos: a kérdés jogos, determenisztikus működés kell
14:12 < KisGergelyG> kiköthetjük a nemdeterminisztikus, sorsolás alapú működést is, nem lenne egyedülálló a játékok közt, hogy valamit sorsol az engine
14:12 < KisGergelyG> csak szerintem annyira nem szép
14:12 < cassus> :)
14:13 < cassus> akkor most hallgatások meg az én javaslatomat
14:13 < cassus>
14:13 < cassus> az ütközéseket nem a kígyók, hanem a mezők kezdeményezik
14:14 < cassus> a mező ha 1-nél több világelem van rajta
14:14 < cassus> akkor sorba megy rajtuk
14:15 < cassus> mindegyiknek szól, hogy itt egy tömb a többiekről
14:15 < cassus> csinálj, amit szeretnél
14:15 < cassus> a mező iterációkát okosan kell megcsinálni, hogy a törlődő és új mező elemeket is kezelje
14:15 < cassus> iterációját
14:16 < cassus>
14:16 < cassus>
14:16 < KisGergelyG> igen, én is valami ilyesmire gondoltam azzal a heterogén kollekciós dologgal
14:16 < vmiklos> nekem tetszik ezis
14:16 < gerpetya> végülis nem rossz
14:16 < cassus> ezzel megoldhatjuk, hogy pl. a bogyó semmit nem csinál
14:16 < gerpetya> és hogy jön be a visitor?
14:17 < cassus> ott, amikor a kígyó feje megkapja, hogy kikkel van egy mezőn
14:17 < vmiklos> ugy, hogy mikor a strawberry utkozik 1 objecttel akkor a starwberry meg fogja hivni az object collideWith(StrawBerry) metodusat
14:17 < KisGergelyG> nem
14:18 < KisGergelyG> a mező hívja meg az object collidewithjét, paraméterül meg egy heterogén kollekciót ad, amiben az egyik elem az akármilyen berry
14:18 < gerpetya> és akkor lesz egy ütközés kezelő osztály is?
14:18 < gerpetya> vagy hogy gondoltátok?
14:18 < vmiklos> sztem nem
14:19 < KisGergelyG> hogyhogy ütközés kezelő osztály?
14:19 < KisGergelyG> az miért kellene?
14:19 < vmiklos> ugye mindig kigyo utkozik valamivel
14:19 < cassus> vagy nem :)
14:19 < vmiklos> ket berry hogy utkozik? :)
14:19 < gerpetya> jó de a többi nem fontos
14:19 < cassus> még nem tudjuk
14:19 < gerpetya> éppenséggel ütközhet, de úgy sem történik semmi
14:19 < vmiklos> ja, technikailag nyilvan utkozik
14:20 < cassus> ha nem fontos, hogy így legyen, akkor ne zárjuk be magunkat
14:20 < KisGergelyG> ja, simán lehet, hogy akármilyen pluszelem, mondjuk mozgó fal meg fog jelenni a feladatban hirtelen
14:20 < vmiklos> tehat pl van 1 berry es megkapja h utkozott o1 o2 o3 objektumokkal
14:20 < vmiklos> ez ugye a collideWith(List