Stránka 1 z 2

c# index out of bounds of array  Vyřešeno

Napsal: 08 črc 2013 11:50
od agil
zdravím, mám problém, stím, že když je políčko mina, tak všechna políčka kolem něj dostanou hodnotu 1, ale v případě, že je mina na kraji pole, tak se dostanu mimo pole, nevíte někdo jendoduché řešení? :D

Kód: Vybrat vše

                for (int a = 0; a < Array.x ; a++)
                {
                    for (int b = 0; b < Array.y ; b++)
                    {


                        if (Array.pole[a, b] == 1)
                        {
                            Array.poleM[a, b] = 0;


                            if (Array.pole[a, b + 1] != 1)
                            {
                                //dolu
                                Array.poleM[a, b + 1] += 1;

                                //dolu
                            }
                            if (Array.pole[a + 1, b] != 1)
                            {
                                //doprava
                                Array.poleM[a + 1, b] += 1;
                                //doprava
                            }
                            if (Array.pole[a - 1, b] != 1)
                            {
                                //doleva
                                Array.poleM[a - 1, b] += 1;
                                //doleva
                            }
                            if (Array.pole[a, b - 1] != 1)
                            {
                                //nahoru
                                Array.poleM[a, b - 1] += 1;
                                //nahoru
                            }
                            if (Array.pole[a - 1, b - 1] != 1)
                            {
                                //vlevo nahore
                                Array.poleM[a - 1, b - 1] += 1;
                                //vlevo nahore
                            }
                            if (Array.pole[a + 1, b - 1] != 1)
                            {
                                //vpravo nahore
                                Array.poleM[a + 1, b - 1] += 1;
                                //vpravo nahore
                            }
                            if (Array.pole[a - 1, b + 1] != 1)
                            {
                                //vlevo dole
                                Array.poleM[a - 1, b + 1] += 1;
                                //vlevo dole
                            }
                            if (Array.pole[a + 1, b + 1] != 1)
                            {
                                //vpravo dole
                                Array.poleM[a + 1, b + 1] += 1;
                                //vpravo dole
                            }



                        }

Re: c# index out of bounds of array

Napsal: 08 črc 2013 11:59
od CZechBoY
zdravím,
zjisti si, jestli ten bod pole[a+1, b] je v rámci toho pole a pak až s nim něco dělej

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:12
od agil
jo, to sem zkoušel,ale nevím jak to zjistit, zkoušel sem tohle.. if ((Array.pole[a, b - 1] != 1) && (Array.pole[a, b -1 ]< Array.y) && (b-1 >=0 ))

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:14
od CZechBoY
co je vůbec Array?

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:16
od agil
třída, ve ktery mam inicializovany pole, to pak volám přes konstruktor.... pole ma indexy 0-19

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:18
od CZechBoY
no chtěl jsem třeba seznam vlastností a tak, ale budiž :D
zkontroluj
a>0, b>0
a < Array.x, b < Array.y

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:22
od agil
pořád neufnguje

--- Doplnění předchozího příspěvku (08 Črc 2013 12:26) ---

http://postimg.org/image/ezh3tgtw1/ nechápu, rpoč to je červený u b, vždyt 6 leží v poli

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:29
od CZechBoY
tu megapodmínku nemusíš mít u všech podmínek
když hledáš index a+1, b tak ti stačí ověřit jestli a < Array.x
zas když hledáš a, b-1 tak ti stačí ověřit b > 0

jo a tyhle podmínky na hranice pole by měly být dřív než kontrolování hodnoty na tom indexu

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:39
od agil
if ( b< Array.y && (Array.pole[a, b + 1] != 1))
{
//dolu
Array.poleM[a, b + 1] += 1;

//dolu
}

nefunguje :D

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:41
od CZechBoY
co to píše?
v Array.y je uložená výška pole teda jo?

to poleM kontrolovat nemusíš?

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:45
od agil
j výška........ if ( b< Array.y )
if (Array.pole[a, b + 1] != 1)
{
//dolu
Array.poleM[a, b + 1] += 1;

//dolu
}

ted to ukazuje problém na tohle if (Array.pole[a, b + 1] != 1) ...b= 19, a = 7... to nechápu , vždyt to splnuje podmínku

--- Doplnění předchozího příspěvku (08 Črc 2013 12:46) ---

no poleM bych nekontroloval, protože má stejný rozmery jako pole

--- Doplnění předchozího příspěvku (08 Črc 2013 12:46) ---

pořád index out of rang exception

Re: c# index out of bounds of array

Napsal: 08 črc 2013 12:51
od CZechBoY
jaká je hodnota b a Array.y v tom bodě kdy to spadne?