egy hazafi Creative Commons License 2023.08.24 0 0 9003

Kedves szakértők!

 

Szeretném tőletek megtudni, hogy ha van egy ilyen alakú térképem:

var terkep: array [0..8,0..8] of byte=(
(0,0,0,1,0,0,0,0,0),
(0,2,0,1,0,0,3,0,3),
(0,0,1,1,1,0,0,0,0),
(0,3,1,0,1,0,3,0,0),
(0,0,1,0,1,0,0,3,0),
(0,0,1,1,1,0,3,0,0),
(0,3,0,0,0,3,0,3,0),
(0,0,0,1,0,0,0,0,0),
(0,0,0,1,0,0,0,0,0)
);

amelyen az 1-es szám a mellékelt képen látható akadályt (vízcsempe) mutatja, akkor a rendes, ennek alapján létrehozott nagy képen mozgó objektum aktuális koordinátái alapján hogyan tudható meg, hogy az éppen az 1-es csempén van-e vagy sem?

Most ezzel a kóddarabbal számítom az elhelyezkedést a terkep-en (a mostterkep-be betöltve), de ez nem jó, mert csak nagyjából adja a helyes koordinátát, és részben belemegy a vízcsempékbe, mintha azok jobbra és lefelé el lennének tolva egy kicsit:

function utkvizzel(xh: integer; yh: integer): boolean;
var ktxh,ktyh: integer;
begin
if xh<(palyakep.width / tkszel) then ktxh:=0 else
begin
ktxh:=round(xh / (palyakep.width / tkszel));
//if ktxh>=1 then ktxh:=ktxh-1;
end;
if yh<(palyakep.height / tkmag) then ktyh:=0 else
begin
ktyh:=round(yh / (palyakep.height / tkmag));
//if ktyh>=1 then ktyh:=ktyh-1;
end;
if mostterkep[ktyh,ktxh]=1 then utkvizzel:=true else utkvizzel:=false;
end;

Próbálkoztam a round-on kívül ceil-lel, floor-ral, trunc-cal, de csak rontottam a helyzeten. A round a legpontosabb ezek közül, de még ez sem eléggé.

Tehát ahol a képen látható a sárga kör, az az 1 és 2 YX koordináta kellene legyen a terkep-en (0-tól indul ugyebár). De ha azt round-dal kerekítem, akkor 2-2 lesz az Y koord és X koord, amint a legfelső kiírás is mutatja.

Szóval nem tudom belőni a megfelelő helyet neki és már semmi ötletem sincs hozzá.