• 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 »

kOsTi

hmm tak pouzijem jednu taku citaciu priamo od grandmastra:

Quote from: mirekadd step - v konecnom dosledku bude step reprezentovat iba akysi kontajner, ktory bude obsahovat informacie o aktualnom stave - o miestnosti, v ktorej sa hrac nachadza (kde je, ake veci tam su, kadial sa odtial moze dostat von) a o aktualnom stave jeho batohu (teda - co v nom ma - sluzi ako oblubeny prikaz inventar).

dolezita je metoda NextStep rozhrania IGame. da sa predpokladat, ze vasa herna logika sa bude nachadzat niekde v triede, ktora bude implementovat prave toto rozhranie. tato metoda je dolezita, pretoze to bude ona, ktora dostane ako paramater prikaz, ktory hrac zadal z prikazoveho riadku (alebo niekde v nejakom klikacom okne). metoda NextStep ho spracuje a ako vysledok vrati objekt implementujuci rozhranie IStep, z ktoreho je mozne ziskat informacie o aktualnom kroku hry. a jednoducho ich je potom mozne zobrazit na jednom mieste. teda - nebudu sa zobrazovat pocas spracovavania prikazu, ale miesto toho sa vytvori novy objekt, ktory bude tieto informacie niest. vyhodou je potom napriklad aj to, ze je mozne tieto informacie zobrazit jednoduchsie ci uz do gui aplikacie alebo do konzoly.
:trestac:

johnyo13

jj.ja som pouzil Step ako IStep, nie ako abstract Step..a vlastne som ho pouzival tak ze kostruktor triedy Step vyzera zhruba:
public Step(Room room, BackPack backPack)..
no a potom v tele som priradil tomu stepu vsetky zakladne informacie ako: pozicia aktualnej miestnosti (vzhladom na mapu), arraylisty miestnosti a batohu, vychody z miestnosti atd (aspon myslim..nechce sa mi teraz spustat projekt..idem spat) a tiez rozne vypisy..teda co kde je,kam sa da ist...
potom v triede Game, ktora (okrem ineho) tie miestnosti, veci atd. vygenerovala uz len spustim metodu start() a ta vytvori novy step..s nastaveniami ktore su aktualne na zaciatku hry a v cykle vola metodu NextStep(cmd)..kt.,vlastne vytvara nove stepy na zaklade argumentu cmd...
btw. som si vedomy toho, ze som to robil casto dost zlozito, ale akosi nie je casu nazvys a nechcem velmi spekulovat, hlavne ze to ide...
este jedna poznamka...dost mi vadi ten system ze musite pouzit toto, ale co to ma robit musite domysliet sami..napr. pouzivam obycajny getter na description, ale zaroven tam musim mat aj metodu GetDescription() , ktora pochadza z implementovaneho rozhrania..teda ja neviem co ta fcia ma robit, tak robi to iste co ten getter..co je samozrejme blbost..ale budiz:)
☼Ѿ☼ ... ☼Ѿ☼

kOsTi

keby sa niekomu zachcelo robit betatesting tak mu budem vdacny...
http://www.pretaktovanie.sk/podklady/kosti/textgame.exe ... thx :)
:trestac:

johnyo13

chcel som to skusit ale neviem ake prikazy pouzit :D
ja som to riesil tak ze po zadani zleho prikazu ti program vypsie vsetky moznosti:
napr
>>fdsklaj

Zly vstup! Zadaj: pokracovat, preskumat alebo  pouzit!
>>pokracovat

mozes ist na :
                 -juh
                 -sever
>>vychod

na vychod sa ist neda!

mozes ist na :
                 -juh
                 -sever

...atd...
☼Ѿ☼ ... ☼Ѿ☼

buhehe

jak ste robili ze ak vojdes do miestnosti tak sa da dalej ist len po pouziti nejakeho predmetu?

Agamemnon

