среда, 9 мая 2012 г.

FiguresWars - абсолютно серьёзный обзор.

Думаю, этим всё сказано =)

FiguresWars - близко к минимуму

За два дня я пересилил свою лень и смог много чего сделать. Плюс ещё немного было сделано на выходных.
Индексация юнитов
Теперь к юнитам можно обращаться по идентификатору - это порядковый номер юнита, как он был создан. Для каждого типа юнита и игрока своя индексация. Она начинается с нуля. Команды такого типа имеют букву n в конце, например:
moven warrior 1 1
Задаёт передвижение война с номером 1 в направление 1. Теперь к координатам можно не прибегать вообще.
Условия
Добавлены новые условия: такие как проверка hp, проверка существует ли следующая клетка в заданном направлении  , и проверка существует (или если он раньше был - то жив ли) юнит. Синтаксис каждой прописывать сейчас не буду, поскольку в ближайшее время буду составлять полный список команд.
Внешние изменения
Теперь юниты перемешаются плавно, а не скочками, как раньше. Добавил отображения древа технологий. А так же иконки технологий к юнитам: нажав на юнита можно понять - исследована технология, связанная с ним или нет.
И небольшой обзорчик
Поскольку изменения по большей части внешние, то записал видео.
 

суббота, 5 мая 2012 г.

FigureaWars - немного доработанное окно статистики

Сделал так, чтобы можно было наблюдать за конкретным игроком. И немного переделал масштабирование (теперь оно подстраивается по выбранные данные). А так же запретил масштабирование окна статистики.


четверг, 3 мая 2012 г.

FiguresWars - первая победа

Первая официальная победа в FW. Ура!
Плюс комментарии по ходу, что творится на экране (чтобы было не слишком скучно смотреть).

FiguresWars - продвижение вперёд.

Краткий обзор нововведений
 Были добавлены новые юниты: исследовательский центр(а вместе с ним и древо технологий) и лучники. Для записи команд теперь можно использовать блоки, рекурсию и условные переходы. Так же появилась графическое отображение статистики юнитов.

Юниты 
  • Исследовательский центр - как видно из названия в нём можно изучать новые технологии. Пока из всего три. И следовательский центр может у игрока всего один. Жизни: 20.
  • Лучники - новый юнит, который может атаковать на расстояние до трёх клеток (по прямой). Для того, чтобы его можно было производить необходимо первое исследование из ветви атаки. Жизни: 15, Атака: 5, Радиус атаки: 3.
Команды для лучника(особые):
rattack x y d r - атаковать юниту с координатами x y в направление d, на расстояние r
marcher x y - запомнить лучника с координатами x y 
marmove  d - запомненный лучник идёт в направлении d
marattck d r - запомненный лучник атакую в направлении d на расстояние r
Древо технологий
Пока древо технологий представляет из себя корень и двух потомков (названия пока что рабочие):
  • Основное исследование - добавляет 1 к атаке и 2 к жизни войнам
  • Первая технология атаки - позволяет строить лучников
  • Первая технология защиты - добавляет 1 к атаке и 5 к жизни башен
 Чтобы исследовать технологию атаки или защиты надо сперва исследовать основную технологию.
 Команды
Блоки
Введены операторы block, которые по сути своей составляют процедуры языка FW. Каждому блоку при задании присваивается номер. И затем с помощью команды callblock блок может быть вызван. Так же есть команда multi_callblock, которая вызывает указанный блок указанно число раз.
Расположение блока в программе - любое, однако два блока не могут пресекается. При этом возможно рекурсия - в блоке можно вызывать этот блок. 
Синтаксис:
block N {
...
}
callblock N
multi_callblock N M
N - номер блока, M - натуральное число, сколько раз надо вызывать блок.
Пример:
block 2 {
mbcreate 2
mwarrior 2 1
mfor 10 warrior move 1
}
callblock 2 
block 2 - это номер блока, затем идёт пробел и открывающая скобка, когда блок заканчивается идёт закрывающая скобка. Команда callblock 2 вызывает второй блок.

Условия
Условия есть двух типов if и negif. Первое - срабатывает. когда условие истинно, второе - ложно.
Синтаксис:
 if <условие> {
...
};
Аналогично negif.
Возможные условия:
  1. cellempty x y - условие истинно, если клетка с координатами x y пуста
  2. mcellempty type d - условие истинно, если клетка в направлении d от запомнено юнита типа type пуста(про типы напишу ниже)
  3. cellenemy x y - условие истинно, если на клетке с координатами x y стоит враг
  4. mcellenemy type d - условие истинно, если на клетке в направлении d от запомненного юнита типа type стоит враг.
  5. makestep x y - условие истинно, если юнит с координатами x y может сделать шаг
  6. mmakestep type - условие истинно, если запомненный юнит типа type может сделать шаг 
Используя условия и блоки можно уже сделать какую-никакую тактику, без привязке к карте, вот например:
block 1 {
mwarmove 1
negif mcellenemy warrior 1 {
callblock 1
};
}
Данный код делает следующее: запомненный войн идёт по прямой в вправлении 1, пока не встретит врага.
Циклы
Не помню - писал о них или нет, но напишу. Фактически цикл можно организовать следующими способами:  используя multi_callblock и используя рекурсию, однако до того, как их сделать я ввёл два двух оператора цикла. Они задают делают юниту действие некоторое число раз.
for n x y command
mfor n type command
Первый - говорит юниту с координатами x y выполнять команду n раз, второй - запомненому юниту типа type.
Возможные команды:
  1. move d - передвигаться в направлении d
  2. build t d - построить юнита типа t в направлении d
  3. basecreate t - если юнит в цикл - база, он производит юниты типа t
  4. attack d - атаковать в направлении d
  5. rattack d r - атаковать в направлении d на расстояние r
Пример:
for 5 3 2 move 2
mfor 10 warrior move 1
Первый цикл говорит юниту в клетке (3,2) 5 раз пойти в направлении 2, второй говорит запомненному войну пройти 10 раз в направлении 1.

Типы юнитов
В тех местах, где я указываю type нужно писать номер юнита, где t - код типа юнита, вот их список:
0 - worker - Рабочий
1 - base - База
2 - warrior - Войн
3 - tower - Башня
4 - rschcenter - Исследовательский центр
5 - archer - лучник

Графическая статистика
Отображает количество юнитов у игроков на том или ином ходе. По оси абсцисс отображается номер шага, по оси ординат - количество юнитов, график масштабируется автоматически, внизу можно включить/отключить учитываемых юнитов. Идея пришла сегодня, когда играл в Героев и пожалел, то там такого нет.

 Планы на ближайшее время
Доработать сеттинг, добавить модельки. Сделать возможно получить информацию о последнем созданном юните, добавить условий и ресурс - очки исследований, доработать уже имеющиеся вещи.