obavam se, ze php a js nenajdes nic, ale obecne bych hledal line of sight (LOS).
Otazka je, jak moc verne to chces mit a jak moc daleko ma byt videt. Pokud ti staci, rekneme, 7x7 policek, pak celkem neni problem to pocitat v realnem case, na vetsi vzdalenosti uz bych se toho asi bal. Nejakou dobu zpatky jsem resil pohyb po mape (rovne a uhlopricne) pomoci A* a uz par desitek kroku se pocitalo osklive dlouho (tj. neslo by pouzit v realnem case).
Ale zpet k viditelnosti. Rekneme ze mame nasledujici situaci:
X - nepruchodene
O - pruchodne
F - figurka
? - neviditelne
X X X X O O O
X X X X O O O
F O O O O O O
X X X X O O O
X X X X O O O
X X X X O O O
X X X X X X X
Idealni by bylo modelovat viditelnost od pozice figurky pod uhlem, ktery jse z obou stran omezeny, coz ovsem asi nebude sranda. vysledek by pak mel vypadat asi takhle:
? ? ? ? ? ? ?
X X X X ? ? O
F O O O O O O
X X X X ? ? O
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
Jednodussi varianta je sirit viditelnost nejak trivialne a ne zcela presne. Treba 4 smery od F, pricemz se vzdy posuneme o jedno policko danym smerem, zkusime jestli je to na jeden i druhe strane pruchodne a pokud ano, tak se posunujeme i z techto policek. Vysledek by mel vypadat takhle:
? ? ? ? ? O O
X X X X O O O
F O O O O O O
X X X X O O O
? ? ? ? ? O O
? ? ? ? ? ? O
? ? ? ? ? ? ?
Prvni varianta je spis matematicky problem (a zkusil bych se na reseni optat matematiku), druha varianta je celkem jednoducha iterace.
(mimochodem, treba je treba jedna z tech obecnych veci, na ktere by mohl byt ten snipet repository, o kterem jsem mluvil :) )