Hra v Jave - review kodu – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Hra v Jave - review kodu – Java – Fórum – Programujte.comHra v Jave - review kodu – Java – Fórum – Programujte.com

 

Sai85
~ Anonymní uživatel
3 příspěvky
26. 10. 2017   #1
-
0
-

Ahoj,

mam nasledujici ukol:
http://sai85.sweb.cz/PPA1-zadani-u04.pdf

Podle zadani jsem vytvoril nasledujici kod, ktery tvori 4 tridy:
http://sai85.sweb.cz/Postava.java
http://sai85.sweb.cz/Ppa1u04.java
http://sai85.sweb.cz/Ruka.java
http://sai85.sweb.cz/Zbran.java

Podle me funguje program zcela zpravne. Presto mi pri odevzdavani prace validace hlasi nasledujici problemy:

Chyba reportovaná JUnit testem:

Test error!
Run count: 5
Failure count: 3
#0: getUtok_getObra­na(PostavaTes­t): Pro postavu se zbrani v leve ruce jsem ocekaval jiny utok. expected:<11> but was:<1>
#0 Exception: java.lang.Asser­tionError: Pro postavu se zbrani v leve ruce jsem ocekaval jiny utok. expected:<11> but was:<1>
#1: branSe(Postava­Test): Postava ztratila jine mnozstvi zdravi, nez jake bylo zraneni expected:<28> but was:<30>
#1 Exception: java.lang.Asser­tionError: Postava ztratila jine mnozstvi zdravi, nez jake bylo zraneni expected:<28> but was:<30>
#2: vezmiZbran(Pos­tavaTest): Postava tvrdi, ze si nemuze vzit zbran do prazdne leve ruky
#2 Exception: java.lang.Asser­tionError: Postava tvrdi, ze si nemuze vzit zbran do prazdne leve ruky

Nasel by se nekdo ochotny mi kod zkontrolovat, kde mam chybu ?

Nahlásit jako SPAM
IP: 77.48.30.–
peter
~ Anonymní uživatel
4016 příspěvků
26. 10. 2017   #2
-
0
-

No, jestli spravne chapu poznamku, tak, kdyz vemes zbran do leve ruky, ocekava se, ze nejsi levak, tudiz budes mit mensi utok. Ale neni to zmineno v zadani. Pripadne, ze obourucni nemuze pouzit vubec.

utok = sila + utok zbrane, pak osoba dava 5 + 15 dmg, vlk 10+0, zraneni 10
obrana = hbitost + obrana zbrane, osoba 3 + 2, vlk 0+10, zraneni 5
S tim druhym se mi nechce premyslet, ale napohled by to mohlo fungovat. Zkus si vypsat zdravi obou souperu po skonceni boje, jeste. Treba ti to nekde odpocitalo, co nemelo. Zkus pripad, kdyz ma jeden souper na zacatku 0, oba 0, jeden <1, oba <0.

To posledni vypada podle hlasky na chybu, ze mas v prave ruce zbran a premistujes ji do leve. Tak pri premisteni by mel zbran vyjmout z rukou a mel by povolit ji vlozit do leve.

Nahlásit jako SPAM
IP: 2001:718:2601:258:a1d3:d0...–
peter
~ Anonymní uživatel
4016 příspěvků
27. 10. 2017   #3
-
0
-

- getUtok() - ty podminky neni treba tak rozepisovat

utok += sila
a!=null utok+=leva
b!=null utok+=prava
return utok

- vezmiZbran() / getUtok() - mozna by bylo dobre kontrolovat podminky, zda je jednorucni nebo obourucni. Co kdyz mu tam nekdo da 2 zbrane a pritom je jedna obourucni? Jestli neznas ty pojmy, tak obri kladivo ovladas obema rukama, ale 2 male sekyrky muzes mit bez potizi kazdou v jedne ruce. Obri kladivo v jedne ruce by mohlo davat treba polovicni dmg, pripadne bych ho uplne zakazal. U hry bych si kontroloval, zda ma postava dostatecnou silu. Svalnatejsi clovek by mohl pouzivat klidne oboji, ale takove obri kladivo se fakt spatne drzi jednou rukou a urcite by mel potize vyrovnavat rovnovahu
- getZdravi() - vraci zdravi. Ale, co kdyz je zdravi po utoku zaporne? Vrati to nulu? Pokud ne, pak mu uberes vic zdravi, nez je u postavy mozne.