Quote from: johnyo13 on  03.05.2008, 06:43:07
este jedna poznamka...dost mi vadi ten system ze musite pouzit toto, ale co to ma robit musite domysliet sami..napr. pouzivam obycajny getter na description, ale zaroven tam musim mat aj metodu GetDescription() , ktora pochadza z implementovaneho rozhrania..teda ja neviem co ta fcia ma robit, tak robi to iste co ten getter..co je samozrejme blbost..ale budiz:)

toto sa tak bežne používa, že máš dané rozhranie a implementácia je na tebe... tie rozhrania slúžia na to, aby 2 rôzne triedy nemali problém spolu komunikovať - napr. máš nejakú veľkú úlohu, tak ju rozdelíš viacerým programátorom - každý dostane popis, čo má jeho časť robiť a rozhranie, ktoré má trieda implementovať, aby sa to potom dalo nakoniec spojiť dokopy, a fungovalo to bez nejakého zložitého prepisovania kódu...
All code is crap.

42

Agamemnon

Quote from: buhehe on  03.05.2008, 17:11:03
jak ste robili ze ak vojdes do miestnosti tak sa da dalej ist len po pouziti nejakeho predmetu?

ja mám napr. jedno rozhranie, ktoré implementujú triedy, ktoré vykonávajú nejaké akcie (tj. príkaz použi) - a jedna z nich dokáže spojiť 2 miestnosti...
takže.... prv tam spojenie nie je (nie je vôbec, nie len že nemá status, čo ja viem, otvorený_prechod...)... a po použití predmetu sa prechod vytvorí...
All code is crap.

42

Agamemnon

ako... dal by som von svoj kód, ak máte záujem :) ale až po 13. týždni...
aj keď môj kód sa nedá odovzdať, lebo úplne rozhrania nedodržuje, keďže som to napísal ešte skôr ako rozhrania boli, ale sú tam veci, ktoré by ste mohli okopírovať :-P
All code is crap.

42

kOsTi

Quote from: johnyo13 on  03.05.2008, 16:21:21
chcel som to skusit ale neviem ake prikazy pouzit :D

Staci pouzit "Commands" :)
:trestac:

Agamemnon

Quote from: johnyo13 on  03.05.2008, 16:21:21
chcel som to skusit ale neviem ake prikazy pouzit :D
ja som to riesil tak ze po zadani zleho prikazu ti program vypsie vsetky moznosti:
napr
>>fdsklaj

Zly vstup! Zadaj: pokracovat, preskumat alebo  pouzit!
>>pokracovat

mozes ist na :
                 -juh
                 -sever
>>vychod

na vychod sa ist neda!

mozes ist na :
                 -juh
                 -sever

...atd...


skús dať príkaz "prikazy" - podľa špecifikácie ti to má vypísať všetky príkazy :)

EDIT: hehe, neskoro :) kosti bol rýchlejší :)
All code is crap.

42

Agamemnon

kosti: vyzerá to fajn, len sa mi nechce čítať tie dlhé texty :-))
All code is crap.

42

JCube

Quote from: Agamemnon on  03.05.2008, 17:16:50
ako... dal by som von svoj kód, ak máte záujem :) ale až po 13. týždni...
aj keď môj kód sa nedá odovzdať, lebo úplne rozhrania nedodržuje, keďže som to napísal ešte skôr ako rozhrania boli, ale sú tam veci, ktoré by ste mohli okopírovať :-P
ja som tak spristupnil OS az po trinastom tyzdni a aj tak odovzdalo moje zadanie plno vela ludi... :D
sudo [ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Alive!"

kOsTi

Inac v zadani je ze pri vstupe do miestnosti sa vypisu vsetky veci o nej (opis, kam sa da ist, ake veci su tam...) ale ja som tam dal len ten opis... potom mi prislo zbytocne zavadzat prikaz "Look" ktory je viacmenej povinny (na rozhliadnutie sa v miestnosti)
:trestac:

Agamemnon

Quote from: kOsTi on  03.05.2008, 17:24:54
Inac v zadani je ze pri vstupe do miestnosti sa vypisu vsetky veci o nej (opis, kam sa da ist, ake veci su tam...) ale ja som tam dal len ten opis... potom mi prislo zbytocne zavadzat prikaz "Look" ktory je viacmenej povinny (na rozhliadnutie sa v miestnosti)

toto mám riešené rovnako, to je OK toto, imo... rozumnejšie
All code is crap.

42

Agamemnon

Quote from: JCube on  03.05.2008, 17:24:22
Quote from: Agamemnon on  03.05.2008, 17:16:50
ako... dal by som von svoj kód, ak máte záujem :) ale až po 13. týždni...
aj keď môj kód sa nedá odovzdať, lebo úplne rozhrania nedodržuje, keďže som to napísal ešte skôr ako rozhrania boli, ale sú tam veci, ktoré by ste mohli okopírovať :-P
ja som tak spristupnil OS az po trinastom tyzdni a aj tak odovzdalo moje zadanie plno vela ludi... :D

