Продолжение. Начало см. в N1.
-== ШАБЛОННЫЕ МЫСЛИ ==-
На заре создания видеоигр программисты
сталкивались c серьезными проблемами, про-
буя нанести точки на экран. Они радовались
по поводу удачной имитации тактики боя и
написания набора алгоритмов, управляющих
существами. Они думали, что могут umutupo-
вать разум c помощью шаблонов, т. е. опи-
cывая радом цифр траектории перемещения. К
примеру, в игре Galaxians маленькие kocmu-
ческие корабли делают несколько кругов,
стреляют в вас некоторое время и вoзвpа-
щаютcя на свое прежнее место.
Когда они выполняют эти движения, то
всеголишь следуют командам, заранее напи-
cанных шаблонов.
Конструирование шаблонов - давольно
легкое занятие и они нашли использование
во многих сценариях. Все это может пока-
заться намного сложнее преследования и ук-
лoнения, но только на первый взгляд. Проще
говоря:
√ Случайным образом выбираем некоторый
шаблон;
√ Движение созданий в каждом проходе
цикла изменяется в соответствии c hanpab-
лением, указанным в шаблоне;
√ Переходим к cледуюшщему элементу шаб-
лона. Каждый шаблон может состоять из
произвольного числа элементов.
Важно одно - когда иcчеpпаетcя набор
команд, задаваемый шаблоном - переходим к
другому.
Для демонстрации использования шаблонов
я написал аналог c pc-шного Си на родной
spectrum-Бейсик.
Враг приближается к игроку, в зависи-
мости от растояния, либо просто пpеcле-
дует, либо выбирает перемещение по шаблo-
ну.
Листинг 1(Муха):
1 LET px=100: LET py=100: LET ex=2: LET
ey=2: LET dp=0: DIM x (3, 20): DIM y(3,
20): REM dp-флаг выполнения шаблона
2 FOR f=1 ТО 3: FOR g=1 ТО 20 : READ
x(f, g): NEXT g: NEXT f
3 FOR f=1 ТО 3: FOR g=1 ТО 20 : READ
y(f, g): NEXT g: NEXT f
4 LET e1=ex: LET e2=ey: LET e 3=px: LET
e4=py
5 BORDER dp
9 REM Перемещение игрока
10 IF INKEY$="q" THEN LET py=py+2
11 IF INKEY$="а" THEN LET py=py-2
12 IF INKEY$="p" THEN LET px=px+2
13 IF INKEY$="o" THEN LET px=px-2
14 IF dp<>0 THEN GO ТО 23: REM Если вы-
пoлняетcя перемещение по Шаблону, обходим
алгоритм Преследования.
15 IF px>ex THEN LET ex=ex+1
16 IF pxey THEN LET ey=ey+1
18 IF py 105 RETURN
9980 REM x- и y-компоненты шаблонов
9990 DATA 1, 1, 1, 1, 1, 2, 2, -1, -2,
-3 , -1, 0, 0, 1, 2, 2, -2, -2, -1, 0, 0,
0, 1, 2 , 3, 4, 5, 4, 3, 2, 1, 3, 3, 3, 3,
2, 1, -2, -2 , -1, 0, -1, -2, -3, -3, -2,
-2, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1
9991 DATA 0, 0, 0, 0,-1,-1, -1, -1, -1,
0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1,
1, 1 , 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 0,
0, 0, 0, 1 , 1, 1, 2, 2, -1, -1, -1, -2,
-2, -1, -1, 0, 0, 0, 1, 1, 1, 1, 1
Когда вы запуcтете сей прог, поймете
почему он называется Муха. Точка пoлзающая
по экрану и в самом деле напоминает муху.
Она приближается к вам и вдруг начинает
летать вокруг. Такое поведение персонажа
воплощено всего в нескоьких строчках прог-
раммы c применением описанного выше алго-
ритма.
Продолжение читайте в следующем номе-
ре.
Other articles: