C# Vytváření random čtverců
Dobrý den, potřeboval bych poradit, jak z pole foreach vybrat jeden rectangle a posunovat ho o trochu dolu. Zatím mám tohle. Děkuji za odpovědi
Dobrý den, potřeboval bych poradit, jak z pole foreach vybrat jeden rectangle a posunovat ho o trochu dolu. Zatím mám tohle. Děkuji za odpovědi
Zpět do poradny Odpovědět na původní otázku Nahoru
Proč ve foreach? Vygeneruj si náhodný index, pomocí něho vyber příslušný rectangle a s ním si dělej, co chceš.
Ale já potřebuju náhodně generovat v určitém intervalu rectangly, který pak budu posouvat směrem dolů. Jak by si to teda udělal?
V dotazu jsi psal o jednom, teď už používáš množné číslo. Co teda přesně chceš udělat?
Chtěl bych udělat takovou hru, kde ti padají rectangly o různé velikosti a ty se jim budeš vyhýbat
Zase tak obecně jsem to nemyslel. Ten konkrétní kus kódu co má dělat? Posouvat s jedním nebo s více rectangly?
S více rectangly
Tak to asi nerozumím, v čem máš problém. Konkrétní rectangle máš ve foreach v proměnné "item". A tam si s ní můžeš dělat, co chceš.
Mam to jeste nejak vysvetlit?
A jak ma presne vypadat ten kod?
Např.:
Error: Cleny z item nejde upravit, protoze jde o iteracni promenna foreach
Tak to nedělej ve foreach ale ve for cyklu.
A jak by vypadal kod kdybych to mel napsal ve for
To nevíš, jak se píše for cyklus?
Dik kod funguje. Jeste bych potreboval vyresit podminku, ze kdyz dole jezdim s blokem doprava, doleva a spadne na me ten padaci blok, tak se vypne program. Vim akorat ze se to bude delat pres pozice
Zkontroluješ pozice jednotlivých prvků, jestli se nepřekrývají.
A muzu zase poprosit jak bude vypadat kod? kdyz jsem zkousel srovnavat pozice tak mi to hazelo chybu
Možná kdybys napsal jakou chybu, tak by se dalo poradit.
Respektive se nic nestane:
prekazky je pole s rectangly
if (prekazky.Count == panel1.Height -20)
{
Close();
}
Nějak tam nevidím, že bys porovnával pozice. Naopak tam pro mě nepochopitelně porovnáváš počet překážek s výškou panelu.
Ok trochu jsem to zmenil:
Rectangle prekazka = new Rectangle();
prekazka = new Rectangle(x, panel1.Height - 20, 40, 20);
kp.FillRectangle(stetec, prekazka);
foreach (Rectangle item in prekazky)
{
if (item.Location == prekazka.Location)
{
Close();
}
}
Nejdřív se nauč základy a začni u toho přemýšlet. Takhle to daleko nedotáhneš. Můžu ti tak akorát poradit si udělat pomocnou metodu, do které vložíš "překážku" a objekt, u kterého se snažíš vypočítat kolizi. Nejprimitivnější je si vypočítat hrany čtverce a zkontrolovat, jestli se nějaká z těch hran nenachází uvnitř druhého objektu. Všechno co budeš potřebovat je pozice a strana "a" (za předpokladu, že stále mluvíme o čtvercích.) Pak už pro každou přkážku zavoláš tuhle metodu. Tohle bys měl zvládnout.
tetris-tutorial-in-c-platform-independent-focused-in-game-logic-for-beginners