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

OOP

Started by NDK, 22.09.2011, 21:02:52

« predchdzajce - alie »

xxx3

ten flag je co vlastne ? .. dam si nejaku premennu, ktorej nastavim napr. hodnotu true ked predmet bol pouzity, inak bude false ?

A tie getWest atd. kde prekryt ? A ako sa da dat taka podmienka, ze if(predmet bol pouzity) then nieco  ... ?

Agamemnon

Quote from: xxx3 on  07.12.2011, 04:18:29
ten flag je co vlastne ? .. dam si nejaku premennu, ktorej nastavim napr. hodnotu true ked predmet bol pouzity, inak bude false ?

A tie getWest atd. kde prekryt ? A ako sa da dat taka podmienka, ze if(predmet bol pouzity) then nieco  ... ?

jj, flag je zvyčajne bool premenná... v tomto prípade je to presne ako popisuješ...

to prekrytie... máš nejakú miestnosť, kde napr. musíš použiť lano... tak v tej miestnosti (a len v nej) prekryješ pôvodnú getWest (pôvodná getWest len vráti miestnosť smerom na západ) tak, aby v tejto jednej miestnosti urobila aj niečo ďalšie...

napr. takto:

public class MietsnostKdeTrebaPouzitLano extends RoomImpl {
  private bool wasRopeUsed = false;  // toto je ten flag

  // teraz máš nejakú metódu, ktorá nastaví flag na true - túto metódu zavoláš pri použití lana (use metóda v triede Lano)
  public void ropeUsed() {
    // flag nastavíš len ak lano používaš v správnej miestnosti...
    if (gameimpl.getCurrentRoom().Equals(this)) {
      wasRopeUsed = true;
    }
  }

  @Override
  public Room getWest() {
    if (!wasRopeUsed) {
      gameimpl.EndGame();  // alebo čokoľvek, čo ti dokáže ukončiť hru... nechce sa mi hľadať teraz ako to má byť presne zapísané... snáď si vieš predstaviť, čo tu máš zavolať... alebo throwni exception a tú potom na vhodnom mieste odchyť etc..
    }
    return westRoom;
  }
}

All code is crap.

42

xxx3

hm, len teraz to mame tak, ze v triede GameImpl je metoda createRooms, ktora vytvori vsetky miestnosti a nastavi vychody z miestnosti ... to si mam teraz tu miestnost kde treba pouzit lano spravit zvlast ako triedu a v createRooms vytvorit instanciu tej triedy miesto tej miestnosti ktoru tam mam teraz v createRooms ?

Agamemnon

Quote from: xxx3 on  07.12.2011, 05:05:21
hm, len teraz to mame tak, ze v triede GameImpl je metoda createRooms, ktora vytvori vsetky miestnosti a nastavi vychody z miestnosti ... to si mam teraz tu miestnost kde treba pouzit lano spravit zvlast ako triedu a v createRooms vytvorit instanciu tej triedy miesto tej miestnosti ktoru tam mam teraz v createRooms ?

áno, prečo nie? krásna ukážka na polymorfizmus... oddedíš tú triedu od všeobecnej miestnosti (predpokladám, že na všetky miestnosti máš nejakú všeobecnú triedu RoomImpl alebo také niečo)... a pri používaní nebudeš musieť nič riešiť - budeš ju používať presne ako ostatné miestnosti, len tá trieda sa sama postará o seba, a aby urobila to, čo má urobiť...

edit:
takto si vieš urobiť v podstate akúkoľvek zvláštnu miestnosť... ktorá má robiť nejaké zvláštne veci...

+ nebojte sa predávať dáta tým miestnostiam a predmetom cez konštruktor pri inicializácií... na tom nie je nič zlé...
All code is crap.

42

xxx3

ano, je RoomImpl ako vseobecna miestnost

takze, teraz mam v GameImpl v metode createRooms() toto: (okrem ineho)
RoomImpl A = new RoomImpl("A, nachadzas sa v chyzi svarneho suhaja. Na vychode sa nachadzaju dvere veduce z chyze von");