Nahlásit jako SPAM
IP: 2001:718:2601:258:941:f53...–
Sai85
~ Anonymní uživatel
3 příspěvky
27. 10. 2017   #4
-
0
-

#3 peter
Problem je, ze to zadani ulohy je silene spatne udelany. Nedava smysl, je tam spousta nejasnosti prave ohledne toho drzeni zbrani a jak maji fungovat ty obourucni zbrane. Pritom volnost ve vykladu evidentne moc nemame, kdyz pak validace vraci takovy specificky errory. Vubec mi neni jasny, cim je pri vstupu dano, ze ma zbran byt obourucni. Mam jen moznost zadat prvni zbran a pote druhou zbran. Ktera ma jit do ktere ruky a jak se nastavi obourucni zbran, to je mi zahadou. Popravde jsem touto ulohou dost zklaman...

Nahlásit jako SPAM
IP: 77.48.30.–
peter
~ Anonymní uživatel
4016 příspěvků
27. 10. 2017   #5
-
0
-

Chi :) Tohle je nahodou jeste hodne presne zadani. Obvykle se setkas se zadanim udelej mi hru na hrdiny. A az to bude cele udelane, promyslene, tak ti zacne pindat. To chce tak, to onak, a tohle preci neni mozne, jak jsi to mohl udelat prave takhle, vzdyt je snad kazdemu jasne, ze to ma byt tak a tak.

Asi nevidis zdrojaky tech testu (a i kdyby, muzou tam byt jen konkretni cisla). Nejspis tam ma schvalne sporne situace, ktere muzou byt konfliktni. Jako treba to zaporne zdravi, pokus si nasadit dve obourucne mece a tak. Prehodit mec zleva na pravou ruku.
Jako, kdybys videl do testu, tak bys vedel, co testuje, jakou situaci. Obvykle ti autor testu takove info da, protoze chce chybu odstranit. Ale u ucitele tezko rici.
Bez toho fakt jen tezko hadat, co ta chyba presne znamena a jakou situaci zkousel.

Nahlásit jako SPAM
IP: 2001:718:2601:258:941:f53...–
Sai85
~ Anonymní uživatel
3 příspěvky
27. 10. 2017   #6
-
0
-

#5 peter
Rozumim, mas pravdu. To zadani jde pomerne dost do hloubky. Ale na to, jak jsou ty unit testy striktni, tak je to zadani porad dost neurcite. Jak se vubec muzu pokusit nasadit dva obourucni mece? Zadavam pouze prvni zbran a pak druhou zbran. Cim ma byt dana definice obourucni zbrane? Tim ze maji obe zbrane leva i prava stejny nazev? Nebo ze je jedna ruka prazdna jako je to v prikladu vystupu? To si ji tedy nasadi tak, ze leva ruka zustane prazdna pouze prava obsahuje zbran? Co kdyz je to ale pouze jednorucni zbran s tim, ze se rozhodl nechat si levou prazdnou? A prijde mi hloupy menit 100x kod v ruznych variantach a zkouset ho posilat na validaci s tim, ze jednou se snad trefim. Tim se programovat nenaucim a nemam na to ani cas. Jde o zadani domaci ulohy na FAV, ale popravde tenhle priklad mi predmet dost znechutil.

Nahlásit jako SPAM
IP: 77.48.30.–
Matrix17
~ Anonymní uživatel
300 příspěvků
4. 11. 2017   #7
-
0
-

V první řadě bych se zeptal vyučjícího na nejasnosti v zadání. Například na obouruční zbraně. Jinak můžeš samozřejmě použít přístup pokus-omyl a vyzkoušet co se stane když:

1) obouruční zbraň je v obou rukách (instance je nastavená pro obě ruce stejně) - > budeš muset přizpůsobit ozbrojení a výpočet útoku

2) nainivní přístup, obouruční zbraně nehrají roli a může ji mít v jedné ruce, tomu odpovídá i příklad v zadání

To, že ti to špatně počítá zranění je tím, že máš špatně vzorec ve funkci branSe. Navíc se divím, že se ten test vůbec spustil, když si nedodržel zadání (základní struktura tříd neodpovídá zadání).

Třída ruka je naprosto zbytečná a navíc porušuje OOP. Chtělo by to celkově trochu refaktorovat. Je to ale poměrně pěkný zadání. Sám sem si ho napsal, protože je hezký a na pár minut. :)

Nahlásit jako SPAM
IP: 213.226.237.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý