Citat:
Što se tiče vrednosti od 1..7 nisam te razumeo, jer u svakom slučaju mi treba način da kodiram početno stanje nivoa.
Da bi kodirao stanje nekog polja u kom se može nalaziti više objekata i atributa istovremeno,
ti si koristio jedan broj za svaku od smislenih kombinacija što je sasvim legitimno:
Code:
var PRAZNINA = 0;
var ZID = 1;
var PRAZNO_POLJE = 2;
var POLJE_SA_DEDA_MRAZOM = 3;
var JELKA_SA_DEDA_MRAZOM = 4;
var POLJE_SA_POKLONOM = 5;
var PRAZNA_JELKA = 6;
var JELKA_SA_POKLONOM = 7;
Nedostatak ovog pristupa je što proizvodi mnogo "pitalica", ne može se lako proširivati (recimo uvesti novi objekat), nije elegantno...
Korištenje Flag-ova radi istu stvar ali daleko lepše, fleksibilnije i elegantnije,
i u osnovi koristi bitove kao indikatore da li polje sadrži neki objekat ili atribut,
na primer:
Code:
var ZID = 1;
var OTVORENO = 2;
var DEDA_MRAZ = 4;
var JELKA = 8;
var POKLON = 16;
// Otvoreno polje sa deda mrazom, jelkom i poklonom
var polje = OTVORENO | DEDA_MRAZ | JELKA | POKLON;
alert("polje = " + polje);
// Skini poklon sa polja
polje = polje & ~POKLON;
alert("polje = " + polje);
// Da li je jelka na polju
var jelJelka = (polje & JELKA) == JELKA;
alert("jelJelka = " + jelJelka);
// Da li je zid na polju
var jelZid = (polje & ZID) == ZID;
alert("jelZid = " + jelZid);
// Da li je polje zatvoreno
var jelZatvoreno = (polje & OTVORENO) == 0;
alert("jelZatvoreno = " + jelZatvoreno);
http://www.experts-exchange.co...s-Tutorial-and-Usage-Tips.html
[Ovu poruku je menjao dusans dana 05.01.2015. u 13:06 GMT+1]