Алг нач
опустить перо
сместиться на вектор (2, 2)
сместиться на вектор (2, - 2)
Сместиться на вектор (-4, 0)
сместиться на вектор (0, -3)
Сместиться на вектор (4, 0)
Сместиться на вектор (0, 3)
поднять перо
сместиться на вектор (-1, - 1)
опустить перо
сместиться на вектор (-2, 0)
сместиться на вектор (0, - 1)
сместиться на вектор (2, 0)
сместиться на вектор (0, 1)
поднять перо
КОН
Решение
Я бы расставил контрольные маршрутные точки, добавил к ним коллайдеры в виде триггеров. На них накинуть небольшой скрипт, говорящий какое действие нужно сделать, что бы попасть в следующую маршрутную точку(к примеру повернуть налево и продолжать идти). Когда NPC вступает с ним в коллизию(OnTriggerEnter), берет из него необходимые параметры для продолжения движения. Я так себе реализовывал.
Это если линейно и по кругу. А если рандомно передвижение по территории, то все с теми же контрольным точками, только нужно получить их все, выбрать случайную точку и обходом по графу идти до этой точки. Как только достиг, выбрал случайную следующую точку и пошел дальше.
Объяснение:
const n=100;
var ar:array of array of integer;
ars:array of array of string;
i:integer;
procedure complection(var ar:array of array of integer;var ars:array of array of string);
var
i,j:integer;
begin;
for i:=1 to n do
begin;
for j:=1 to n do
begin;
ar[i,j]:=random(9);
str(ar[i,j],ars[i,j]);
end;
end;
end;
procedure burning(ars:array of array of string);
var
i,j:integer;
t:text;
begin;
assign(t,'text.txt');
rewrite(t);
for i:=1 to n do
begin;
writeln(t,' ');
for j:=1 to n do
write(t,ars[i,j],' ');
end;
end;
begin;
randomize;
setlength(ar,n+1);
setlength(ars,n+1);
for i:=1 to n do
begin;
setlength(ar[i],n+1);
setlength(ars[i],n+1);
end;
complection(ar,ars);
burning(ars);
end.