a ked si vytvorim tu miestnost A zvlast, tak budem mat triedu VlastnaMiestnostA, v ktorej spravim to co si pisal vyssie a potom budem mat v GameImpl namiesto riadku, ktory som napisal vyssie, toto?
RoomImpl A = new VlastnaMiestnostA("A, nachadzas sa v chyzi svarneho suhaja. Na vychode sa nachadzaju dvere veduce z chyze von");

dobre to chapem, hej ?
inak diky .. zajtra to vyskusam

Agamemnon

All code is crap.

42

tas

k tym tabulkam, vravim ja to tak nerobim, cisto z lenivosti mi to prislo pracne, ja som ked tak uvazoval nad logickym priznakom pre vychod true/false ci sa nim da prejst, no mna sa to netyka lebo ja mam scenar zrieseny nie na zamknute prekazky ale skor fatalne, ktore ked neodstranis, tak hold prehras ( GameState.GAMEOVER a hotovo, neparam sa s tym) koniec koncov hra co sa neda prehrat za vela nestoji.

matus217

#407
tas ty si asi nejaky sadista na styl vyrobcov Dark Souls  ;D
Inak co myslite, vadi ak mam vsetky texty nazvy popisi miestnosti atd bez diakritiky ?

mirek

taketo nieco napisal nejaky ucitel ku oblubenym screencastom na http://www.youtube.com/user/StevenCarline#p/u/0/bQqr8rO3y4o

ahoj stevo

s oblubou sledujem tvoje screencasty uz od minuleho semestra. len akurat neviem, koho zachranujes tentokrat (zeby tych istych ako vlani?). ked si spomeniem na nase stretko na kofole, tak si hovoril, ze my ucitelia to mame tazke. hmm... v podstate mame ;) pripravit taky material da dost zabrat - aby bol dost zrozumitelny, aby ako celok daval zmysel, aby kazdy jeden scenar daval aj funkcny vysledok a cele to malo hlavu a patu. no a ty svojimi screencastami ukazujes, ze sa nam to cele podarilo - vysledok ma hlavu patu, priebe jednotlivych scenarov takisto, je to funkcne a da sa to spravit. len neviem, ci si uvedomujes, ale ty tym ludom vlastne skodis, pretoze my sa snazime ich naucit rozmyslat, ale ty im ponukas instantne riesenie pre ich problem bez rozmyslania.

niekolko postrehov z predchadzajucich prispevkov tomu dost nasvedcuje:

martivable:
snad sa chapeme, ja to velmi opravit neviem , len som prisiel na chybu

veteran91ke:
P.S.: Vďaka za všetky videá, bez nich by som nemal šancu ;)

a dost ma veteran91ke pobavil hlavne tymto:
odpozeral som tvoj zdroják, porovnal so svojim. Žiaden preklep u seba som nenašiel. Je to vôbec "technicky" možné, že to tebe ide a mne nie a pritom máme zdrojáky rovnaké?

takze - ked to zhrniem, tak ty tych ludi ucis len prepisovat svoj kod z obrazovky. nerozumeju ale tomu, co to vlastne prepisuju.

dost ma vsak zarazil screencast s nazvom Originalita kodu Java, pretoze mi akosi nezapada do tvojho "spasitelskeho" charakteru, kedze v nom ponukas niekolko tipov, ako system "precurat". sam som zvedavy, ako budu niektori nakoniec prekvapeni :-))) totiz zapocet je jedna vec, ale skuska je vec druha. a pred teoretickou castou tie deti caka aj prakticka cast, kde sa budeme snazit overit ich prakticke skusenosti. a pokial ich maju akurat len v prepisovani kodu z obrazovky a nebudu to mat uz v rukach, nuz... nemusi to dopadnut dobre...

nuz - skoda ;) kazdopadne mas moj obdiv - chcelo to hodne casu na to, aby si svoj vysledok este aj prerozpraval a nahral a nezavesil len vysledok. a deti - drzim vam palce, aby ste mali dostatok stastia a nikto (ani overovac vasej originality) si nic podozrive nevsimol, a aby vam stacilo ten kod na zvladnutie tohto predmetu len prepisat, pretoze v realnom zivote si s takymto pristupom vzdy nevystacite.

mirek

