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

OOP - "spešl zadanie"

Started by Domino_666, 24.10.2011, 16:04:53

« predchdzajce - alie »

Agamemnon

Quote from: Domino_666 on  20.12.2011, 07:14:32
ďakujem, odteraz považujem debugger za svätý, mal som tam nechtiac votretú "večnú pravdu", teda pri každom prejdení cyklu sa vytvoril nový Fred. Podľa debuggera sa ich vytvorilo cez 2800  ;D (a to som mal v pláne vytvoriť len singleplayer hru  ;D)
každopádne už mi to ide, dík za rady  :thumbs-up:
jj, debugger vie dost pomoct :)
All code is crap.

42

Leclair

Check the videos inside this profile , some might be usefull :) http://www.twitch.tv/notch/

Cici

kolko FPS mate vy? mne to hadze okolo 900, ale ked dam vykreslit mapu tak klesne az na 300 :/

mino

Na linuxe som viac ako 60 nemal... neviem, ci treba nieco nastavit alebo preco mam take nizke... (Grafika mi inak pod linuxom beha dobre, akceleracia funguje, Compiz funguje...)
Odskusam neskor vo Win...

Domino_666

V init mám zapnuté vsync, takže max 60

// gc je GameContainer
gc.setVSync(true);

Cici

#55
pozeral som na moode a celkom nerozumiem tomu casu - Utorok, 20 december 2011, 23:55. to hore co je napisane "Oddelené skupiny: mirek po 07:30-09:00 B515" - to znamena ze sa tyka nas alebo prave naopak?
Dalsi problem je s velkostou ... robil som si vlastnu grafiku, aj niejake tie animacky naviac som tam hoidl a tak mam cez 15MB ... a limit je 5

mino

#56
Ten termin sa tam sustavne meni... Ja sa drzim toho, co nam povedal Binas na cviceni, ze do januara...

//Edit: Kamaratka mi povedala, ze sa to meni kvoli odovzdavaniu/preberaniu zadani -> aby uz po polnoci nikto nemohol nahrat (?)
Asi na tom nieco bude, lebo dnes je tam zase iny termin 21.12. 23:55...

mino

#57
Taka technicka otazka... Ako ste riesili fonty? Nedari sa mi ho zmenit... Staci aspon velkost... Skusal som nieco ako:

        Font font = new Font(Font.SERIF, Font.PLAIN, 20);
        UnicodeFont uFont = new UnicodeFont(font, font.getSize(), font.isBold(), font.isItalic());
        graphics.setFont(uFont);
        graphics.setColor(Color.yellow);
        graphics.drawString("MENU", 10, 10);

Ale nevypise mi to absolutne nic.
(Ked vynecham ten klucovy riadok, kde je setFont, tak mi to vypise default. fontom zltej farby.)

//Edit: nakoniec sa mi to podarilo tak, ze som pouzil namiesto UnicodeFont TrueTypeFont (je deprecated, ale co uz...)

n3r0

len tak orientačne či som dobre počul :) , vravelo sa že termín na odovzdanie "najneskôr "bude do cca 16.január ??
..what the mind can imagine it we can prove           

mino

Quote from: n3r0 on  22.12.2011, 20:56:07
len tak orientačne či som dobre počul :) , vravelo sa že termín na odovzdanie "najneskôr "bude do cca 16.január ??
Ja si to tiez pamatam cca tak...

Cici

Quote from: n3r0 on  22.12.2011, 20:56:07
len tak orientačne či som dobre počul :) , vravelo sa že termín na odovzdanie "najneskôr "bude do cca 16.január ??
- prvé 2 týždne skúškového, čiže tak to vychádza

stretol sa už niekto s takouto chybou v pmd?

Processing errors

File:   C:\...\BlockMap.java   
Problem: Error while parsing C:\...\BlockMap.java

mino

Quote from: Cici on  23.12.2011, 01:07:39
stretol sa už niekto s takouto chybou v pmd?

Processing errors

File:   C:\...\BlockMap.java   
Problem: Error while parsing C:\...\BlockMap.java
Hej, aj ja som ju raz mal... spustil som PMD znova a už nebola... Nemáš nejakú syntaktickú chybu v tom súbore?

AnvilOfFury

Quote from: mino on  23.12.2011, 20:09:25
Quote from: Cici on  23.12.2011, 01:07:39
stretol sa už niekto s takouto chybou v pmd?

Processing errors

File:   C:\...\BlockMap.java   
Problem: Error while parsing C:\...\BlockMap.java
Hej, aj ja som ju raz mal... spustil som PMD znova a už nebola... Nemáš nejakú syntaktickú chybu v tom súbore?
Niečo podobné robilo PMD kamošovi pri zápise List<String> a = new ArrayList<>(); v JDK7 (korektne:  List<String> a = new ArrayList<String>();)
Keep information to yourself - Knowledge is power. Think job security. Never provide documentation.
Use Real Tools - No "fancy-pancy" IDEs. Real developers only use vi.
Compiled = Ship It - User acceptance testing is an absolute waste of time.

