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

mirek

Quote from: Trent on  25.04.2009, 18:38:57
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 :)

no - ja uz nerobim dalsie cvika. to uz je zalezitost dalsich cviciacich. teraz posledne to vyslo tak, ze som ho este pripravil, ale ostatne dve je partia niekoho ineho.

na druhej strane - rob si podla seba. ty mas len pouzit pre svoj vyvoj najlepsiu kniznicu na vyvoj textovych hier na svete. kniznica poskytuje len "opis", ale konecna vnutorna implementacia je na tebe. takze - sup sup ;)
So say we all!

piton

"Iba život, ktorý žijeme pre ostatných, stojí za to." - Albert Einstein

mircoo

caute, este raz pisem,  :)

mam metodu execute takto:
public GameState Execute(IGame game)
{
if (game.CurrentRoom.East!=null){
game.CurrentRoom=game.CurrentRoom.East;

game.CurrentRoom.Show();


    } else Console.WriteLine("Na vychod sa ist neda...");
return GameState.PLAYING;
}


ja som skusal spustit v program.cs tu metodu Execute:

Game newGame = new Game();
East east = new East();
.....
...
east.Execute(newGame);
...



co je tam zle? a co ma vlastne vracat Execute? GameState.PLAYING?
a som ju aj v game.cs skusal a nejde, ako ju mam zavolat,
please help :(

vopred vdaka za pomoc  ;)
Praise Him with the strings....

mirek

Quote from: mircoo on  25.04.2009, 19:27:41
caute, este raz pisem,  :)

mam metodu execute takto:
public GameState Execute(IGame game)
{
if (game.CurrentRoom.East!=null){
game.CurrentRoom=game.CurrentRoom.East;

game.CurrentRoom.Show();


    } else Console.WriteLine("Na vychod sa ist neda...");
return GameState.PLAYING;
}


ja som skusal spustit v program.cs tu metodu Execute:

Game newGame = new Game();
East east = new East();
.....
...
east.Execute(newGame);
...



co je tam zle? a co ma vlastne vracat Execute? GameState.PLAYING?
a som ju aj v game.cs skusal a nejde, ako ju mam zavolat,
please help :(

vopred vdaka za pomoc  ;)
pravedpodobne by to chcelo este spustit metodu Play() - v nej sa podla scenara inicializuje cela hra. takto pravdepodobne (nevidim obsah triedy Game, takze preto pravdepodobne) sa sice objekt triedy Game vytvori, ale nie je vytvorena mapa sveta a clenska premenna currentRoom pravdepodobne ukazuje nikam. a kedze si neuviedol, ze co ti vlastne nejde, predpokladam, ze ti vyhadzuje null pointer exception.
So say we all!

mircoo

#454
ako mam aj play a vsetko spravne zavolane,
a je presne ta chyba:  System.NullReferenceException: Object reference not set to an instance of an object
neviem kde mozem mat taku zlu referenciu, ked mi doteraz vsetko slo, az ked som chcel triedu East spravit , tak to nejde,
no nic treba len skusat
Praise Him with the strings....

Agamemnon

tie výnimky ti to presne vypíšu, na ktorom to je riadku... plus - pripoj si debugger a sleduj hodnoty premenných.. uvidíš presne ako sa ti menia a ktorá presne je null... aj to, prečo je null - čo ju vynullovalo, alebo kde sa mala nastaviť a nestalo sa tak...
All code is crap.

42

mirek

Quote from: mircoo on  25.04.2009, 20:14:11
ako mam aj play a vsetko spravne zavolane,
a je presne ta chyba:  System.NullReferenceException: Object reference not set to an instance of an object
neviem kde mozem mat taku zlu referenciu, ked mi doteraz vsetko slo, az ked som chcel triedu East spravit , tak to nejde,
no nic treba len skusat

no napisanu metodu mat mozes, ale vychadzajuc z tychto riadkov:

Game newGame = new Game();
East east = new East();

tu chyba este riadok:
newGame.Play();
pred vytvorenim prikazu east a zavolanim jeho metody Execute();
So say we all!

mircoo

hej jasne ;) vdaka za pomoc, pohram sa s tym debugom , uvidime no
Praise Him with the strings....

