Ez a játékprogramozás 22-es csapdája?
Javacriptben írva (nincs pointer) egy térképet kell letárolni. Hogyan tárold?
- 2D tömbben: nagyon egyszerű megkeresni egy mező/cella szomszédait
- A tárgyakat egy struktúratömbben koordinátákkal: könnyű megkeresni az egyforma objektumokat a térképen
És mindkét szerkezet előnyeire szükség van programozáskor. És mivel nincsenek pointerek a pointertömb sem jön szóba.
Duplán letárolni meg szerintem pazarlás.
Van erre megoldás?
Jegyezd meg, hogy: JavaScript-ben minden objektum.
Egy 2D játékban a x és y kordinátákat kell eltárolni.
Miben fogod tárolni? Mivel JavaScript-ben minden objektum, ezért objektumban fogod tárolni.
Létrehozunk neki egy új osztályt. Legyen az osztály neve Vector. Igy fog kinézni az osztály kostruktora:
function Vector(x,y) {
this.x = x;
this.y = y;
}
Letrehozzuk a Vector objektumokat, és elmentjük egy Array objektumba:
var arr = new Array();
vec = new Vector(1,1); arr.push(vec);
vec = new Vector(2,1); arr.push(vec);
Ha tényleg annyira fontosak a szomszédok, akkor azokat is eltárolhatod a Vector objektumokban.
function Vector(x,y) {
this.x = x;
this.y = y;
this.szomszedok = new Array();
}
Ha olyan 2D játékot készítel, aminek az elemei egy képzeletbeli rácson helyezkednek el (mint például: Snake, Packman), akkor annál a játéknál használhatol 2 dimeneziós tömböt az elemek eltárolására.
JavaScriptben vannak pointerek! Pontosabban referenciák vannak. Például:
var a = { name: "Józsi", age: 24 };
var b = a;
Akkor az a és a b változó is egy ugyanarra az objektumra mutató referenciát fog tárolni. Bizonyítás:
b.age += 10;
console.log(b.age); // 34 - ezt vártuk
console.log(a.age); // 34 - hoppáhoppáHOPPÁ!!!
1. Szerintem fogalmad sincs, hogy miről is szól a 22-es csapdája kifejezés.
2. Mindent leírtak korábban. Minek emelted ki a kérdést?
3. Nem.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!