Cici

dik bolo to tym arraylistom

Mitwoc

a ako ste vyriesili "Cyclomatic Complexity" ? lebo mi to vyskakuje v triede fred ked beriem input od hraca a aj v konstruktore levelimpl ked nacitavam layer s actormi v hre, lebo tam mam vsade "if"  ked nazov objektu zacina urcitym retazcom.

A este k tomu odovzdavaniu... nejak tam nenaskakuje dalsi termin do ktoreho treba odovzdat  >:(

mino

No toto by zaujimalo aj mna... Netusim cim nahradit tie "ify" pri kontrolovani inputu. Switch sa tam AFAIK pouzit neda a addKeyHandler je opat vseobecny pre vsetky klavesy => treba ich rozlisit v handleri pomocou "if".

Myslim, ze PMD ma nejake opodstatnenie, 90% warningov je k veci, ale podla mna by to nemala byt priorita, ze podme "znasilnovat" kod, len, aby som mal 0 hlasok v PMD...

Par mojich postrehov:
- 4x som pouzil ten isty retazec v kode => PMD chce, aby som si spravil konstatnu a tu pouzil na miesto tych 4 hodnot. Ale co ak je to len nahoda, ze tam mam 4x tu istu hodnotu? Tie hodnoty nemusia byt v ziadnom vztahu a ja chcem, aby boli nezavisle a aby som mohol neskor zmenit lubovolnu z nich. PMD nevie vyznam mojho kodu... (Ja viem, ak by som bol perfekcionista, tak nepouzijem v kode ani jedno konkretne cislo/retazec a vsetko budu vopred deklarovane konstatny, ale kto ide az do takeho extremu...)

- PMD pravidla su IMHO nedomyslene napr. v pripade, ked pouzijem premennu len v 1 funkcii. PMD hlasi, ze si ju mam dat ako lokalnu premennu funkcie. Z hladiska viditelnosti je to OK, preco by mala byt viditelna v celej triede, ale z hladiska zivotnosti: co ak potrebujem, aby si premenna zachovala hodnotu medzi 2 volaniami tej funkcie? Vo VB sa dala vytvorit pre takyto ucel staticka premenna vnutri metody, v Jave sa to neda. Ako inak to mam riesit, ked nie tak, ze si tu premennu vyberiem von z funkcie? Mam teraz vymyslat nejake "hacky" a umele metody, len aby ta premenna bola aj v inej funkcii, aby mi to preslo kontrolou?

Ak sa mylim, rad sa necham poucit.  :)

Agamemnon

#66
Quote from: mino on  26.12.2011, 00:19:06(Ja viem, ak by som bol perfekcionista, tak nepouzijem v kode ani jedno konkretne cislo/retazec a vsetko budu vopred deklarovane konstatny, ale kto ide az do takeho extremu...)

ja to robím bežne... takisto aj kolegovia v práci... je to dobrý zvyk a zvyšuje to výrazne čitateľnosť kódu

Quote
- PMD pravidla su IMHO nedomyslene napr. v pripade, ked pouzijem premennu len v 1 funkcii. PMD hlasi, ze si ju mam dat ako lokalnu premennu funkcie. Z hladiska viditelnosti je to OK, preco by mala byt viditelna v celej triede, ale z hladiska zivotnosti: co ak potrebujem, aby si premenna zachovala hodnotu medzi 2 volaniami tej funkcie? Vo VB sa dala vytvorit pre takyto ucel staticka premenna vnutri metody, v Jave sa to neda. Ako inak to mam riesit, ked nie tak, ze si tu premennu vyberiem von z funkcie? Mam teraz vymyslat nejake "hacky" a umele metody, len aby ta premenna bola aj v inej funkcii, aby mi to preslo kontrolou?

to si riešil okej... to je nie úplne naj pravidlo v rulesete...
inak dá sa to urobiť ako napr. inout parameter metódy - a je to pomerne elegantné a jednoduché...
potom si viem predstaviť ešte niekoľko workaroundov okolo toho :D zbytočne zložité

