Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Ako vyriešiť tento problém s funkciou v JS [hra]

Ďakujem za rozsiahlu odpoveď! :)

Konkrétne, čo znamená "takto"

som myslel tak, že chcem aby program cestu našiel podľa "zákrut" toho káblu..
Nechcem to mať tak aby to bol čiste jeden blok a od neho sa všetky pustupne aktivovali..

Čo je v premennej nblocks?

nblocks[0] Je blok kábku/prúdu/elektriny/akokolvek to nazvete.. v tejto hodnote su ulozene vsetky bloky typu kablu..
nblocks[1] je hodnota do ktorej ukladam vsetky bloky Páčky ktora spusta obvody..
Je to v podstate to iste akoby som to mal ulozene ako elektrina = []; a packy = [];

Čo je id v bloku?

Zle som nazval "direction" vo funkcii ako ID.. nemal som to nazvat ako ID ale napriklad dir.. ID maju bloky tiez ale to sa v tejto casti
kodu vobec nevyuziva.. sluzi to na rozpoznanie toho aky hrac blok drzi v ruke.. A ano viem že ked je to teda 13ty blok, ako je mozne ze hodnota nieje nblocks[12], kde je tých 11 blokov pred týmto? Takto som začal oznacovat bloky len nedávno.. preto sa hodnota DOCASTNE volá "n"blocks ako new blocks.. ostatne bloky su ulozene VSETKY od 1-12 v JEDNEJ hodnote blocks = []; .. co bolo velmi neefektivne z dovodu optimalizacie.. ked som chcel zistit aky typ bloku to je, ci to je trava, kamen atd.. tak som musel prejst všetkými blokmi a postupne zistovat cez if či blok je tráva, kamen atd.. Casom prerobim vsetky bloky takto..

Čo je damage? Prečo ju tu vôbec dávate, keď nesúvisí s problémom?

Damage som uviedol len ako ukazku toho ako ukladam bloky v arrayi.. Sluzi to na nicenie blokov.

Direction je predpokladám ten "smer otočenia", správne?

ano

Active je predpokladám, či je daný blok obvodu zapnutý alebo nie.

ano

Nazov funkcie "abcd" som napisal len tu na poradni, realne v kode sa to vola inak, funkciu som "vyčistil" a teraz vyzerá oveľa krajšie.. Funguje v podstate rovnako no vyriesil som problem ako zistit ci daný blok uz bol aktivovany touto páčkou.. Ak ano tak ho bude ignorovat, uz to nehadze chyby..

Ďakujem! :)

Inak ak sa mozem spytat este.. dá sa nejako efektivnejsie zistit napriklad to
ze napriklad z tohto for

for(var i = 0; i < nblocks[0].length; i += 1){

nechcem for na všetky bloky ktore su v tomto arrayi ale len tie ktore maju napriklad active == 1...
samozrejme ze ak dam do for if tak to fungovať bude bez problemov.. ide mi skôr o to ci sa to da zapisat
nejak viac efektivne.. aby bola lepsia optimalizacia hry.. aby for bralo hned len tie bloky ktore maju danu hodnotu rovnu niecomu

nechcem

for(var i = 0; i < nblocks[0].length; i += 1){
if(nblocks[0][i].active == 1){......bla bla

chcem nieco taketo

for(var i = 0; i < nblocks[0]{activate == 1}.length; i += 1){
.
.
bla bla

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny