Diskuze: Pomoc s JavaME
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 37 zpráv z 37.
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, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


To druhý byla blbá poznámka
Spíš do toho nikdo nechce 
Já vím, ale vidíš, že ses ozval alespoň ty
Fakt se jedná jen o cca dvě
otázky. Když ne o spritech, tak alespoň ohledně vláken.
V Javě neprogramuji, tak ti poradím jen obecně - vycházej z toho, že sprity jsou obdélníky, takže řeš kolize obdélníků (pokud si nebudeš vědět rady, tak google napoví).
Poté (pokud nastane kolize těch obdélníků) můžeš ještě řešit kolize per-pixel, prostě postupně projedeš všechny "pixely" z obou objektů, který si odpovídají a zkontroluješ, jestli oba z té dvojice mají nastaveno, že kolidují.
Tady máš ukázku kolizí per-pixel, kdyžtak můžu dodat zdroják v C#.
Per pixel jsem raději vzdal.
Abych lépe popsal problém. Dělám pong. Mám třídu Ball (pohybující se balónek) a Paddle (tedy ty dvě odrazové pálky). Nevím, jak z nich udělat sprity. Na jejich kolizi slouží metoda collidesWith (v podstatě to stejné jako intersect v JavaSE).
Prokousávám se programováním a Javou už v podstatě dva roky, ale stále nechápu některé základní věci. Třeba vlákna. Spustím si vlákno v každé třídě, pak ale nevím, jak s nimi naložit v Canvasu (Midlet - základní třída, co se volá po spuštění - slouží jen k zobrazení třídy Canvas). Tedy hlavní mojo se děje v Canvasu. Měl bych mít všechno správně, potřebuji jen udělat z balónku a pádel sprity, v Canvasu udělat jednu metodu pro kolizi (collidesWith) a vše spustit opět ve vlákně.
Já mám zdroják k per pixel i v Javě, ale naprosto nevím, co s tím. Jak jsem psal, jsem v podstatě začátečník.
Já nevím, ale na tak jednoduchou věc jako je pong nepotřebuješ ani vlákna ani třídy, jen kreslíš kolečko a obdélníčky.
Zdroják:
sdraco: Tobě to přijde jednoduché, ale pro mě je naprogramovat i něco
tak jednoduchého nadlidský úkol 
A co je tedy za problém? Vezmi míček jako obdélník a máš to.
Koukám, že to tak dokonce i máš. Ale nechápu, proč má pálka i míček run, to je hloupost. Herní cyklus je přeci jeden. Aby pálka odrazila míček, můžeš jí ho předat třeba v konstruktoru.
Já ho jako obdélník mám. Nevím, jak poté vše "sesumírovat" v MyCanvas, tedy jak spustit vlákna a jak udělat kolizi. Per pixel nerozumím, tedy jedinou možností (alespoň o jiné nevím) je metoda collidesWith ze třídy Sprite. Ta ale bere pouze objekty jako obrázky.
Takže si vytvořím jen jedno vlákno v MyCanvas, ve kterém spustím instanci míčku a dvě instance pálek, tzn. odstraním run ze tříd Ball a Paddle?
Ano, budeš mít jednu herní smyčku, tam si vytvoříš 2 pálky a míček a budeš je obsluhovat. Otázka je, jak udělat kolizi, buď předáš míček pálkám (aby na něj viděly a mohly na něj reagovat), nebo dáš pálkám getter na jejich Rectangle, stejně to uděláš míčku a v tom hlavním cyklu budeš kontrolovat, zda se tyto 2 Rectangly nekříží.
Na Sprity se zatím vykašli, udělej to takhle a až ti to bude fungovat,
řeš obrázky 
Pong jsem dělal v Pascalu, ale podstata je stejná. Víš kde je míček a
víš kde je pálka. Palka stojí na ose X třeba X = 1, a pohybuje se po ose Y
(1 až 32) když se míček dostane na pozici X = 2, pošleš otázku, kde je
pálka, jestli bude odpověď, že Y pálky (+ - šířka pálky) a míčku
stejná, dáš odraz. Jestli je mimo, set končí, změníš počet bodu a
začíná se od protihráče. V Pascalu byl pong na pár řádků. Sice pod
grafikou 320 x 240px ale zrovna u pongu je to jedno 
Dobře, díky oběma. Pochopil jsem, jak dál postupovat. Až to vše udělám a nepojede mi to (jako vždy), opět se zeptám.
Asi bych to měl vědět, ale proč nemůžu po vytvoření instance třídy Ball v ní volat getter? Ono je to asi stejně zbytečné, ale zajímalo by mě to.
http://leteckaposta.cz/667317231
Místo yDirection v metodě kolize() bych měl balonek.getYDirection();
Nevím, jak to myslíš, gettery jsou od toho, aby se používaly mimo třídu. Strašně se mi nelíbí, že je v Ball balónek, je to zmatečné. Ten rectangle by se měl jmenovat třeba oblast, to dává smysl, Ball má nějakou oblast na obrazovce. Ale že Ball má balónek... A proč máš v balónku canvas? Balónek je samostatná komponenta, canvas máš jeden mimo, to jsme přeci již řešili.
Většina toho kódu je z nějakého Youtube tutoriálu. Je pravda, že mi některé věci připadaly přinejmenším divné. Takže, pokud správně chápu, budu mít třídu balónek, která bude jen vytvářet balónek a náhodně ho odrážet od okrajů. Pak třídu pálek, jež se bude starat jen o vytvoření dvou instancí na základě ID, jejich ovládání a aby nepřejely okraje. Veškerou logiku jako kolizi atd. vyřeším v MyCanvas. Je tak?
Canvas tam mám jen kvůli tomu, aby mi vrátil zobrazitelnou oblast.
To jsi dělal podle nějakého divného tutoriálu
Já bych do těch komponent
žádnou extra logiku nedával a vše si řešil v Canvasu, pálka a míček by
měly jen rectangle a vykreslování, dále metody, které by s nimi
hýbaly.
Možná bude lepší, když si sedneš a napíšeš to znovu.
Už to píšu celé znovu
Ještě nechápu jednu věc. Jak potom v MyCanvas vykreslím vše potřebné?
Už nepoužiji metodu paint, ale všechno spustím v run?
Máš ten svůj Canvas, ten má metodu Paint, která bere v parametru graphics nebo alespoň tak nějak podobně by to mělo být. Pálce i míčku uděláš metodu Vykresli, co bere v parametru graphics a na graphics nakreslíš na pozice míčku míček, v pálce to samé, jen na pozici pálky pálku. V Paint v Canvas pak zavoláš micek.Vykresli(g) a palka1.Vykresli(g) atd., g je Graphics, co má Paint v parametru. Kdyby jsi se v tom ztratil, tak pošli kód.
Já už fakt nevím. Nic se nevykreslí, překladač vyhodí Out of memory.
Teď je to dobře, jen voláš v paint repaint(), což znovu zavolá paint a
znovu repaint až ti dojde zásobník
Dej to repaint pryč.
Já myslel, že je repaint na to, aby vždy překreslil celý canvas. Teď mi to pro změnu vyhodí Execution failed with error code 1.:D
To ano, ale repaint musíš volat mimo paint, dělá se to obvykle v nějakém timeru. Repaint ti totiž zavolá paint a když v ní voláš repaint, tak si to zacyklíš.
Jo takhle. Stále ale nechápu, proč se mi nevykreslí alespoň ty dvě pálky.
Co jsi posílal naposled, tak mělo prázdný run. Musíš si tma udělat timer a v něm volat repaint.
I když jednou by se vykreslit měly. Nicméně to máš napsané teď dobře
a návod jak něco vykreslit v JavaME určit najdeš 
Já už fakt nevím. Čím víc se do toho dívám, tím méně tomu rozumím. Nenašel jsem podklady, ze kterých bych pochopil, co mám dál udělat.
Zobrazeno 37 zpráv z 37.