Hallo,
Ik ben op het moment bezig met een 3D schaakspel (met Quest3D). Ik heb echter problemen met de 'navigatie' van de bordvelden.
Even snel mijn vraag, als je hier een antwoord op hebt hoef je in principe niet verder te lezen (het stuk hieronder gaat alleen over de methode die ik als noob heb bedacht).
Mijn vraag is: hoe kan ik d.m.v. arrays het beste een 2d navigatiesysteem maken?
Een voorbeeld illustreert mijn probleem en methode het best.
Neem een paard. De standaard zet is '2 vooruit, 1 opzij'. Op dit moment heeft ieder veld een nummer. Een array heeft een X en een Y waarde. Voor zwart is de beginpositie van het linkerpaard 6. De X is 2, de Y 0.
Als je op het paard klikt, krijg je de mogelijke posities. De 'normale' posities worden goed weergegeven; echter, er ontstaat een derde - foute - positie op veld 16. Zie screenshot:

Dit klopt. In een loopje check ik de mogelijke posities: effectief geef ik een delta x en een delta y aan een functie weer. Vervolgens telt die functie (8*x+y) op bij de huidige waarde van het stuk. In dit geval: 6+(8*1+2) = 16. Met andere woorden: hij ziet veld 16 als een geldig veld.
Hoe kan ik dit oplossen??
Grtz
-DC.
Ik ben op het moment bezig met een 3D schaakspel (met Quest3D). Ik heb echter problemen met de 'navigatie' van de bordvelden.
Even snel mijn vraag, als je hier een antwoord op hebt hoef je in principe niet verder te lezen (het stuk hieronder gaat alleen over de methode die ik als noob heb bedacht).
Mijn vraag is: hoe kan ik d.m.v. arrays het beste een 2d navigatiesysteem maken?
Een voorbeeld illustreert mijn probleem en methode het best.
Neem een paard. De standaard zet is '2 vooruit, 1 opzij'. Op dit moment heeft ieder veld een nummer. Een array heeft een X en een Y waarde. Voor zwart is de beginpositie van het linkerpaard 6. De X is 2, de Y 0.
Als je op het paard klikt, krijg je de mogelijke posities. De 'normale' posities worden goed weergegeven; echter, er ontstaat een derde - foute - positie op veld 16. Zie screenshot:

Dit klopt. In een loopje check ik de mogelijke posities: effectief geef ik een delta x en een delta y aan een functie weer. Vervolgens telt die functie (8*x+y) op bij de huidige waarde van het stuk. In dit geval: 6+(8*1+2) = 16. Met andere woorden: hij ziet veld 16 als een geldig veld.
Hoe kan ik dit oplossen??
Grtz
-DC.