Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Proč ve foreach? Vygeneruj si náhodný index, pomocí něho vyber příslušný rectangle a s ním si dělej,…
Wikan 22.05.2018 14:44
Wikan
Ale já potřebuju náhodně generovat v určitém intervalu rectangly, který pak budu posouvat směrem dol…
Dave007 22.05.2018 14:47
Dave007
V dotazu jsi psal o jednom, teď už používáš množné číslo. Co teda přesně chceš udělat?
Wikan 22.05.2018 14:53
Wikan
Chtěl bych udělat takovou hru, kde ti padají rectangly o různé velikosti a ty se jim budeš vyhýbat
Dave007 22.05.2018 14:54
Dave007
Zase tak obecně jsem to nemyslel. Ten konkrétní kus kódu co má dělat? Posouvat s jedním nebo s více…
Wikan 22.05.2018 15:00
Wikan
S více rectangly
Dave007 22.05.2018 15:01
Dave007
Tak to asi nerozumím, v čem máš problém. Konkrétní rectangle máš ve foreach v proměnné "item". A tam…
Wikan 22.05.2018 15:09
Wikan
Mam to jeste nejak vysvetlit?
Dave007 22.05.2018 15:25
Dave007
A jak ma presne vypadat ten kod?
Dave007 22.05.2018 15:26
Dave007
Např.: item.Y += 5;
Wikan 22.05.2018 15:27
Wikan
Error: Cleny z item nejde upravit, protoze jde o iteracni promenna foreach
Dave007 22.05.2018 15:28
Dave007
Tak to nedělej ve foreach ale ve for cyklu.
Wikan 22.05.2018 15:36
Wikan
A jak by vypadal kod kdybych to mel napsal ve for
Dave007 22.05.2018 15:45
Dave007
To nevíš, jak se píše for cyklus? public partial class Form1 : Form { readonly Random _rand = new…
Wikan 22.05.2018 15:55
Wikan
Dik kod funguje. Jeste bych potreboval vyresit podminku, ze kdyz dole jezdim s blokem doprava, dolev…
Dave007 22.05.2018 20:34
Dave007
Zkontroluješ pozice jednotlivých prvků, jestli se nepřekrývají.
Wikan 22.05.2018 22:00
Wikan
A muzu zase poprosit jak bude vypadat kod? kdyz jsem zkousel srovnavat pozice tak mi to hazelo chybu
Dave007 23.05.2018 19:41
Dave007
Možná kdybys napsal jakou chybu, tak by se dalo poradit.
Wikan 23.05.2018 19:45
Wikan
Respektive se nic nestane: prekazky je pole s rectangly if (prekazky.Count == panel1.Height -20) { C…
Dave007 23.05.2018 19:49
Dave007
Nějak tam nevidím, že bys porovnával pozice. Naopak tam pro mě nepochopitelně porovnáváš počet překá…
Wikan 23.05.2018 19:51
Wikan
Ok trochu jsem to zmenil: Rectangle prekazka = new Rectangle(); prekazka = new Rectangle(x, panel1.…
Dave007 23.05.2018 20:30
Dave007
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 po… nový
aoskhdofa 24.05.2018 02:50
aoskhdofa
tetris-tutorial-in-c-platform-independent-focused-in-game-logic-for-beginners poslední
jirka44 24.05.2018 08:09
jirka44

To nevíš, jak se píše for cyklus?

    public partial class Form1 : Form
    {
        readonly Random _rand = new Random();
        List<Rectangle> _rects;
        
        public Form1()
        {
            InitializeComponent();
        }

        void Form1_Load(object sender, EventArgs e)
        {
            _rects = new List<Rectangle>
            {
                new Rectangle(10, 10, 10, 10),
                new Rectangle(30, 10, 10, 10)
            };
        }

        void panel1_Paint(object sender, PaintEventArgs e)
        {
            var brush = new SolidBrush(Color.Red);

            foreach (var rect in _rects)
            {
                e.Graphics.FillRectangle(brush, rect);
            }
        }

        void timer1_Tick(object sender, EventArgs e)
        {
            for (var index = 0; index < _rects.Count; index++)
            {
                var rect = _rects[index];
                rect.Y += _rand.Next(10);
                _rects[index] = rect;
            }

            Refresh();
        }
    }

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.

Zpět do poradny Odpovědět na původní otázku Nahoru