edit:
okej, vygooglil som, že java nemá niečo také, ako predávanie parametrov metódy ako referencia (na rozdiel napr. od c#)... takže tú moju vetu o argumentoch metódy môžeš zabudnúť :)
All code is crap.

42

mino

A neviete niekto, kedy su tie terminy na odovzdavanie zadania? Alebo kde je napisane, ze kedy su? Alebo kedy to na tom neznamom mieste bude napisane? :D

Cici

Quote from: mino on  26.12.2011, 00:19:06
No toto by zaujimalo aj mna... Netusim cim nahradit tie "ify" pri kontrolovani inputu. Switch sa tam AFAIK pouzit neda a addKeyHandler je opat vseobecny pre vsetky klavesy => treba ich rozlisit v handleri pomocou "if".

Ja som to rozbil na viac metod - movementButtons(), actionButtons() ... . Tie potom len zaradom volam tam kde by mali byt tie ify. Takisto mam aj pohyb do stran vytiahnuty do osobitnych metod kvoli tejto hlaske cim mam z toho tak neprehladny kod ze sa v tom pomaly stracam aj sam :/ Naozaj si myslim ze to PMD by malo byt lem ako pomocka a nie sa toho striktne drzat.

Inak som si vsimol ze PMDcko pocita clenske premenne podla poctu riadkov v kolkych ich ma deklarovane (cize private int premenna1, premenna2 zarata ako jednu clensku premennu). Pri v classe Fred mam ale bez tejto "chyby" viac ako povolenych 14 premennych (polia obrazkov pre animacie, animacie, energia, zivoty, batoh ...a hned je ich cez 20) Ako by sa dalo zriesit toto?

Cici

Quote from: Mitwoc on  25.12.2011, 21:35:01
a ako ste vyriesili "Cyclomatic Complexity" ? lebo mi to vyskakuje v triede fred ked beriem input od hraca a aj v konstruktore levelimpl ked nacitavam layer s actormi v hre, lebo tam mam vsade "if"  ked nazov objektu zacina urcitym retazcom.

A este k tomu odovzdavaniu... nejak tam nenaskakuje dalsi termin do ktoreho treba odovzdat  >:(
Nacitanie actora z mapy si asi robil nejak zaujimavo. Ja to mam ze actor je preprezentovany tilom, nie objektom. Potom porovnavam tileID na co sa da pouzit switch s cislami.

mino

Quote from: Cici on  26.12.2011, 18:34:24
Ja som to rozbil na viac metod - movementButtons(), actionButtons() ... . Tie potom len zaradom volam tam kde by mali byt tie ify. Takisto mam aj pohyb do stran vytiahnuty do osobitnych metod kvoli tejto hlaske cim mam z toho tak neprehladny kod ze sa v tom pomaly stracam aj sam :/ Naozaj si myslim ze to PMD by malo byt lem ako pomocka a nie sa toho striktne drzat.
Dobry napad  :thumbs-up:
Ja som to chcel rozbit na metody, ale ako handlery pre jednotlive klavesy, ktore by volal priamo Slick-engine... Takto zaradom volat metody je sice IMHO zbytocne, ale co uz, ked PMD sa stazuje...
Quote
Inak som si vsimol ze PMDcko pocita clenske premenne podla poctu riadkov v kolkych ich ma deklarovane (cize private int premenna1, premenna2 zarata ako jednu clensku premennu). Pri v classe Fred mam ale bez tejto "chyby" viac ako povolenych 14 premennych (polia obrazkov pre animacie, animacie, energia, zivoty, batoh ...a hned je ich cez 20) Ako by sa dalo zriesit toto?
Tu by ti mohlo pomoct vybrat suviasiace veci do novych tried... Napr. ja som mal najprv vo Fredovi aj gravitaciu a dalsie veci ohladom jeho pohybu, ale potom som to vytiahol do samostatnej triedy pre fyziku (a ta sa da pouzit aj pre dalsie objekty); na batoh mas asi tiez samostatnu triedu...
A polia obrazkov pre animiacie nepotrebujes mat ako clenske premenne! Staci ich mat tam, kde vytvaras animaciu, potom su uz zbytocne... Ak by si sa potreboval dostat k obrazkom, tak animation.getImage(index) ci tak dajak to je... A este ma napada, ze ak by si mal vela tych animacii , tak dat do pola a potom k nim pristupovat nejak tak: animation[WALKING], animation[STANDING], pricom WALKING, STANDING, ... by si mal ako konstatny =0, =1, ...


Cici

gravitaciu mam v abstractActorovi (aby padalo vsetko :D ) ale sak animacie vytvaram v konstruktore freda - ci da sa aj inak? ja mam:

private Animation waitRightAnim, ...;
private Image[] waitRight = {
        new Image("cesta"), new Image("cesta"), ...
       //kvoli tomu ze mam vlastnu animaciu nerobim cez spritesheety
};

public Fred(float new_x, float new_y) throws SlickException {
       this.waitRightAnim = new Animation(waitRight, 30, true);
..
}

mino

Jj, ja animacie tiez robim v konstruktore. Len som chcel povedat, ze nepotrebujes mat
private Image[] waitRight = {...}
ako clensku premennu, ale mozes tu premennu - pole obrazkov - mat ako lokalnu premennu v konstruktore => usetris par premennych z toho dovoleneho limitu...

petonet

Zdravim,


neviete niekto kolko tych levelov pre Freda treba?

a inak do noveho roku vsetko dobre zelam :beer1:

Cici

Quote from: petonet on  31.12.2011, 18:41:47
Zdravim,


neviete niekto kolko tych levelov pre Freda treba?

a inak do noveho roku vsetko dobre zelam :beer1:
iba jeden jediny