andy

#458
mam jednu otazkocku..

ten parser ma rozdelit vstupny retazec na prikaz a parameter? no to by nebol problem pokial by v hre netrebalo pouzit jeden prikaz "ROZHLIADNI SA", lebo pri tomto by bol parameter slovo "SA", tak neviem ze ci pre tento prikaz mam urobit specialny algoritmus aby tento dvojslovny prikaz sa bral cely ako prikaz..

snad chapete co som chcel tym povedat..  ehm :)

Patto

Quote from: andy on  25.04.2009, 22:16:29
mam jednu otazkocku..

ten parser ma rozdelit vstupny retazec na prikaz a parameter? no to by nebol problem pokial by v hre netrebalo pouzit jeden prikaz "ROZHLIADNI SA", lebo pri tomto by bol parameter slovo "SA", tak neviem ze ci pre tento prikaz mam urobit specialny algoritmus aby tento dvojslovny prikaz sa bral cely ako prikaz..

snad chapete co som chcel tym povedat..  ehm :)

hej nad tym som tiez rozmyslal a asi to spravim tak, ze jedine ak bude na vstupe ten prikaz, tak sa text rozdeli na prikaz a parameter tak, ze parameter az od treieho slova bude.
Ale inac sa chcem opytat nie je zbytocny ten prikaz ROZHLIADNI SA??? pretoze aspon ja to mam spravene tak, ze sa mi proste opis miestnosti zobrazuje vzdy po vykonani hociakeho prikazu ... hore sa vypise co bolo spravene potom Show() metoda pre dany room a nakoniec readline ... a toto sa mi zobrazuje vzdy, cize tento prikaz ROZHLIADNI SA mi nejako nedava vyznam.

taka poznamka ohladom ukazkovej hry: Nie je to priliz drasticke tlacit princeznu do batohu nakonci, kedze je tam ako ukazka prikaz vezmi princezna :D :D

mirek

Quote from: andy on  25.04.2009, 22:16:29
mam jednu otazkocku..

ten parser ma rozdelit vstupny retazec na prikaz a parameter? no to by nebol problem pokial by v hre netrebalo pouzit jeden prikaz "ROZHLIADNI SA", lebo pri tomto by bol parameter slovo "SA", tak neviem ze ci pre tento prikaz mam urobit specialny algoritmus aby tento dvojslovny prikaz sa bral cely ako prikaz..

snad chapete co som chcel tym povedat..  ehm :)

chapem chapem - ked to nie je problem rozdelit, tak mam otazku, ze cim to delis?
So say we all!

mirek

Quote from: Patto on  25.04.2009, 23:09:31
Quote from: andy on  25.04.2009, 22:16:29
mam jednu otazkocku..

ten parser ma rozdelit vstupny retazec na prikaz a parameter? no to by nebol problem pokial by v hre netrebalo pouzit jeden prikaz "ROZHLIADNI SA", lebo pri tomto by bol parameter slovo "SA", tak neviem ze ci pre tento prikaz mam urobit specialny algoritmus aby tento dvojslovny prikaz sa bral cely ako prikaz..

snad chapete co som chcel tym povedat..  ehm :)

hej nad tym som tiez rozmyslal a asi to spravim tak, ze jedine ak bude na vstupe ten prikaz, tak sa text rozdeli na prikaz a parameter tak, ze parameter az od treieho slova bude.
Ale inac sa chcem opytat nie je zbytocny ten prikaz ROZHLIADNI SA??? pretoze aspon ja to mam spravene tak, ze sa mi proste opis miestnosti zobrazuje vzdy po vykonani hociakeho prikazu ... hore sa vypise co bolo spravene potom Show() metoda pre dany room a nakoniec readline ... a toto sa mi zobrazuje vzdy, cize tento prikaz ROZHLIADNI SA mi nejako nedava vyznam.

taka poznamka ohladom ukazkovej hry: Nie je to priliz drasticke tlacit princeznu do batohu nakonci, ked tam je vezmi princezna :D :D

