Diskuze: Izometrická kolize
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tak nic, udělám to tím diamantem, tohle je moc složité 
Trochu jsem na to koukal.
Asi by se muselo pro všechny středy kosočtverců v jejichž obdélníku
opsaném se bod myši nachází určit jestli se ten bod nachází v té které
polorovině dělené spojicí vrcholů.
Skoro bych myslel, že existuje nějaké velice jednoduché řešení
výpočtem,
ale asi bych sprostě udělal pro jeden opsaný obdélník pixelovou masku
a s tou to nadrzo porovnal.
Možná jsem to udělal trochu složitějším postupem, ale výsledná
funkce je jednoduchá. Je to v Javě, ale snad to zvládneš přepsat 
class Mapa {
public static void main(String[] args) {
boolean assertsEnabled = false;
assert assertsEnabled = true;
if (!assertsEnabled)
throw new RuntimeException("Assert se zapíná parametrem -ea");
// Obrazovka Hra
Kontrola(0,0, 0,10, "levý horní");
Kontrola(640,0, 10,20, "pravý horní");
Kontrola(640,640, 20,10, "pravý dolní");
Kontrola(0,640, 10, 0, "levý dolní");
}
private static void Kontrola(int x1, int y1, int x2, int y2,
String text) {
Point mys = new Point(x1,y1);
Point mapa = new Point(x2,y2);
assert PoziceNaMape(mys).toString().equals(mapa.toString()) :
"mys: "+mys.toString()+" => mapa má být: "+mapa.toString()+
" je: "+PoziceNaMape(mys).toString() + "; "+text;
}
private static Point PoziceNaMape(Point souradnice) {
return new Point((souradnice.getX()+souradnice.getY())/64,
10+(souradnice.getX()-souradnice.getY())/64);
}
}
Nakonec jsem to přepsal do toho diamantu, nicméně pořád to nefunguje
Mám tam následující kód
(vlastně obdoba toho tvého):
PointF mapPoint = new PointF();
souradnice.X /= (64 / 2);
souradnice.Y /= (64 / 4);
mapPoint.X = (souradnice.X + souradnice.Y) / 2;
mapPoint.Y = (souradnice.X - souradnice.Y) / 2;
Souřadnice dávají smysl, ale reagují tak +- políčko, je to velmi nepřesné. Potřeboval bych to přesně na hrany těch kosočtverců. souradnice je pozice kurzoru myši v oknu, políčko je 64x32. Výsledné souřadnice na mapě jsou mapPoint. Přikládám obrázek.
Zkus to takhle. Měl by ses přitom zbavit i toho nepříjemného side-effectu.
PointF mapPoint = new PointF();
mapPoint.X = (souradnice.X + souradnice.Y * 2) / 64;
mapPoint.Y = (souradnice.X - souradnice.Y * 2) / 64;
Není zač. Zkusil jsem si na tom TDD přesně tak, jak se má dělat. Nejdřív test, potom program. Je to o něco zábavnější.
Stejně je mi záhadou, že ti nevadil ten side-effect na objektu
souradnice. Vždyť ti to muselo udělat v aplikaci docela
zmatek.
Teď jsem si to refaktoroval. Je to paráda. Když máš test, tak si lehce
ověříš, že to stále funguje. Nakonec jsem to přidal jako další metodu
do třídy Point. Tím mi odpadlo pár getterů...
public Point izometricky64() {
return new Point((this.X + this.Y * 2) / 64, (this.X - this.Y * 2) / 64);
}
Zobrazeno 10 zpráv z 10.