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

Objektove programovanie

Started by markus, 21.02.2009, 23:57:40

« predchdzajce - alie »

psicho

Quote from: morrfun23 on  22.04.2009, 16:19:06
ze by to klucove slovicko bolo new?

stebou sa xem kamaratit !
read my blog> www.codemazing.com <read my blog

morrfun23

mam vytvorenu triedu Save a v nej metodu Execute

public TextGame.Core.GameState Execute(TextGame.Core.IGame game)
        {
            Stream stream = new FileStream("subor.bin", System.IO.FileMode.Create);
            IFormatter formatter = new BinaryFormatter();
            formatter.Serialize(stream, game);
            stream.Close();
            Console.WriteLine("Ulozene");
            return GameState.PLAYING;
        }
vyhadzuje mi vynimku SerializationException v zneni Type 'Cave_Prison.Game' in Assembly 'Cave_Prison, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
v com moze byt chyba?

Agamemnon

presne v tom, čo to píše :) tú classu, ktorú chceš serializovať, musíš označiť, že je serializovateľná... robí sa to pridaním atribútu pred classu... atribút je v tomto prípade Serializable...
tj. bude to vyzerať takto:


[Serializable]
class MyClass {
    ...
}

All code is crap.

42

Agamemnon

btw... nechcem veľmi rýpať, ale toto je základná chyba, navyše úplne samopopisná... aspoň takéto veci by mali byť v pohode zrozumiteľné všetkým... a ak aj nie, tak ak skopíruješ text výnimky do google, tak dostaneš presne popis, čo máš urobiť - v prípade takýchto chýb (a aj v prípade zložitejších)...
All code is crap.

42

morrfun23

to som urobil len potom nastal problem ze ono to chce odomna aby som serializoval triedu AItem a k nej sa uz nedostanem

Agamemnon

potom to neserializuješ... resp. iba ak si napíšeš vlastný serializer, ale do toho by som nešiel...

EDIT: prípadne možno by mirek mohol urobiť update a to Serializable tam pridať.. nvm, záleží to na ňom
All code is crap.

42

morrfun23

ok skusim to urobit este nejak inak

piton

Ja som sa tiez skusil vybrat touto cestou, ze serializovat Game, ale velmi rychlo ma to preslo :) Staci pouzit triedu History priamo od binasa, tam mas metodu sejv uz implementovanu ;-)
"Iba život, ktorý žijeme pre ostatných, stojí za to." - Albert Einstein

Patto

#433
To robite podla navodu alebo len sami podla seba? Pretoze co viem, tak toto v cviceni Text Game V. - Command Representation nie je ... a do dalsieho cvika (Text Game VI. - Command Line History) sa neda dostat, pretoze pise, ze: "Akciu, ktorú požadujete môže vykonať iba člen skupiny user" ... ci sa mam akoze tam regnut niekde a uz to pôjde?

a inac v tom, ze ked pouzijem kluc na truhlicu, tak sa mi ma vytvorit celkom novy objekt otvorena truhlica a normalnu truhlicu odstranit alebo len premenovat nazov chest.Name? ... ja som si spravil novu tiredu openChest dufam ze takto to bolo myslene.

piton

Novu triedu OpenChest treba, meno neprepisuj... No a za seba mozem povedat ze posledne tyzdne sa velmi neriadim tym navodom na wiki. Treba cim skor odovzdat :)
"Iba život, ktorý žijeme pre ostatných, stojí za to." - Albert Einstein

mirek

Quote from: Agamemnon on  25.04.2009, 01:12:29
potom to neserializuješ... resp. iba ak si napíšeš vlastný serializer, ale do toho by som nešiel...

EDIT: prípadne možno by mirek mohol urobiť update a to Serializable tam pridať.. nvm, záleží to na ňom

ako piton pisal tutok nizsie - serializacia nespada do zadania - Save a Load je uz implementovany v triede History. ale silne natury sa do toho mozu samozrejme pustit... ak maju cas a chut...
So say we all!

mirek

Quote from: piton on  25.04.2009, 04:17:59
Novu triedu OpenChest treba, meno neprepisuj... No a za seba mozem povedat ze posledne tyzdne sa velmi neriadim tym navodom na wiki. Treba cim skor odovzdat :)

nazov predmetu a jeho opis prepisat ani nie je mozne - toto zabezpecuje abstraktna trieda AItem - pristup ku menu a opisu je len cez property typu get.