zalezi od implementacie - ty si sa s tym popasoval takymto sposobom. ked ale hras starucke textovky, ktore vznikli, ked si sa ty alebo ja narodil, tak takyto prikaz je v podstate v kazdej hre. takze aj s ucty k nasim predkom programatorom dodrzime tuto konvenciu.

otazka je len, ze cim rozdelujete/rozpoznavate tento prikaz a vobec - akykolvek prikaz.

a ci je to drasticke s tou princeznou? neboj sa ty nic - princezna to zvladne. je vytrenovana... horsie by to bolo ju preniest do tej otvorenej truhlice a napchat ju tam. to asi fakt len po castiach... :-)))
So say we all!

Patto

ok chapem, ze take su podmienky, aby tam bola implementovana zakladna sada prikazov a aj ROZHLIADNI SA ... ale takze moj sposob zobrazovania mozem nechat a spravit prikaz rozhliadni sa tak, aby nerobil prakticky nic? pretoze mne sa to zda byt prehliadnejsie, ked vzdy vidim, kde sa nachadzam a co vidim a neviem co ine potom by mi na konzolu vypisovalo alebo ako inac by mal ten User Interface robeny. Ja som taketo hry velmi nehral takze neviem, ale tento sposob mi osobne prisiel ako najlepsi.

no ja vstupny prikaz delim cez string metodu Split a ako separator mam medzeru. Cize ak na vstupe bude prikaz viacslovny, tak spravim vynimocky stav a dam dokopy prikaz a parameter trosku inac.

Agamemnon

ad rozpoznávanie:
- contains
- startswith
- regulárne výrazy
:)
All code is crap.

42

andy

Quote from: mirek on  25.04.2009, 23:13:16
Quote from: Patto on  25.04.2009, 23:09:31
Quote from: andy on  25.04.2009, 22:16:29
mam jednu otazkocku..

ten parser ma rozdelit vstupny retazec na prikaz a parameter? no to by nebol problem pokial by v hre netrebalo pouzit jeden prikaz "ROZHLIADNI SA", lebo pri tomto by bol parameter slovo "SA", tak neviem ze ci pre tento prikaz mam urobit specialny algoritmus aby tento dvojslovny prikaz sa bral cely ako prikaz..

snad chapete co som chcel tym povedat..  ehm :)
klasicky tiez by som to delil cez split...
tak uz povedz ako by ten prikaz ROZHLIADNI SA mal byt realizovany....

hej nad tym som tiez rozmyslal a asi to spravim tak, ze jedine ak bude na vstupe ten prikaz, tak sa text rozdeli na prikaz a parameter tak, ze parameter az od treieho slova bude.
Ale inac sa chcem opytat nie je zbytocny ten prikaz ROZHLIADNI SA??? pretoze aspon ja to mam spravene tak, ze sa mi proste opis miestnosti zobrazuje vzdy po vykonani hociakeho prikazu ... hore sa vypise co bolo spravene potom Show() metoda pre dany room a nakoniec readline ... a toto sa mi zobrazuje vzdy, cize tento prikaz ROZHLIADNI SA mi nejako nedava vyznam.

taka poznamka ohladom ukazkovej hry: Nie je to priliz drasticke tlacit princeznu do batohu nakonci, ked tam je vezmi princezna :D :D

zalezi od implementacie - ty si sa s tym popasoval takymto sposobom. ked ale hras starucke textovky, ktore vznikli, ked si sa ty alebo ja narodil, tak takyto prikaz je v podstate v kazdej hre. takze aj s ucty k nasim predkom programatorom dodrzime tuto konvenciu.

otazka je len, ze cim rozdelujete/rozpoznavate tento prikaz a vobec - akykolvek prikaz.

a ci je to drasticke s tou princeznou? neboj sa ty nic - princezna to zvladne. je vytrenovana... horsie by to bolo ju preniest do tej otvorenej truhlice a napchat ju tam. to asi fakt len po castiach... :-)))

mirek

