Diskuze: Pacman - duchové
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 2 zpráv z 2.
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.


Ahoj, té implementaci ve tvém kódu moc nerozumím, ale zkusím ti popsat jak jsem obdobně jednoduchou 2D hru řešil já, když jsem si hrál.
V první řadě bych oddělil logiku hry od vykreslování. Pokud tvůj kód
chápu dobře tak řešíš kolize tak, že kontroluješ zda se nesrazily dva
pictureboxy. Takhle bych to určitě nedělal, protože pokud změníš
obrázek, budeš mít .png s průhledným pozadím okolo obrázku apod. tak to
nebude moc dobře fungovat.
Hrací plochu bych reprezentoval dvourozměrným polem integeru o velikosti
hrací plochy. Předem bych si určil ID typů objektů co které číslo bude
znamenat (resp. pro přehlednost bych použil enum). Např. 0 == volné pole, 1
== zeď, 2 == pac man, 3 == duch atd. V tomto poli bude tedy uložen stav celé
hry s vyjímkou směru jakým se pohybují objekty které se pohybovat
mají.
Pro každý nestatický objekt bych tedy vytvořil instanci jednoduché třídy, která v sobě obsahuje ID typu objektu (odpovídající tomu co doplňuješ do pole), pozici v poli a směr kterým se aktuálně pohybuje. Při každém tiku se všechny objekty mají posunout ve směru který mají nastavený a předpokládám, že na jednom poli může být v jednu chvíli pouze jeden objekt. Předtím si ale musíš zkontrolovat co na daném poli je a podle toho zareagovat(např. pokud pacman narazí do zdi tak se zastaví, pokud duch narazí do zdi tak vygeneruje náhodný směr kam pokračovat, pokud pacman narazí do ducha tak ztratí život atd.) Výhoda tohodle řešení je že není nezbytně nutné procházet celé pole, projdeš jen nestatické objekty a z pole zjistíš co se nachází v jejich bezprostředním okolí.
Ve chvíli kdy je herní logika spočítaná a uložená do pole tak bych zavolal funkci, která podle informací v poli vykreslí scénu. Tím je herní logika nezávislá na grafice. Pokud by jsi to chtěl řešit nějak komplexnějí, popř. tam byly složitější věci, bylo by lepší to všechno řešit objektově, ale na pacmana bohatě stačí pole.
Snad ti tenhle obecný popis trochu pomůže.
Zobrazeno 2 zpráv z 2.