a samozrejme - netreba cakat na to, kym sa nieco objavi na wiki. treba sa do toho pustit sam - mantinely v podobe kniznice k dispozicii mate...
So say we all!

piton

No len tu metodu Load neviem pouzit, lebo uklada do toho zoznamu, ale zvonku k nemu nemam pristup... No ale to pokonzultujeme na cviku... :)
"Iba život, ktorý žijeme pre ostatných, stojí za to." - Albert Einstein

Agamemnon

Quote from: mirek on  25.04.2009, 05:29:24
nazov predmetu a jeho opis prepisat ani nie je mozne - toto zabezpecuje abstraktna trieda AItem - pristup ku menu a opisu je len cez property typu get.

stavíme sa, že ho zmením? ;) ;D

sorry mirek, nedalo mi trochu nerýpnuť :)
All code is crap.

42

mirek

Quote from: Agamemnon on  25.04.2009, 05:46:25
Quote from: mirek on  25.04.2009, 05:29:24
nazov predmetu a jeho opis prepisat ani nie je mozne - toto zabezpecuje abstraktna trieda AItem - pristup ku menu a opisu je len cez property typu get.

stavíme sa, že ho zmením? ;) ;D

sorry mirek, nedalo mi trochu nerýpnuť :)

nevytahuj tu podpasove techniky. o takychto veciach oni v ramci predmetu nemaju vediet.
So say we all!

mirek

Quote from: piton on  25.04.2009, 05:39:19
No len tu metodu Load neviem pouzit, lebo uklada do toho zoznamu, ale zvonku k nemu nemam pristup... No ale to pokonzultujeme na cviku... :)

History je len o praci s historiou prikazov - nie o serializacii celeho stavu hry. to znamena, ze tie prikazy potrebujes znovu jeden za druhym interpretovat - cize vytvorit hru nanovo (inicializovat ju) a volat tusim metodu ProcessCommand( lineOfHistory )
So say we all!

Agamemnon

All code is crap.

42

drtic

Mozte mi vysvetlit preco v TextGameLibrary v rozhrani IRoom je definovana metoda setExits(IRoom north, IRoom south, IRoom east, IRoom west) v takomto tvare ?
Ako to implementovat? Preco su tie smery typu IRoom ?

Agamemnon

lebo z každej miestnosti potrebuješ mať východy... tie nastavíš pomocou tejto metódy... postupne pomocou nej nastavíš server, juh, východ, západ - nastavuješ, aká miestnosť sa bude nachádzať v danom smere, preto IRoom...
All code is crap.

42

mirek

Quote from: drtic on  25.04.2009, 16:31:44
Mozte mi vysvetlit preco v TextGameLibrary v rozhrani IRoom je definovana metoda setExits(IRoom north, IRoom south, IRoom east, IRoom west) v takomto tvare ?
Ako to implementovat? Preco su tie smery typu IRoom ?


pretoze kniznica samotna nevie nic o tvojej triede Room alebo Location, aby tie parametre metody mohli byt prave tohto typu. ked ale povies, ze implementacia tvojej triedy reprezentujucej miestnost implementuje rozhranie IRoom, tak kazda z tvojich miestnosti moze byt typu IRoom. preto metoda SetExits() ma kazdy parameter typu IRoom a nie Room.
So say we all!

drtic

#445
Ok, a ako urcim ze prave parameter je vychod? Je potrebne uviest vsetky parametre tej metody co su zadane v rozhrani?

mirek

Quote from: drtic on  25.04.2009, 17:33:55
Ok, a ako urcim ze prave parameter je vychod? Je potrebne uviest vsetky parametre tej metody co su zadane v rozhrani?

skus si este raz prejst cvicenie Text Game II. - Virtual World Representation - cast: trieda room a bod 8 je taky zahmleny navod, ako na to.
So say we all!

drtic

Aha cize do parametrov zadam uz konkretne vytvorene miestnosti, a ak v niektorom smere nieje exit tak null.

mirek

Quote from: drtic on  25.04.2009, 17:51:20
Aha cize do parametrov zadam uz konkretne vytvorene miestnosti, a ak v niektorom smere nieje exit tak null.

presne tak ;)
So say we all!

Trent

Nechcem ťa súriť mirek, ale popravde bodlo by nahodiť (ak sa dá) všetky cviká naráz. Nech hru dokončím v takom tvare ako si "klient" žiada a na druhej strane môžem tam doplniť featury :)