• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

OP - Objektove programovanie

Started by pepco, 23.02.2008, 02:04:57

« predchdzajce - alie »

Agamemnon

xml je zložitejšia, treba viac nastavovať... ale má aj výhody, ale to je nepodstatné v tomto prípade :)

pri bin. to serializable musí byť... a potom by to už malo ísť...
ak to nejde, musí to hodiť nejakú výnimku (inú ako tú, čo si dal - ak správne chápem, tá sa vyskytla, keď si to šiel robiť po jednotlivých prvkoch) - a podľa nej by sa mohlo dať presnejšie určiť, v čom je problém... pastni ju sem :)
All code is crap.

42

Agamemnon

btw:

ten:
Object reference not set to an instance of an object.

ti hodilo preto, že si sa pokúsil serializovať položku item, ktorá ukazovala na null... teda tam objekt nebol :) takže si sa pokúsil serializovať neexistujúci objekt
All code is crap.

42

kornas

Quote from: Agamemnon on  01.05.2008, 20:42:15
btw:

ten:
Object reference not set to an instance of an object.

ti hodilo preto, že si sa pokúsil serializovať položku item, ktorá ukazovala na null... teda tam objekt nebol :) takže si sa pokúsil serializovať neexistujúci objekt

to som si myslel, len som nevedel naisto, dik. Len teraz ako to vytiehnut, ked ulozim len existujuce objekty :( v cykle sa to asi nebude dat, lebo by objekty popriradzovalo zaradom od zaciatku a nevynechavalo by tie, ktore maju byt NULL :( nie ? (naviem ci som to dobre popisal... ak nie, napiste a skusim to popisat zrozumitelnejsie) Vdaka.

Agamemnon

Quote from: kornas on  01.05.2008, 20:47:00
Quote from: Agamemnon on  01.05.2008, 20:42:15
btw:

ten:
Object reference not set to an instance of an object.

ti hodilo preto, že si sa pokúsil serializovať položku item, ktorá ukazovala na null... teda tam objekt nebol :) takže si sa pokúsil serializovať neexistujúci objekt

to som si myslel, len som nevedel naisto, dik. Len teraz ako to vytiehnut, ked ulozim len existujuce objekty :( v cykle sa to asi nebude dat, lebo by objekty popriradzovalo zaradom od zaciatku a nevynechavalo by tie, ktore maju byt NULL :( nie ? (naviem ci som to dobre popisal... ak nie, napiste a skusim to popisat zrozumitelnejsie) Vdaka.

najlepšie tak, že uložíš celé pole naraz :)

ak to budeš ukladať v cykle, tak to pole úplne presne nebudeš vedieť (za predpokladu, že nechceš komplikovať kód zápisu a načítania) obnoviť... (presne ako si napísal - pri čítaní by ti tie null nepovynechávalo)
All code is crap.

42

kornas

#579
Skusal som doimplementovat interface-i, no na taky kod sa neda pozerat...  :mishela  Tie interface-i to bolo nieco strasne to tam dopasovat...  :hammer: No ale ked to niekomu pomoze, prosim... Skoda len, ze to bol pekne upraveny zdrojak. Len nech berie potom aj ohlad na to, ze to tam bolo len dolepene... keby boli tie interface-i od zaciatku zadane, je to ine, ale nie vtedy, ked uz mame odovzdavat zadania a skoro kazdy uz rozrobene... A  okrem toho, aspon v mojom pripade, tie interface-i su naimplementovane, no nikde ich nevuzivam, kedze mam uz veci poriesene inak  :trestac:
a to NextStep ani nerobim... to by som musel zacat odznova...
dost bolo kodenia idem oslavit 1. maj  :drink: :beer1: :alc:

kornas

Skoro by som zabudol... Agamemnon, vdaka za pomoc.

Agamemnon

Quote from: kornas on  01.05.2008, 23:28:31
A  okrem toho, aspon v mojom pripade, tie interface-i su naimplementovane, no nikde ich nevuzivam

hehe :)

Quote from: kornas on  01.05.2008, 23:29:22
Skoro by som zabudol... Agamemnon, vdaka za pomoc.

nz, np :)
All code is crap.

42

kOsTi

