Author Topic: Objektove programovanie  (Read 152318 times)

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektove programovanie
« Reply #450 on: 25.04.2009, 19:01:15 »
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

  • Hero Member
  • *****
  • Posts: 715
    • View Profile
Re: Objektove programovanie
« Reply #451 on: 25.04.2009, 19:18:24 »
najlepsiu?  ;D
"Iba život, ktorý žijeme pre ostatných, stojí za to." - Albert Einstein

mircoo

  • Jr. Member
  • **
  • Posts: 79
  • GBU all ...
    • View Profile
Re: Objektove programovanie
« Reply #452 on: 25.04.2009, 19:27:41 »
caute, este raz pisem,  :)

 mam metodu execute takto:
Code: [Select]
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:
Code: [Select]
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

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektove programovanie
« Reply #453 on: 25.04.2009, 20:07:13 »
caute, este raz pisem,  :)

 mam metodu execute takto:
Code: [Select]
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:
Code: [Select]
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

  • Jr. Member
  • **
  • Posts: 79
  • GBU all ...
    • View Profile
Re: Objektove programovanie
« Reply #454 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
« Last Edit: 25.04.2009, 20:18:32 by mircoo »
Praise Him with the strings....

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: Objektove programovanie
« Reply #455 on: 25.04.2009, 20:19:26 »
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

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektove programovanie
« Reply #456 on: 25.04.2009, 20:26:04 »
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

  • Jr. Member
  • **
  • Posts: 79
  • GBU all ...
    • View Profile
Re: Objektove programovanie
« Reply #457 on: 25.04.2009, 20:43:39 »
hej jasne ;) vdaka za pomoc, pohram sa s tym debugom , uvidime no
Praise Him with the strings....

andy

  • Newbie
  • *
  • Posts: 49
    • View Profile
Re: Objektove programovanie
« Reply #458 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 :)
« Last Edit: 25.04.2009, 22:41:01 by andy »

Patto

  • Sr. Member
  • ****
  • Posts: 380
    • View Profile
Re: Objektove programovanie
« Reply #459 on: 25.04.2009, 23:09:31 »
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

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektove programovanie
« Reply #460 on: 25.04.2009, 23:09:41 »
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

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektove programovanie
« Reply #461 on: 25.04.2009, 23:13:16 »
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

  • Sr. Member
  • ****
  • Posts: 380
    • View Profile
Re: Objektove programovanie
« Reply #462 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.

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: Objektove programovanie
« Reply #463 on: 25.04.2009, 23:30:03 »
ad rozpoznávanie:
- contains
- startswith
- regulárne výrazy
:)
All code is crap.

42

andy

  • Newbie
  • *
  • Posts: 49
    • View Profile
Re: Objektove programovanie
« Reply #464 on: 25.04.2009, 23:36:02 »
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

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektove programovanie
« Reply #465 on: 26.04.2009, 00:21:31 »
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

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektove programovanie
« Reply #466 on: 26.04.2009, 00:22:38 »
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

  • Sr. Member
  • ****
  • Posts: 380
    • View Profile
Re: Objektove programovanie
« Reply #467 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.

mirek

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektove programovanie
« Reply #468 on: 26.04.2009, 00:53:01 »
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

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Objektove programovanie
« Reply #469 on: 26.04.2009, 01:50:02 »
mimochodom ako sa mam dostat k metodam vnorenej triedy HistoryEnum ktora sa nachadza v triede history?

domino3d

  • Full Member
  • ***
  • Posts: 161
    • View Profile
Re: Objektove programovanie
« Reply #470 on: 26.04.2009, 02:12:16 »
ehm v prvom rade ahojte
Code: [Select]
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íkazaku referenciu na aky prikaz vrati? ako mu poviem ze co bude volat? nerozumiem tomu , ako ste to ostatny robili?
vivat academicus

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: Objektove programovanie
« Reply #471 on: 26.04.2009, 02:48:25 »
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
Code: [Select]
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

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: Objektove programovanie
« Reply #472 on: 26.04.2009, 02:53:41 »
ehm v prvom rade ahojte
Code: [Select]
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íkazaku 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

  • Jr. Member
  • **
  • Posts: 96
    • View Profile
Re: Objektove programovanie
« Reply #473 on: 26.04.2009, 03:08:23 »
lebo metoda load mi nacita prikazy zo suboru a teraz potrebujem tie prikazy z toho listu vyberat a davat do metody ProcessCommand

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: Objektove programovanie
« Reply #474 on: 26.04.2009, 03:09:39 »
to, čo som napísal s tým foreach, tam použi
All code is crap.

42