Corniel schreef op dinsdag 05 januari 2016 @ 15:32:
@Onbekend: Wat voor interne representatie heb jij eigenlijk van het bord/veld? Zelf heb ik een ushort[] representatie. Als je meer dan 2 ply diep wilt kijken (en volgens mij wil je dat) is dat wel noodzakelijk.
Ik zie nu pas jouw reactie.
Ik werk met verschillende type array's.
De eerste array is gewoon van het FieldCellType (byte dus), waarmee ik gewoon het hele speelveld heb zoals die is aangeleverd, maar het type Piece vertaal ik meteen naar Empty bij de start. Mijn array's van de pieces zijn ook van het type FieldCellType.
Een andere array om mijn veld te definiëren is ook van het type byte, en die gebruik ik voor mijn pathfinder om onbereikbare posities voor de pieces te markeren. De pathfinder zelf gebruikt alleen bool[] met de breedte van het veld, en dat is voldoende.
Overigens heb ik aan alle kanten van het speelveld een rand van 3 breed gedefinieerd (type Solid) waarmee eigenlijk het interne speelveld 16x26 is. Hierdoor hoef ik nergens een controle te doen om een IndexOutOfRangeException te voorkomen omdat die niet meer voor kan komen. (Als die wel voorkomt, dan is het een foutje in mijn code zelf.

)
Tot nu toe heb ik een brute-force oplossing geschreven om de "current piece" en "next piece" in het speelveld te laten vallen, en dat alles valt ruim binnen de 500ms.

Om een derde (onbekende) stukje in het speelveld gebruiken ben ik nog niet aan toe gekomen, en daarvoor moet ik zelfs nog een tactiek voor bepalen. De laatste weken is er nauwelijks is van programmeren terecht gekomen, maar verwacht vanaf de komende weken wel meer tijd er voor te hebben.