Quote from: Patto on  25.04.2009, 23:24:24
ok chapem, ze take su podmienky, aby tam bola implementovana zakladna sada prikazov a aj ROZHLIADNI SA ... ale takze moj sposob zobrazovania mozem nechat a spravit prikaz rozhliadni sa tak, aby nerobil prakticky nic? pretoze mne sa to zda byt prehliadnejsie, ked vzdy vidim, kde sa nachadzam a co vidim a neviem co ine potom by mi na konzolu vypisovalo alebo ako inac by mal ten User Interface robeny. Ja som taketo hry velmi nehral takze neviem, ale tento sposob mi osobne prisiel ako najlepsi.

no ja vstupny prikaz delim cez string metodu Split a ako separator mam medzeru. Cize ak na vstupe bude prikaz viacslovny, tak spravim vynimocky stav a dam dokopy prikaz a parameter trosku inac.

no - v zadani je, ze prikaz rozhliadni sa ma zobrazit miestnost, nie ze nema urobit nic :-P takze treba implementovat :-P
So say we all!

mirek

Quote from: Agamemnon on  25.04.2009, 23:30:03
ad rozpoznávanie:
- contains
- startswith
- regulárne výrazy
:)

no - linky su hadam na vsetky spominane metody pod cvikom. ja na vasom mieste, ak sa chcete vyhnut regularnym vyrazom, by som svoju pozornost upriamil na metodu StartsWith() v suvislosti s nazvom prikazu...
So say we all!

Patto

no teraz uz neviem ... takze to musim nejako inac vypisovat (zmenit UI0, ked mam implementovat tento prikaz??? ved ja by som tam ten prikaz mal implementovany, ibaze by mi pri zavolani vypisal hore, ze rozhliadol si sa alebo take nieco a prikaz show() ako vzdy.

mirek

Quote from: Patto on  26.04.2009, 00:39:42
no teraz uz neviem ... takze to musim nejako inac vypisovat (zmenit UI0, ked mam implementovat tento prikaz??? ved ja by som tam ten prikaz mal implementovany, ibaze by mi pri zavolani vypisal hore, ze rozhliadol si sa alebo take nieco a prikaz show() ako vzdy.

implementovat ROZHLIADNI SA je velmi jednoduche. treba ale najrpv vyriesit tu rozpoznavanie prikazov. potom to bude uplne jasne a zretelne, ake je to jednoduche...
So say we all!

morrfun23

mimochodom ako sa mam dostat k metodam vnorenej triedy HistoryEnum ktora sa nachadza v triede history?

domino3d

ehm v prvom rade ahojte

V prípade, že sa jedná o príkaz hry, je potrebné nastaviť parameter príkazu a metóda vráti referenciu na tento príkaz

aku referenciu na aky prikaz vrati? ako mu poviem ze co bude volat? nerozumiem tomu , ako ste to ostatny robili?
vivat academicus

Agamemnon

Quote from: morrfun23 on  26.04.2009, 01:50:02
mimochodom ako sa mam dostat k metodam vnorenej triedy HistoryEnum ktora sa nachadza v triede history?

k nej sa na čo chceš dostať? tá je tam na to, aby fungovalo

foreach (string command in history) {
...
}


edit: tá trieda je vnorená a internal práve preto, aby si sa ku nej nedostal... keby si nemal zverejnené kódy, tak ani nvš, že tam taká classa je
All code is crap.

42

Agamemnon

Quote from: Domino3D on  26.04.2009, 02:12:16
ehm v prvom rade ahojte

V prípade, že sa jedná o príkaz hry, je potrebné nastaviť parameter príkazu a metóda vráti referenciu na tento príkaz

aku referenciu na aky prikaz vrati? ako mu poviem ze co bude volat? nerozumiem tomu , ako ste to ostatny robili?

ak je ten príkaz platný - tj. môže hráč taký príjaz použiť - tak ten GetCommand() ti vráti referenciu na objekt triedy, ktorá implementuje ACommand, a ktorá patrí ku danému príkazu (napr. máš classu East pre príkaz "east", ktorý je zodpovedný za posun hráča smerom na východ, etc.)...
ak príkaz platný nie je, tak ti tá metóda vráti null
All code is crap.

42

morrfun23

lebo metoda load mi nacita prikazy zo suboru a teraz potrebujem tie prikazy z toho listu vyberat a davat do metody ProcessCommand

Agamemnon

to, čo som napísal s tým foreach, tam použi
All code is crap.

42