p.s. je mi jasne, ze som zly ucitel, pretoze od tych deti nieco realne chcem a im sa nechce, a je mi jasne, ze ty si najlepsi, pretoze im to das zadarmo :-P

p.s.2 kedy ideme na kofolu? :-)
So say we all!

tas

Quote from: matus217 on  07.12.2011, 09:57:54
tas ty si asi nejaky sadista na styl vyrobcov Dark Souls  ;D
Inak co myslite, vadi ak mam vsetky texty nazvy popisi miestnosti atd bez diakritiky ?
tak zasa nie ze v kazdej miestnosti mozes prehrat, ale moj nazor je, ze pri takejto hre mas 2 moznosti aby nebola priliz jednoducha
1. je to co aplikujem ja, lebo potom si to musis bud nahrat a spravit spravny krok alebo ist od zaciatku
2. moze obsahovat "hadanky", neviem ako to lepsie popisat, ale klasicky priklad je Polda, tusim ze tam sa prehrat nedalo, ale ked si sa na nejakom hlavolame zasekol tak zbohom
pekny priklad je aj Prince of Persia (kto mysli na Sands of Time a podobne, tak sa vratte v case do cca 1989) kde v podstate mas "hadanku" najst spravnu cestu, obcas je prekazka kde mozes "prehrat" ale nakoniec je tam len na spestrenie. a do toho vsetkeho ta tlaci cas

btw. odporucam si tieto hry zahrat, mozno su stare, ale dobre, aj dalsie ako prehistorik, vikings, supaplex a pod. nakoniec je zaujimave aj odkial kam sa da dostat, ale to sem nepatri

mirek

Quote from: matus217 on  07.12.2011, 09:57:54
Inak co myslite, vadi ak mam vsetky texty nazvy popisi miestnosti atd bez diakritiky ?
nevadi
So say we all!

matus217

Quote from: tas on  07.12.2011, 18:54:46
Quote from: matus217 on  07.12.2011, 09:57:54
tas ty si asi nejaky sadista na styl vyrobcov Dark Souls  ;D
Inak co myslite, vadi ak mam vsetky texty nazvy popisi miestnosti atd bez diakritiky ?
tak zasa nie ze v kazdej miestnosti mozes prehrat, ale moj nazor je, ze pri takejto hre mas 2 moznosti aby nebola priliz jednoducha
1. je to co aplikujem ja, lebo potom si to musis bud nahrat a spravit spravny krok alebo ist od zaciatku
2. moze obsahovat "hadanky", neviem ako to lepsie popisat, ale klasicky priklad je Polda, tusim ze tam sa prehrat nedalo, ale ked si sa na nejakom hlavolame zasekol tak zbohom
pekny priklad je aj Prince of Persia (kto mysli na Sands of Time a podobne, tak sa vratte v case do cca 1989) kde v podstate mas "hadanku" najst spravnu cestu, obcas je prekazka kde mozes "prehrat" ale nakoniec je tam len na spestrenie. a do toho vsetkeho ta tlaci cas

btw. odporucam si tieto hry zahrat, mozno su stare, ale dobre, aj dalsie ako prehistorik, vikings, supaplex a pod. nakoniec je zaujimave aj odkial kam sa da dostat, ale to sem nepatri
Hej hej chapem ta, to boli paradne hry :) Ja som to nejak tak az neriesil ale mam tam tiez niektore chytaky, ze ked pouzijes dany item tak proste smola :D vyvola to smrtelnu reakciu...
Quote from: mirek on  07.12.2011, 18:55:44
Quote from: matus217 on  07.12.2011, 09:57:54
Inak co myslite, vadi ak mam vsetky texty nazvy popisi miestnosti atd bez diakritiky ?
nevadi
vdaka  :)

xxx3

mirek .. zas nie kazdy musi len opisovat tie zdrojaky, napriklad ja si to robim sam, ale ked s niecim uz fakt neviem pohnut alebo mi hadze nejake chyby a neviem prist nato co s tym tak sa pozriem do tych tutorialov a pridem na chybu, opravim si a je to ... co je na tom zle ? ... alebo sa niekto moze z toho aj ucit, pozrie si to a potom spravi aj sam

