Diskuze: Odhalování obrázku - hra
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 13 zpráv z 13.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, toto by se dalo řešit pomocí CSS pseudo třídy :hover a :visited. To je asi nejzákladnější možnost. Dále by to šlo snadno pomocí JS, kde si napodmínkuješ pozadí tlačítka při kliknutí a změníš jeho background na false nebo transparent. V C# by to šlo stejným principem. Na mobil rovněž tak do události OnClick(). Nezmiňuješ, jaká to má být aplikace (mobil, desktop, web), tak zde máš obecná řešení pro vše.
Pokud děláš hru pro mobil či desktop, a visuální stránka věci je stěžejní (tj. většinu času bude +- 100% plochy zabrána hrou), navrhuji kompletní custom painting. Je pak otázkou, jaký engine využít a nemusí to nutně být D2D/DDraw, stačí GDI. Implementace je trošku složitější, ale performance je lepší.
(Nostalgie: kdysi, na pentium1, v Delphi, jsem vytvořil 1000 editboxů na scrolovatelný panel. Spuštění a scrolování bylo neuvěřitelně pomalé. Použil jsem custom painting, textboxy se nevytvářely, ale měl jsem vlastní rendering a event handling, a aplikace šlapala velice svižně. Zároveň 1000 nebyl žádný limit, počet jsem mohl volně navyšovat.)
Přesto mě překvapuje pád celého VS - nevidím pro to důvod. Chápal bych pád tvé aplikace/hry. Nejspíše tam máš nějaký leak. Snížení počtu objektů ti nemusí pomoci, protože jiný (slabší) počítač nezvládne ani těch 66 tlačítek a leak se projeví už dříve.
Sice nejsou v zadani podstatne informace, ale nelze jen umistit na plochu podklad-hadany obrazek a nad nej dalsi "obrazek" resp.x*y obrazku malych ctvercu.. po kliknuti prepocitat souradnici ctverce na kt.se kliklo a ten odstranit nebo invisiblovat, zpruhlednit?
Tak asi se mi Visuálko nějak dobře prospalo a překvapivě mi to s těmy
tlačítky začalo fungovat, se všemi. Jen mě mrzí, že jsem
nevyfotil tu chybu, aby se mi věřilo...
Kdyz VS spadne na 70 policko, co zkusit pouzit 2 obrazky? Z obrazku by melo
jit vyriznout, nastavit transparentni barvu. Pripadne ho muzes vzdy smazat a
vykresli vyplnene ctverecky z nejakeho pole. Na onclick si prepocitas souradnice
na cislo policka.
Edit: A ted koukam, ze to same pise MpCk.
To je sikovne. Takhle vybarvis celou plochu barvou a pak na ni jen nakreslis
obdelnicky.
Mozna, ze v dalsim lvl bys mohl prekryt barevny obrazek jinym, 2 odstiny barev,
jen jakasi maluvka, symbol hry nebo napovedny obrazek. Mrizku muzes mit jako
treti obrazek nad tim a schovat ji, az kdyz uhodnou obrazek.
https://img.myloview.cz/…19296384.jpg
https://www.kalendareone.cz/…ove-2018.jpg
Neco takoveho, desaturace a pak efekt saturace treba do zlutohnede,nebo
modrobile. Neco, jak jsou perokresby na mapach. A symbolizovalo by to tema
priroda. Nemelo by to byt moc vyrazne, spis takove vodotisk nebo tak. Aby byl
dobre vyrazny obrazek
Ty jo hoši, tak to už vypadá mnohem profesionálněji než ta moje hloupá
tlačítka. Akorát jsem se v
těch třech vrstvách trochu ztratil. To už by bylo jakože hádám mezi
dvěma obrázky? Takové 3D pexeso?
Ještě jen tak závěrem, dohledal jsem přímo od Microsoftu ofiko návod na něco podobného: https://docs.microsoft.com/…atching-game?… - překvapivě to vypadá líp jak ty moje tlačítka...
Ahoj,
něco takového jsem dělal asi rok zpátky... Normálně si vytvoř Windows
Forms Aplikaci, vezmi PictureBox, kde bude obrázek a umísti ho do okna...
Namísto toho, aby jsi vzal jednotlivé Panely, kterými bude obrázek
rozdělen, napiš toto (událost Form_Load):
private void oO_Load(object sender, EventArgs e)
{
for (int top = 12; top != 462; top += 50)
{
for (int left = 12; left != 812; left += 50)
{
Panel panel = new Panel();
panel.Size = new Size(50, 50);
panel.BorderStyle = BorderStyle.FixedSingle;
panel.Top = top;
panel.Left = left;
panel.Parent = this;
panel.Visible = true;
panel.BringToFront();
panel.Click += (oSender, eE) =>
{
panel.Visible = false;
};
}
}
}
Nebo si prostě stáhni tohle ode mne... Teď jsem to napsal: Odkrývání obrázku
Ahoj Vernýsi, tohle je super řešení, přesně to jsem měl na mysli!
Děkuji.
V pořádku, rád jsem pomohl!
Zobrazeno 13 zpráv z 13.