Portál AbcLinuxu, 21. července 2025 00:46
Zásah – 2 varianty a. Dělová koule zasáhne tank až po dopadu (na konci přesouvání) i. Do přesunuto() koule dáme podmínku na zásah koule na tank. Pokud tato podmínka projde, zavolá se metoda zásah() na tank. Toto se provede pro oba tanky ze třídy Main. - 4 b. Dělová koule může zasáhnout tank i při letu i. podobně jako 2.a.i, ale podmínky se budou psát do setPozice(…) koule. – 5A tady je projekt: http://www.ulozto.cz/xpGXwfX/pomocne-2-rar
Řešení dotazu:
problém dělají metody otocDoleva a otocDoprava, nefungují správně...místo, aby se otočili o 90 stupnů se otočí o 180 stupnůzkus si tam pridat nejake debugovaci vypisy, bys videl, co se skutecne vola (pripadne to proji v debuggeru), pote by melo byt snadne urcit, kde je pricina problemu
Prečo to má dve odrážky "i." a čo znamená " - 4" a " - 5" nevedno. 2. nie je mi jasné, na čo sa vlastne pýtaš? Chceš vedieť, ktorú variantu (z tých dvoch, čo máš premyslené) použiť? No tú, čo funguje. A keď fungujú obe, tak je to jedno. Mne je ťažko radiť bez toho, aby som rozumel tomu čo robia metódy presunuto(), či setPozice(). Ak ti táto rada nestačí, tak budeš asi musieť podrobnejšie vysvetliť, čo tvoje metódy a triedy robia.Zásah – 2 varianty a. Dělová koule zasáhne tank až po dopadu (na konci přesouvání) i. Do přesunuto() koule dáme podmínku na zásah koule na tank. Pokud tato podmínka projde, zavolá se metoda zásah() na tank. Toto se provede pro oba tanky ze třídy Main. - 4 b. Dělová koule může zasáhnout tank i při letu i. podobně jako 2.a.i, ale podmínky se budou psát do setPozice(…) koule. – 5
takže odkaz na FAQ v tomto prípade nie je primeraný.IMHO je zcela primereny
2. nie je mi jasné, na čo sa vlastne pýtaš?a tohe je duvod, proc je primereny. Ve skutecnosti to dokonce ani dotaz neni, je to konstatovani, ze tazatel dostal domaci ukol se kterym si nevi rady a dale nam je oznameno zadani. To si zkratka nic jineho nezaslouzi. Pochopitelne je to jen muj nazor a nikomu dalsimu nebranim v tom, aby se pohrabal v odkazovanem kodu, porovnal se zadanim a upravil podle zadani....
Pokud jsem ten zdroják pochopil, děje se toto. Při startu programu se vytvoří dvě instance třídy Tank, které mají veřejné proměnně int x a int y, které představují počáteční polohu tanku na hrací ploše. Pro vykreslení polohy tanku používáš ITank a příslušné 4 třídy, které jej implementují, pro každou orientaci tanku jednu. Když překreslovací vlákno aktualizuje polohu tanku, volá nad TankD/L/N/P metodu setPozice() z interfacu IPosuvny. Problém je, že pokud ten zdroják čtu dobře, není tam nic, co by aktualizovalo souřadnice x,y tanku jako takového, upravuje se jen místo, kde se tank nakreslí. Detekce kolizí ale kontroluje pozici tanku oproti x,y z třídy Tank, která se po celou dobu běhu programu nemění.
Obávám se, že žádný quick fix mě nenapadá, máš to totiž celé trochu divně navržené. Nevím, zda to po vás takhle ve škole chtěli, ale mít dva totálně nezávislé objekty pro tank a pro cosi, co zařídí jeho vykreslení mi přijde dost nesmyslné.
Pár hnidopišských poznámek na závěr ;)
public Koule pal() { Koule strela; strela = new Koule(...); return strela; }mi vypadávají vlasy, tohle totiž funguje úplně stejně dobře
public Koule pal() { return new Koule(...); }
Hezké Velikonoce, vyřešit problém sám je vždycky lepší, než si od někoho vyslechnout řešení, takže s chutí do toho:)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.