matus217

Ja osobne som pred tymto predmetom nikdy nevidel javu... Tieto videa mi pekne demonstrovali ako to vsetko funguje a pomohli mi lepsie pochopit princip. Zadanie som si cele vypracoval sam, cize originality sa nebojim :). Kazdopadne neviem ci niektore primitivne metody ako  setDescription mozu byt originalne - tam stale musi byt a bude zhoda... Takze na jednu stranu, ak to niekto vsetko skopiroval a hodla to tak odovzdat, tak to naozaj nechapem a naozaj sa nic nenaucia... Na druhu stranu, tiez v tom nevidim problem, ak clovek z videi vycita len system a pochopi fungovanie javy, ako sa tie instancie spravaju, ako sa to vsetko prepaja atd... Pre mna to bola ucebna pomocka :)

xxx3

ved aj pre mna to bola ucebna pomocka ...

ale s tou originalitou ... tam podla mna tie metody budu mat vsetci dost podobne kedze je v scenaroch napisane akym sposobom ich mame implementovat

matus217

Quote from: xxx3 on  07.12.2011, 20:22:11
ved aj pre mna to bola ucebna pomocka ...

ale s tou originalitou ... tam podla mna tie metody budu mat vsetci dost podobne kedze je v scenaroch napisane akym sposobom ich mame implementovat
hej no ved ako som vravel... tie gettery a settery na meno a opis musia byt rovnake... a ta hlavna kostra metod bude tiez podobna u vacsiny ludi kedze je dane ako ma vyzerat... bude sa lisit akurat telo

veteran

Quote from: mirek on  07.12.2011, 18:41:43
a dost ma veteran91ke pobavil hlavne tymto:
odpozeral som tvoj zdroják, porovnal so svojim. Žiaden preklep u seba som nenašiel. Je to vôbec "technicky" možné, že to tebe ide a mne nie a pritom máme zdrojáky rovnaké?

Tak toto som čakal.  ;D

Naozaj si ten "nejaký učiteľ" myslí, že to svojmu cvičiacemu hodím celé skopčené zo screencastu?! Naozaj si myslí, že to (napr. aj ja konkrétne) sledujem len za účelom skopčenia a ľahkého zisku zápočtu?! A to oslovovanie "deti"...

Tak, aby bolo jasné - ja osobne to používam čisto ako učebnú pomôcku, kde je celý postup programovania toho zadania vysvetlený oveľa lepšie, než na cvičeniach. Nakódim si to presne tak, ako to tam je a špekulujem za pomoci Pecinovského knihy (áno, bol som ochotný investovať 50 € do knihy! To je, čo?) ako ináč sa to dá ešte urobiť, príp. prečo práve takto sa to robí... Bez tých screencastov by som mal fakt veľký problém pochopiť niektoré implementácie či funkcionality konkrétne v tomto zadaní. A je to mimochodom aj veľmi dobrá príprava na praktickú časť skúšky. Najprv to celé potrebujem pochopiť, ako to funguje, prečo to tak funguje, nakoľko som ešte 18. septembra 2011 nemal ani páru o Jave. Určite to nie je tak, že si k tomu sadnem a celé to okopírujem do finálnej podoby zadania. Ja naozaj nie som naivný a nemyslím si, žeby mi niečo také prešlo (aj keď ľudia, čo si to myslia, sú...). Len tak mimochodom, tomu zadaniu venujem maximum svojho času - nepomerne viac oproti ostatným predmetom (napr. celé posledné dva víkendy a pondelky to bolo od rána do večera).

Teda ešte inak povedané, screencasty u mňa suplujú cvičenia. Žiaľbohu, ja nie som žiaden génius, ktorý to celé pochopí z prednášok - osobne považujem prednášky z tohto predmetu za zbytočné. Radšej mohli byť dve cvičenia - a nie typu "ta tam na Moodli mate scenar, ta robte". Ja viem, je to VŠ, ale cvičenia takéhoto typu vlastne ani nemusia byť. Bohate stačilo rovno na začiatku semestra vypísať konzultačné hodiny a dovi-dopo...

milaninho

aj by som zareagoval ale dochadzaju mi nervy uz..