moje nemôžu odovzdať len tak :) by to neprešlo :)
ale mám urobený bash, a to by sa dalo okopčiť... navyše som ho robil tak, aby som ho prípadne vedel ľahko preportovať do inej aplikácie, ak by som niekde potreboval konzolový príkazový riadok :)
All code is crap.

42

JCube

Quote from: Agamemnon on  03.05.2008, 17:27:43
Quote from: JCube on  03.05.2008, 17:24:22
Quote from: Agamemnon on  03.05.2008, 17:16:50
ako... dal by som von svoj kód, ak máte záujem :) ale až po 13. týždni...
aj keď môj kód sa nedá odovzdať, lebo úplne rozhrania nedodržuje, keďže som to napísal ešte skôr ako rozhrania boli, ale sú tam veci, ktoré by ste mohli okopírovať :-P
ja som tak spristupnil OS az po trinastom tyzdni a aj tak odovzdalo moje zadanie plno vela ludi... :D

moje nemôžu odovzdať len tak :) by to neprešlo :)
no ludia zo zufalosti spravia cudne veci... :D
sudo [ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo "Alive!"

Agamemnon

Quote from: JCube on  03.05.2008, 17:28:46
Quote from: Agamemnon on  03.05.2008, 17:27:43
Quote from: JCube on  03.05.2008, 17:24:22
Quote from: Agamemnon on  03.05.2008, 17:16:50
ako... dal by som von svoj kód, ak máte záujem :) ale až po 13. týždni...
aj keď môj kód sa nedá odovzdať, lebo úplne rozhrania nedodržuje, keďže som to napísal ešte skôr ako rozhrania boli, ale sú tam veci, ktoré by ste mohli okopírovať :-P
ja som tak spristupnil OS az po trinastom tyzdni a aj tak odovzdalo moje zadanie plno vela ludi... :D

moje nemôžu odovzdať len tak :) by to neprešlo :)
no ludia zo zufalosti spravia cudne veci... :D

no hej, to je pravda, hehe :)
All code is crap.

42

johnyo13

#667
to prikazy/commands je povinne? je to zadane niekde na moodli? ci to je len vasa implementacia? nech viem ci to mam prerabat...hoci mne sa to viac paci tak..a dalo mi dost roboty kym som to poriadne pocyklil aby vzdy vyhadzovalo len pouzitelne prikazy..no ked je to povinne tak to prerobim

for KOSTI: mohol si to napisat niekde do uvodu..napr. (FOR HELP TRY "COMMANDS")..aby to bolo jasne aj dalsim:)
☼Ѿ☼ ... ☼Ѿ☼

Agamemnon

Quote from: johnyo13 on  03.05.2008, 17:41:20
to prikazy/commands je povinne? je to zadane niekde na moodli? ci to je len vasa implementacia? nech viem ci to mam prerabat...hoci mne sa to viac paci tak..a dalo mi dost roboty kym som to poriadne pocyklil aby vzdy vyhadzovalo len pouzitelne prikazy..no ked je to povinne tak to prerobim

http://moodle.fei.tuke.sk/wiki/index.php/Znenie_zadania_a_pokyny_k_jeho_vypracovaniu

tam máš základnú sadu príkazov
All code is crap.

42

johnyo13

uz som to nasiel, ale neviem ci je to povinne..sak niektore veci mozem riesit aj inac..fakt sa mi nepaci ten pristup..spravte to ale musite pouzivat nase vymysly aj ked to mozno viete spravit inac (z mojho pohladu lepsie)..napr tu je to dost zdlhave pisat vsade commands

a este k tym interfesom..ked niekto deli ulohu medzi viacerych ludi, tak asi aj povie co ta-ktora fcia ma robit (hoci implementacia ostava stale na teba)..a nie len napise nazvy fcii a rob s tym co chces...napr.(v extremnom pripade) moze moja fcia GetDescription() ukoncovat hru..a dalsi clovek ju bude pouzivat na prechod do inej miestnosti..ta potom chcem vidiet tu spajanie programu :D
☼Ѿ☼ ... ☼Ѿ☼

Agamemnon

Quote from: johnyo13 on  03.05.2008, 17:51:15
a este k tym interfesom..ked niekto deli ulohu medzi viacerych ludi, tak asi aj povie co ta-ktora fcia ma robit (hoci implementacia ostava stale na teba)..a nie len napise nazvy fcii a rob s tym co chces...napr.(v extremnom pripade) moze moja fcia GetDescription() ukoncovat hru..a dalsi clovek ju bude pouzivat na prechod do inej miestnosti..ta potom chcem vidiet tu spajanie programu :D

imo sú názvy tých metód v interface-och samopopisné... ale nehovorím, že nemohli ku tomu vydať aj popisy... bolo by to možno jednoduchšie pre vás...

Quote from: johnyo13 on  03.05.2008, 17:51:15
uz som to nasiel, ale neviem ci je to povinne..sak niektore veci mozem riesit aj inac..fakt sa mi nepaci ten pristup..spravte to ale musite pouzivat nase vymysly aj ked to mozno viete spravit inac (z mojho pohladu lepsie)..napr tu je to dost zdlhave pisat vsade commands

to by som povedal, že máš zlý návrh potom, keď to potrebuješ písať všade... (ak správne chápem tú tvoju vetu)...

jasne, však ty môžeš riešiť všetko po svojom... interface-i ti nehovoria nič o vnútornej implementácií, o algoritmoch ani nič podobné
All code is crap.

42

johnyo13

nie ja to nemam vobec robene cez commands
len sa mi zda lepsie hrat instinktivne..teda neviem co chcem robit tak napsiem..
>>pouzit kompas
a tak napise: zly prikaz
tak musis zadat
>>commands
precitas co sa da robit das napr:
>>preskumat (...potom zase:)
>>commands
precitas co mozes preskumat
>>napis na stene
-hotovo

kdezto ja dam:
>>pouzit kompas
hned vypsie ze sa to neda, aj co sa da aktualne pouzit
>>preskumat
hned vypsie co sa da preskumat
>>napis na stene
-hotovo

nie je to sice velky rozdiel, ale ked to robis casto tak to potesi..mne sa to paci viac
☼Ѿ☼ ... ☼Ѿ☼

Agamemnon

nepochopil si to commands... to commands je ekvivalent helpu - to znamená, že to vypíše zoznam všetkých dostupných príkazov v hre...

príklad:
>> prikazy
Zoznam príkazov:
- save - ulozi hru
- load - nahra hru
- exit - koniec hry

- sever - pojde na sever

atď...

nemá to vypísať len to, čo máš dostupné
All code is crap.

42

Agamemnon

to, čo máš teraz urobené, môžeš kľudne nechať... len tam potrebuješ pridať jeden príkaz navyše... a ten vypíše help
All code is crap.

42

johnyo13

ahaaaa...postupne odhalujem skryte zakutia zadania tohto zadania :D :D
btw. teraz mam uz commands dost zbytocny..sice na load save exit sa hodi..ok dorobim.dik za vysvetlenie:)
☼Ѿ☼ ... ☼Ѿ☼