Ich gehe mal davon aus, das das Array, was du meinst der Kartenhintergrund ist.
Und wahrscheinlich lässt du die Figur flüssig darauf laufen.
Methode 1:
Du lässt die Figur springen (immer von einer Arraykoordinate zur anderen)

siht aber nicht besonders toll aus.
Methode zwei.
Du weist der Figur immer die Arraykoordinate zu, der sie am nächsten steht.
Das Laufen müsste dann auch abhängig vom Array sein:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| tfigur = record x,y:integer; x1,y1:integer; end;
var figur:tfigur;
Array map[1..40,1..40] of integer;
figur.draw(figur.x*40<span style="font-weight: bold">+figur.x1</span>,figur.y*40<span style="font-weight: bold">+figur.y1</span>); |
Wenn du jetzt die Figur bewegen willst verändrest du nur dir figrux1, x2 Werte. Wenn einer dieser beiden Wert nun die Hälfte der Strecke zwischen zwei Kartenfeldern (im Array) zurückgelegt hat, in diesem Fall x1 = 20 oder x1 = -20, dann verändert sich der x bzw der y Wert.
Beispiel
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Procedure rechts; begin inc(figur.x1); if figur.x1 >= 20 then begin figur.x1 := -20; inc(figur.x); end; end; |
etc....