В Lua (Codea на iPad) я сделал программу, в которой есть четыре пары координат XY, и они помещены в таблицы под одним и тем же идентификатором (count = count + 1). Когда я впервые протестировал код, используя только одну пару, чтобы определить, когда координаты XY касаются одной из координат в таблице (где координаты уже были). Я сделал это, используя этот фрагмент кода:
if (math.abs(xposplayer - posx) < 10) and (math.abs(yposplayer - posy) < 10) and id < (count - 10) then
Этот фрагмент кода воспроизводится в этом цикле:
for id,posx in pairs(tableposx) do
posy = tableposy[id]
Это сработало так, как я хочу!
Но теперь у меня есть 8 таблиц (tableposx1 tableposy1, ...). И я хотел бы проверить, касаются ли какие-либо текущие координаты каких-либо координат в любой из таблиц (когда-либо), поэтому я попытался:
for id,posx1 in pairs(tableposx1) do
posy1 = tableposy1[id]
posy2 = tableposy2[id]
posx2 = tableposx2[id]
posy3 = tableposy3[id]
posx3 = tableposx3[id]
posy4 = tableposy4[id]
posx4 = tableposx4[id]
И этот бит четыре раза (для четырех текущих координат)
if ((math.abs(xposplayer1 - posx1) < 10) and (math.abs(yposplayer1 - posy1) < 10))
or ((math.abs(xposplayer1 - posx2) < 10) and (math.abs(yposplayer1 - posy2) < 10))
or ((math.abs(xposplayer1 - posx3) < 10) and (math.abs(yposplayer1 - posy3) < 10))
or ((math.abs(xposplayer1 - posx4) < 10) and (math.abs(yposplayer1 - posy4) < 10))
and (id < (count - 10))
Но это всегда (почти) сбывается. И поскольку иногда значения в таблице равны NIL, это выдает мне ошибку, говорящую, что не может сравнить что-то с нулевым значением.
Заранее спасибо, Лоран