Vidim to na dve moznosti:
- mas podminky spatne, sprav si je
- mrkni, jestli treba neulozis polohu mimo herni desku a podle te nove polohy se nepokousis najit objekty mimo herni desku, cili mimo rozsah pole. Mas treba pole 60x30, a kdyz ti nova poloha vyjde 61,30, tak jsi mimo rozsah, error a kdo vi, co packal/delphi udela.
Pripada mi teda dost zvlastni, ze tam nemas definovanou sirku, vysku hada, top, left polohu herni desky a tyhle udaje vubec nepouzivas pro podminky.
Ja bych si teda udelal spesl funkci, ktera by mi vracela pole se seznam true/false pro zadanou polohu x,y.
* mimo desku, kde a.x a.y b.x b.y, kamen (a je horni levy roh obdelniku, ten je 0+left,0+top; b je spodni pravy roh maxx+left, maxy+top)
* true, false, true, true, false, false - ses mimo desku, prekrocil jsi na a.y a b.x (y je tedy < 0, x je > nez maxx), a nesnedl jsi pritom zadny kamen
Kdyz to budes mit pekne v jedne funkci (v delphi se to mozna oznacuje take procedura), tak to nemusis resit pak na deseti 10 mistech programu.
Mimochodem, nemas tam pouzite if/else, jen if. coz by mohl byt dalsi problem.