#582
mala orazocka na tento helpdesk (citaj Agamemnon)... :)

mam serializovany objekt impementujuci IGame... deserializujem ho potom ale ako z toho potom nakopnut hru? :D (mozno je to nieco easy ale nenapada ma momentalne)


EDIT: uz vyriesene :D
:trestac:

Mao

Po deserializacii, ked uz je tvoj herny svet "obnoveny" zavolaj tu metodu ktora sa stara o vstup z klavesnice a malo by to zacat :)

kOsTi

no ale prave o to obnovenie mi slo... ale neva, uz som to poriesil... vlastne stacilo updatnut moj roomList, itemList, backPack a aktualny step :)
:trestac:

kornas

Preco ked ulozim aktualnu poziciu a nasledne ju nacitam, tak pri porovnavani objektov nie je ta ista ?? a takisto nemozem vytvarat v poli miestnosti odkazy na ine miestnosti (cize priradovat im prechody) po LOAD-nuti ? Akoby to neboli tie miestnosti... a ked prebehnem cele pole miestnosti v cykle, aby som priradil na zaklade porovnania mena miestnosti aktualnu miestnost do tej nacitanej (kedze akosi nie su zhodne), tak mi potom cele pole miestnosti aktualizuje o veci, ktore tam mali byt na zaciatku hry... cize tie co som popremiestnoval po miestnosti su zase na svojich miestach... co s tym ?

Mao

Nemas tam niekde singleton? Napr ja mam hraca aj s batohom reprezentovanych ako singleton a po deserializacii musim muvim sam nastavit poziciu hraca aj obsah batohu, na zaklade toho co je ulozene v subore, neurobi to automaticky. Singleton  vyuziva staticku premennu ktora drzi referencie na objekty a tie nezaniknu ani po deserializacii. Dost blbo som to napisal ale neviem to poriadne vyjadrit co myslim :D

Agamemnon

- ak máš singletony, tie sa neuložia... práve kvôli tej statickej... statická nepatrí objektu a serializácia je uloženie objektu... takže ona sa neuloží
- dôvodom môže byť aj to, že sa ti to tam niekde cyklí - tie referencie... resp. že sa ti serializuje referencia na nejaký objekt, ktorý ale vzniká inak a nie deserializáciou, a to potom nie sú rovnaké objekty...

prípadne určite aj ďalšie možnosti, prečo to nejde, sa nájdu... ale bez kompletného kódu a nejakého testovania ťažko povedať... odporučil by som asi debugger a dôsledne sledovať, aké objekty vlastne sa zapájajú do vykonávania, a či sa neprepíšu pri deserializácií, prípadne, či sa nemenia referencie a pod.
All code is crap.

42

kornas

Ano, mate pravdu, mam tam nejake staticke veci, som na to nemyslel, idem to prerobit.... vdaka  :thumbsup: dufam, ze to este rozbehnem...

kornas

#589
Ako mam vyriesit to, ze metoda Save() sa nachadza v triede, v ktorej aj cela definicia miestnosti a vsetkeho a chcem metodu Load(), ktora je takisto v tejto triede, naimplementovat tak, aby vracala ten naitany obsah zo suboru, ktory potom mozem pouzit v metode Main()... lebo neviem kde priradit, tie nacitane data, kedze instancia triedy sa asi nedavytvorit v tej istej triede... a ak to chcem priradit do this, tak napise, ze this je len read-only... (a neviem, ci by to neprepisalo aj zdrojak, keby som tam caroval s tym...) ako by ste poradili to urobit ? Dik.

EDIT : sice sa instancia dala vytvorit aj v tej triede, ale takym sposobom sa program zacyklil hned...

Agamemnon

nedá sa to priradiť priamo v objekte...

ja som to zvykol robiť cez statickú metódu - Load som urobil static a potom som to priradil mim objektu - napr. v static Main (resp. niekde, kde je premenná typu game) nejak takto:

Game hra = Game.Load();
All code is crap.

42

kornas

Quote from: Agamemnon on  02.05.2008, 05:10:24
nedá sa to priradiť priamo v objekte...

ja som to zvykol robiť cez statickú metódu - Load som urobil static a potom som to priradil mim objektu - napr. v static Main (resp. niekde, kde je premenná typu game) nejak takto:

