IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Lukáš Křehula:28.5.2015 10:06

Ahoj lidi,
potřeboval bych pomoct opravit chybu v následujícím kódu:
Mám hru, kde vytvářím bloky, přes které musí hráč přeskočit aby neprohrál. Tyhle bloky se pohybují doleva o X pixelů každých 25ms a spawnují se v rozmezí 500 - 1500 px od hráče.
Můj problém: Stačí mi mít vytvořených pouze 10 (možná i míň) tady těchto překážek, takže je pokaždé chci dovytvořit když bude nějaká chybět. Problém je, že se mi vytváří prázdná pole a ta hodně rychle stoupají (ikdyž je to dost zvláštní). Prvních 10 překážek se vytvoří a dál už se mi vytvářejí pouze prázdná pole (nechal jsem si vypisovat .length a dostal jsem se k řádům desetitisícům).
Zde je kód:
Tady detekuji kolizi s hráčem a taky, kdyby se překážka dostala za mapu tak ji zničím:

for(var i = prekazkaX.length; i >= 0; i--)
                                        {
                                                if(Kolize(i))
                                                {
                                                        hrac_Rychlost -= rychlostMapy;
                                                        prekazkaX.splice(i, 1);
                                                }
                                                else
                                                {
                                                        prekazkaX[i] -= rychlostMapy;
                                                        if(prekazkaX[i] < -35)
                                                        {
                                                                hrac_Skore++;
                                                                prekazkaX.splice(i, 1);
                                                        }
                                                }
                                        }

Tady je vytvářím znovu:

function VytvoritPrekazky()
                        {
                                for(var i = prekazkaX.length; i <= 10; i++)
                                {
                                        if(i == 0)
                                                prekazkaX.push(hrac_X + 500);
                                        else
                                                prekazkaX.push(prekazkaX[i-1] + parseInt(Math.floor((Math.random() * 500) + 1500 - (hrac_Skore * 3))));
                                }
                        }

Děkuji za každou radu, jelikož já už jsem bezmocný ;(

 
Odpovědět
28.5.2015 10:06
Avatar
Lukáš Křehula:30.5.2015 13:15

Ahoj, jen bych chtěl dodat, že tuto chybu už jsem vyřešil. Byla to moje hloupost :[
Chyba byla zde:

for(var i = prekazkaX.length; i >= 0; i--)

Cyklus se vždy dostal za hranici pole a vytvořil proto nové
Řešení:

for(var i = prekazkaX.length - 1; i >= 0; i--)
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
30.5.2015 13:15
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.