Как сделать старую добрую Battle Tank, часть 1 (меню) part1

mov ax 10h:
Сегодня я решил создать урок, в котором я буду рассказывать, как создать игру «Танчики», да-да тот самый хит моей далекой молодости. Зачем все это? В уроке будет продемонстрировано много полезностей, например:
1)создание простого линейного меню,
2)сохранение и загрузка карт из файлов и многое другое.
3)Также сделаем такую полезную фишку как редактор уровней.
Надеюсь, это кто-нибудь будет читать и кому-нибудь это пригодится. Забегая вперед, скажу, что я уже написал часть статьи и понял, что сильно разжевываю. Поэтому я не буду писать сильно подробно, надеясь, что читатель уже знаком с Eventam-и и Action-ами. Перед тем как приступать скажу еще, что я использовал версию Construct'а 0.99.9.

Меню
Сразу же идем в Project меняем название слоя на menu и устанавливаем размеры окна в Aplication. Я выбрал 770*672, вы можете поставить другое. Далее накидываем спрайты-меню на форму. Для слоя menu у меня получилось 4 спрайта – «Battle city»,
«Play
creat map
exit»,
«нижняя надпись»
и «танчик»-он же будет курсором.
Не забываем сразу же переименовывать спрайты, что бы в дальнейшем не запутаться. Что бы выровнять спрайты по центру клацаем ПКМ на спрайте и выполняем действия как на картинке. При этом необходимо поставить в редакторе изображений «хотспот» в левую часть спрайта. Это делается так: открываем спрайт в редакторе нажимаем на кнопку установки «хотспот», затем жмем на клаве цифру «4», точка автоматически переместится в левую среднюю часть спрайта.
Итак внешний вид меню готов:
давайте наполним его функциональностью, чтобы управлять танчиком-курсором нам понадобится объект «Keyboard&Mouse». Данный объект, как и часть других не визуальный, т.е его нельзя потягать по форме, та и зачем? Он просто будет тихо ждать своей очереди в «инспекторе объектов», как и другие объекты.
Теперь давайте заставим перемещаться наш курсор-танчик по нажатию на стрелки «вверх\вниз», для этого идем в редактор событий, щелкаем ПКМ, выбираем «Insert Event», далее
Keyboard&mouse->On key pressed->Up Arrow
Этими действиями мы создали Event, «при нажатии на клавишу «вверх»», будет выполняться некое действие. В нашем случае это действие курсора, который должен будет прыгнуть на один пункт меню вверх. Другими словами мы просто должны поменять координату Y объекта курсор("Cursor") на -45 пикселей для клавиши "вверх" и 45 пикселей для клавиши "вниз". Давайте создадим эти действия:
Теперь можно запустить проект и насладиться нашим почти законченным меню, при запуски видно, что курсор прыгает выше и ниже нашего меню, что есть плохо. Давайте сделаем некое условие при котором даже после нажатия клавиш, курсор не убегал за пределы меню. Я делаю это через переменную, т.к. с её помощью мы убиваем сразу 2х зайцев, но об этом позже.
Итак идем в проект и создаем новую переменную. Не долго думаем назовем ее menu:
Project->GlobalVar->add
Присвоим ей начальное значение 1.
1й заяц-для того чтобы знать на каком пункте меню мы находимся, мы и создали эту переменную. Она должна принимать значения от 1 до 3 (у нас 3 пункта меню). В дальнейшем когда мы захотим зайти в пункт меню, по нажатию клавиши «Энтер», эта переменная сообщит нам на каком же мы пункте меню мы стоим. Так вот, когда мы нажимаем клавиши вверх или вниз эта переменная должна либо увеличиваться, либо уменьшаться на 1. Давайте сделаем это:
new action->System->add to value->"menu" "-1"
Тоже самое проделываем и для кнопки "вниз":
new action->System->add to value->"menu" "1"
Ок, теперь нужно сделать так, чтобы курсор не убегал, опять же для этого воспользуемся значением нашей переменной (2й заяц), создадим условие вида: если значение переменной >1, а мы жмем клавишу вверх, то наш курсор должен оставаться на месте и некуда не прыгать, давайте реализуем это. Создаём новый Event
System->Compare global var->"menu" "Greater that" "1"
и
System->Compare global var->"menu" "Less that" "3"
Осталось лишь перетащить событие нажатия клавиш, под нужные условия, это означает, что нижнее условие будет выполнено лишь тогда, когда будет выполнено верхнее:
Все готово! Запускаем наслаждаемся. Меню почти готово, теперь по нажатию на "Enter", необходимо выполнять некие действия меню. Начнем с конца. Добавляем Event "Нажатие клавиши "Enter"", добавляем 3 Event-а проверки глобальной переменной и к каждому по одному Action-у.
Если "manu"=3,то System->close
Если "manu"=2,то System->go to layout "create"
Если "manu"=1,то System->go to layout "game"
Перед этим я создал еще 2 слоя "create" и "game"
Напоследок я делаю выход из приложения по "Esc", на моя взгляд это очень удобно.
Конечный вариант выглядит так:
ЗЫ следующая часть будет посвящена редактору уровней.