Game hra = Game.Load();


Lenze ten return musi byt typu Game, vsak ? cize nejak tak vyzera deklaracia: public static Game Load(atring filename) {} ? Lenze ako tam vratim tu nacitanu hru ?? ze dam return (Game)binaryFormatter.Deserialize(fileStreamIn); ale to potom uz za tym nemozem uzaviet stream, lebo metoda konci tym return... tak ako to urobit ? :(

Agamemnon

Quote from: kornas on  02.05.2008, 05:15:24
Quote from: Agamemnon on  02.05.2008, 05:10:24
nedá sa to priradiť priamo v objekte...

ja som to zvykol robiť cez statickú metódu - Load som urobil static a potom som to priradil mim objektu - napr. v static Main (resp. niekde, kde je premenná typu game) nejak takto:

Game hra = Game.Load();


Lenze ten return musi byt typu Game, vsak ? cize nejak tak vyzera deklaracia: public static Game Load(atring filename) {} ? Lenze ako tam vratim tu nacitanu hru ?? ze dam return (Game)binaryFormatter.Deserialize(fileStreamIn); ale to potom uz za tym nemozem uzaviet stream, lebo metoda konci tym return... tak ako to urobit ? :(

len ten návrat z tej metódy:

...

Game hra = (Game)binForm.Deserialize(fs);
fs.Close();
return hra;


pomerne slušné množstvo vecí sa dá riešiť cez pomocné premenné :)
All code is crap.

42

kornas

No takto som to uz skusal, ale neodpamatalo to kde su predmety, len ich stavy, ale mapu natiahlo zase nanovo... uz to nechapem... som uz asi totalne mimo z toho...  bu Este daco poskusam, ale asi je to beznadejne  :( Save() bude, ale Load() nie  :-\
Vdaka Agamemnon asi som to zle nakodoval cele  :(.

kOsTi

hm ja to mam cele tak ze vsetky roomy mam nahadzane v jedom Liste... tak isto aj itemy v dalsom a ked loadnem ulozeny Game tak len updatnem roomy, itemy, back pack, a step... a funguje to...
:trestac:

Agamemnon

Quote from: kornas on  02.05.2008, 05:28:31
No takto som to uz skusal, ale neodpamatalo to kde su predmety, len ich stavy, ale mapu natiahlo zase nanovo... uz to nechapem... som uz asi totalne mimo z toho...  bu Este daco poskusam, ale asi je to beznadejne  :( Save() bude, ale Load() nie  :-\
Vdaka Agamemnon asi som to zle nakodoval cele  :(.

toto závisí aj na tom, čo a ako si dal uložiť...
All code is crap.

42

Agamemnon

Quote from: kOsTi on  02.05.2008, 05:31:48
hm ja to mam cele tak ze vsetky roomy mam nahadzane v jedom Liste... tak isto aj itemy v dalsom a ked loadnem ulozeny Game tak len updatnem roomy, itemy, back pack, a step... a funguje to...

jj, jedno z riešení :)
All code is crap.

42

kornas

Kosti, Agamemnon diki.  :thumbsup: Konecne asi mozem ist spat... nenastavil som bool premennu pri nahravani hry na true a potom mi stale natahovalo inicializaciu celej mapy. Vdaka. (i ked vela nechybalo a uz by som to prerabal na ArrayListy)  ah: Este raz vdaka, dufam, ze sa neradujem predcasne a ze to fakt pojde tak ako ma. Idem testovat...  :bananawrite:

kOsTi

#598
Ludia davate tam vsetci 30 miestnosti? Ja mam tak kolo 20 a nejak sa mi tam nechce teraz len tak hadzat nejake odveci miestnosti :)

resp. ywetka... co ty na to?  :emot-prettywink:
:trestac:

Agamemnon

Quote from: kOsTi on  02.05.2008, 16:03:37
Ludia davate tam vsetci 30 miestnosti? Ja mam tak kolo 20 a nejak sa mi tam nechce teraz len tak hadzat nejake odveci miestnosti :)

resp. ywetka... co ty na to?  :emot-prettywink:

pri najhoršom tam strč chodbu ala neverhood :)
All code is crap.

42