Постройка зданий.
В данной статье мы рассмотрим создание симулятора города, в котором мы будем строить здания, зарабатывать деньги и снова строить здания. Итак, приступим.
Для начала нарисуем спрайт простенького дома и создадим два его объекта (рисунок 4.1). Один будет служить в виде кнопки на панели для выбора постройки (назовем его Home1Menu), второй - для размещения нашего здания (назовем его Home1Move), а третий - для получения денег (назовем его Home1).
Создадим объект, назовем его Money, нажимаем Add Event -> Create, переносим кнопку Set Variable в поле Action, в поле variable пишем global.Moneys, а в поле value – 100. Снова переносим кнопку Set Variable в поле Action, в поле variable пишем global.MoneysGet, в поле value – 0. Таким образом, мы создали две переменные, одна будет отвечать за количество денег, а вторая за прибыль, которую мы будет получать по истечению времени.
Теперь нажимаем Add Event -> Draw -> Draw GUI, переносим кнопку Draw Variable в поел Action, в поле variable пишем global.Moneys, а в полях х и у пишем по 10.
Размещаем объект Home1Menu внизу комнаты, закрываем ее и переходим в свойства этого объекта. Нажимаем Add Event -> Mouse -> Left Button, переносим кнопку Create Instance в поле Action, в поле object выбираем Home1Move, нажимаем ОК и переходим в свойства Home1Move. Нажимаем Add Event -> Step -> Step, переносим кнопку Execute Code и в открывшемся окне пишем:
x=mouse_x-c;
y=mouse_y-c;
где с – половина ширины и высоты спрайта дома, т.е. вместо с подставляем нужно число. Теперь в свойствах Home1Move нажимаем Add Event -> Mouse -> Left Button, перетаскиваем кнопку Create Instance в поле Action, выбираем объект Home1, ставим галочку напротив Relative, нажимаем ОК, затем переносим кнопку Set Variable, в поле variable пишем global.Moneys, в поле value пишем -100, ставим галочку напротив Relative, перетаскиваем кнопку Destroy Instance в поле Action, нажимаем ОК. Мы научились создавать здания, перейдем к получению прибыли за нашу постройку.
Она будет получаться по истечению времени, т.е. мы создадим шкалу, которая будет тем самым временем, когда она заполниться, нам дадут прибыль.
Переходим в свойства объекта Home1, нажимаем Add Event -> Create, переносим кнопку Set variable в поле Action, в поле variable пишем global.MoneysGet, в поле value пишем 25 и ставим галочку напротив Relative.
Создадим спрайт, в котором будет анимация, состоящая из 50 кадров, назовем TimeS, создадим объект TimeO, присвоим ему спрайт TimeS. Нажимаем кнопку Add Event -> Create, переносим кнопку Set Health в поле Action, нажимаем ОК. Нажимаем Add Event -> Step -> Step, перетаскиваем кнопку Test Health в поле Action, в поле value пишем 100, нажимаем ОК. Переносим кнопку Start Block в поле Action, затем переносим кнопку Execute Code, в открывшемся окне пишем:
global.Moneys+=global.MoneysGet;
Закрываем окно. Переносим кнопку Set Health, нажимаем ОК, а затем кнопку End Block. Нажимаем Add Event -> Other -> Animation End, переносим кнопку Set Health в поле Action, пишем значение 10, ставим галочку напротив Relative, нажимаем ОК. Теперь выведем наше время на экран, для этого нажимаем Add Event -> Draw -> Draw, перетаскиваем кнопку Draw Health в поле Action и переходим к его редактированию. В полях х1 и у1 пишем 0, в поле х2 пишем 100, а в поле у2 – 30. Теперь мы можем видеть, когда нам поступит прибыль.
Переходим в свойства объекта Money, в условии Draw GUI, редактируем Draw the value, в поле у ставим значение 40.
Переходим в свойства объекта Home1, нажимаем кнопку Change, которая находится под кнопкой Add Event, -> Mouse -> Left Released. Теперь Переносим кнопку Test Variable и Start Block над кнопкой Create Instance, в Test Variable, в поле variable пишем global.Moneys, в поле value пишем 99, меняем equal to на grater then. Закрываем нашу конструкцию кнопкой End Block.
Переходим в свойства объекта Home1Move, нажимаем Add Event -> Mouse -> Right Button, переносим кнопку Destroy Instance в поле Action и нажимаем ОК.
Вот мы и научились создавать здания, таким способом вы можете добавить еще несколько зданий, ну или еще какие-нибудь объекты.
Устранение недочета.
Недочет, который мы устраним, - это строительство зданий друг на друге. Сначала перейдем в свойства объекта Home1, ставим галочку напротив Solid (рисунок 4.2).
Проделываем тоже действие и в свойствах объекта Home1Move. Теперь в свойствах объекта Home1Move нажимаем Add Event -> Collision и выбираем Home1, перетаскиваем кнопку Set Variable в поле Action, в поле variable пишем global.HomMove, в поле value ставим значение 1.
Переходим в условие Step, перетаскиваем кнопку Set Variable над кнопкой Execute Code, в поле variable пишем global.HomMove, в поле value ставим значение 0. Далее перетаскиваем кнопку Test Variable под кнопкой Set Variable, в поле Variable пишем global.HomMove, в поле value ставим значение 0.
Между кнопками Set Variable и Test Variable располагаем кнопку Start Block, т.е. она должна быть над кнопкой Execute Code, а в конце кнопку End Block. Теперь наши здания не будут строиться друг на друге.
Потребление ресурсов.
Давайте введем энергию, которая нужна будет для постройки зданий. Для этого мы создадим спрайт электростанции (рисунок 4.3) и его объект. Принцип постройки объекта сделаем как в первом пункте данной главы пункте (т.е. будет три объекта: AESMenu, AESMove, AES).
Теперь переходим в свойства объекта AES, в условии Create переносим кнопку Set Variable в поле Action, в поел variable пишем global.Electric, а в поле value – 500.
Переходим в свойства объекта Money, переименуем его в Values, и в условии Create переносим кнопку Get Variable, в поле variable пишем global.Electric, а в поле value – 1000. В условии Draw GUI переносим кнопку Draw Variable, в поле variable пишем global.Electric, x=10, y=30.
Переходим в свойства объекта Home1Move, в условии LeftButton переносим кнопку Get Variable в поле Action, в поле variable пишем global.Electric, в поле value пишем -150, ставим галочку напротив Relative.
Теперь введем такую фишку, чтобы если у нас мало энергии, мы как бы покупали ее у соседей, т.е. деньги у нас будут убывать.
В свойствах объекта TimeO, в условии Animation End переносим кнопку Test Variable в поле Action, в поле variable пишем global.Electric, вместо equal ставим less then. Переносим кнопку Start Block и End Block, а между ними Get Variable, в поле variable пишем global.Moneys, а в поле value пишем -100.
Информация о здании.
Чтобы построить здание, нам нужно знать, сколько оно стоит, какую прибыль будет приносить, а также сколько ресурсов нужно будет для его постройки. Для этого нарисуем спрайт, в котором отразим информацию о здании, назовем его InfoHome1S и создадим его объект (рисунок 4.3).
Переходим в свойства объекта Home1Menu, нажимаем Add Event -> Mouse -> Mouse Enter, переносим кнопку Create Instance в поле Action, выбираем объект InfoHome1, в полях х и у пишем такие значения, чтобы онформация была выше, чем кнопка нашего здания и ставим галочку напротив Relative. Теперь снова нажимаем Add Event -> Mouse -> Mouse Leave, переносим кнопку Destroy Instance и в поле Applies To выбираем InfoHome1.
В свойствах объекта InfoHome1, под пунктом, в котором мы выбираем спрайт объекта, есть поле Depth, в нем ставим значение -1. Это нужно, чтобы информация не пряталась за остальными объектами. Теперь можно спокойно проверять наши наработки.
В следующей статье мы рассмотрим создание платформера на мобильные устройства.