tas

nie ze by som chcel niekoho branit alebo podobne, ale na prednaskach z oop konkretne a doslovne bolo povedane, ze je to predmet kde by sa viac hodili 2 cvicenia miesto cvicenia a prednasky, zaroven bolo olutovane ze sa to neda a zacala prednaska.
co sa screncastu tyka, su tam ludia aj taky aj taky. najdu sa jedinci co to pozru zistia ako co robit sadnu a naprogramuju, ale najdu sa aj taky co pozru a od slova do slova prepisu
nakoniec si treba uvedomit ze sme na odbore kam sa berie vela ludi, sme tu este bez prijimaciek a v state, kde vam vysoku skolu hradi stat. nechcem nikomu krividt, ale na vysky sa tu hlasia a aj dostavaju ludia, co na to nemaju, no ked to je zadarmo preco to nevyskusat.

xxx3

a este nieco: z PMD  Avoid using implementation types like 'ArrayList'; use the interface instead

to akoze nemam pouzivat ArrayList ? Nechapem, mam miesto ArrayList pouzit rozhranie ?? ako sa to da ?

Agamemnon

Quote from: xxx3 on  08.12.2011, 02:40:48
a este nieco: z PMD  Avoid using implementation types like 'ArrayList'; use the interface instead

to akoze nemam pouzivat ArrayList ? Nechapem, mam miesto ArrayList pouzit rozhranie ?? ako sa to da ?

už sa to rozoberalo... používaj to takto:


List<String> ls = new ArrayList<String>();
All code is crap.

42

xxx3

dik, skusim

a mam otazku ... ked mam velakrat v scenari "pouzi nieco" tak musi to byt robene tak, ze sa vsetky tieto prikazy MUSIA pouzit ? Alebo mozem to mat aj tak, ze niektore musia byt vykonane a niektore nie ? Ze napriklad ked mam niekde "pouzi mobil" tak mozem to mat aj tak, ze sa to tam nemusi pouzit, ze sa moze len prejst do dalsej miestnosti aj ked to v scenari je ?

tas

teoreticky su povolene male zmeny v scenari, druha vec je ako si ten scenar uvazoval, ci to pouzi mobil malo mat nejaky efekt, alebo si to tam daval len koli splneniu podmienok

Agamemnon

ak sa pýtaš, či tam môžeš mať predmety, ktoré sú nepotrebné k prejdeniu hry, prípadne sú tam pre zábavu a pod... tak áno...
ak sa pýtaš, či všetky príkazy v scenári musia byť vykonané, aby si prešiel hru... povedal by som, že ak tam budeš mať 1-2 príkazy navyše (ktoré nezabránia prejdeniu hry, ale nie sú nevyhnutné), tak to vadiť nebude... ak tam máš kopu zbytočných vecí typu (sever - juh - sever - juh - server - juh - ...), tak to vadiť bude :) isté zmeny v scenári sú povolené, takže ak z neho vyhodíš jeden príkaz, tak to určite nebude problém...
All code is crap.

42

xxx3

#424
mam problem pri tom prekryti metody getWest ... co som sa pytal vcera ...

dal som tam:

public class IzbaSLanom extends RoomImpl{
   
    public boolean wasRopeUsed = false;
    public GameImpl miestnost;
   
   
    public IzbaSLanom(String description){
        super(description);
    }
   
     public void ropeUsed() {
   
    if (miestnost.getCurrentRoom().equals(this)) {
      wasRopeUsed = true;
    }
    }
     
    @Override
    public Room getWest() {
    if (!wasRopeUsed) {
      System.out.println("Nepouzil si Lano");  /
    }
   
    return this.getWest();
  }

   
}


A potom v use Lana mam:
public GameState use(Game game) {
        if(game.getCurrentRoom().getItem("sekera") != null){
            tato.ropeUsed();
            game.getCurrentRoom().getNorth();
        }
       
        return GameState.PLAYING;
    }


a predtym :
public IzbaSoSekerou tato;

ale hned ako sa premiestnim do tej miestnosti kde je Lano tak mi vypisuje milionkrat pod seba Ze nepouzil si lano a potom nejake chyby