ГлавнаяРегистрацияВход Понедельник
20.11.2017
05:08
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Уроки по СС [13]
Статьи по СС [2]
Документация по СС [4]
Мини-чат
Наш опрос
Нужен ли данный Сайт?
Всего ответов: 404
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
 Обучение 
Главная » Статьи » Construct Classic » Уроки по СС

Создание градостроительной экономической стратегии (Часть 2)
Если вы не читали первую часть, то лучше вам начать с нее.

ЧАСТЬ 2

В этой части мы научимся:

  • Добавим информационное поле, которое будет информировать о том, в каком секторе построена структура, занят ли сектор;
  • Сделаем текстовый эффект постройки с затуханием (Fade);
  • Привяжем отмену строительного режима к ПКМ (Правой кнопке мыши);
  • Добавим эффект динамической прозрачности к иконкам строений.
  • Сделаем, чтоб за постройку зданий отнимались деньги, высчитывался доход и расход от зданий.
  • Добавим локальные переменные к нашим зданиям (количество подобных строений, доход и расход от здания, население, уровень здания).
  • Реализуем возможность выбора здания. После выбора отобразятся данные о здании в информационном окне.


Информационное поле и Fade

Создадим текстовое поле "InfoText”. Здесь будет отображаться различная информация, как: ошибки, описания и тому подобное. Добавим информацию о том, что мы установили здание и информацию, когда только выбрали, какое здание будет строить:


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


Добавим еще одно текстовое поле "ReadyText”. В будущем, оно будет сообщать нам о прогрессе стройки. Но пока оно просто будет сообщать нам о том, что здание построено.

Буквы должны быть маленькими, чтобы не мешать. Я остановился на 12-ой Тахоме, вы можете выбирать, что вашей душе угодно, убийц в мире от этого меньше не станет. Сразу же после создания текста перетащите его на слой выше игрового поля, иначе он не будет отображаться. Сделайте ему
Code
Set Position (round(MouseX/20)*20-20)


и для Y, на том этапе, когда мы вызываем функцию «Building». После этого примените поведение Fade для текста. Галочку Destroy Afterwards нужно обязательно убрать. А также добавить

Quote
Ready Text -> Fade -> Start Fade


, иначе поведение сработает только один раз. В результате у вас получится что-то вроде этого:


2. Отмена строительного режима


Отменять режим строительства можно будет двумя способами — нажатием Escape и правой кнопки мыши. Кому как удобно — не дело разработчика, а возможность игрока. Нужно лишь предоставить возможность, выбор определяет мощь нашей игры, а это очень важный нюанс. Отменить режим строительства — значит сменить режим выделения, то есть изменить значение глобальной переменной SelectionType.

В группе событий Selection сделайте нужные условия:


Нормальные люди делают это при помощи OR, я бы тоже входил в их число, но у меня OR, в некоторых случаях, работает некорректно.

3. Удобство иконок на панели

Теперь сделаем так, чтоб иконки на панели строительства были с динамическим изменением прозрачности. Для этого установим им начальное значение Opacity: «60%». В группе событий Building добавим нужные события:


4. Деньги


Добавим текст для отображения нашей денежной суммы. Назовем его MoneyText. После этого добавим нашу глобальную переменную Money, которая, очевидно, будет отвечать за количество наших средств. Создадим группу событий «MoneyGroup».
Также, было бы неплохо, если бы в начале игры нам давалось 100 монет.

Сделать это просто:
Quote
Условие: Start of layout. Действие: System: Set global variable ‘Money’ to 100.


Теперь сделаем так, чтоб текстовое поле постоянно обновлялось и показывало значение переменной ‘Money’. Десять раз в секунду мы будем добавлять по 0.1 к переменной ‘Money’.

В результате у нас получится следующее:


Я специально не стал добавлять по монете каждую секунду, так как в расчетах еще будут принимать участие доход и расход от зданий.

Теперь сделаем так, чтоб за постройку зданий отнимались деньги. Я пока не буду делать проверок на положительный денежный баланс, так как пока еще не время.
В функции Building добавьте для каждого из зданий вычитание денег за постройку:


5. Доход/Расход


Зайдите в панель семьи. Там нам нужно добавить локальные переменные для семьи Structures:


  • Profit — доход от здания
  • Extense — расход от него.
  • Level — уровень здания


Добавьте к существующим зданиям значения для этих переменных. Уровень можете пока не трогать, эту переменную мы рассмотрим в следующей части.
Я распределил так, что дом и лес несут доход, а дорога — расход.

Теперь добавьте две глобальные переменные: Profit и Extense. Они будут составлять сумму всего дохода и расхода со всех построек.
Еще нужно изменить MoneyText, чтоб в нем отображались и доход с расходом:

Quote
«Деньги: » & round(global('Money')) & newline & «Доход: » & global('Profit') & newline & «Расход: » & global('Extense')


Если вы не знали, newline служит для перехода на новую строку. Я специально не округлил доход и расход, чтоб мы видели точные цифры в том случае, если наши строения имеют значения локальных переменных с дробной частью.

Теперь нам нужно посчитать прибыль от всех зданий каждого типа, учитывая их количество в игре:
Code
struct_forest.Value('Profit')*struct_forest.Count + struct_road.Value('Profit')*struct_road.Count +struct_home1.Value('Profit')*struct_home1.Count


Тоже самое нужно проделать и для расходов (скопировать строку и заменить Profit на Extense). Чтоб прибыль и расход влияли на количество денег, добавим влияние в виде global('Profit') и global('Extense')*-1 на глобальную переменную Money. Должно получиться следующее:

6. Выбор здания. Его характеристики и их отображение в игред


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

Для удобства создадим новую группу событий и назовем ее BuildSelect. Отдельная группа нам понадобится в дальнейшем, когда у каждого здания будут свои индивидуальные настройки (количество работников, население, уровень здания, престиж и тому подобное). Помимо этого нам нужно будет создать еще один текстовый объект для отображения характеристик здания. Я назову его BuildInfo и уменьшу его до 12-ой верданы (это на ваше усмотрение). Сделайте его невидимым по дефолту (Invisible on start).

Дальше, при выборе здания, он будет становиться видимым. Сделайте ему SetText:

Quote
«Информация о постройке: » & newline &
«Сектор: » & int(Structures.X/20) & ":" & int(Structures.Y/20) & newline &
«Количество: » & int (Structures.Count-1) & newline &
«Стоимость: » & int(Structures.Value('Cost')) & newline &
«Доход: » & float(Structures.Value('Profit')) & " (" & float(Structures.Value('Profit')*Structures.Count — Structures.Value('Profit')) & ")" & newline &
«Расход: » & float(Structures.Value('Extense')) & " (" & float(Structures.Value('Extense')*Structures.Count — Structures.Value('Extense')) & ")"


В скобках к доходу и расходу у нас показаны данные по всем зданиям этого типа. Вычитаем сами себя после умножения, потому что у нас имеется один прототип здания еще до его установки. Заметьте, что для дохода и расхода используется float, а не int: это для отображения дробной части.

Небольшая хитрость:
Quote
Редактор не позволяет переходить на новую строку для удобства, но вы можете скопировать переход на новую строку из любого текстового редактора, тем самым повысить удобочитаемость вашего кода. Должно получиться следующее:



Теперь сделаем так, чтоб при выборе здания над ним появлялся особый спрайт выделения:


Этот яркий спрайт не даст нам ошибиться, и мы точно будем знать, какое здание сейчас выделено. Не забудьте переместить его слоем выше, чтоб он был поверх игрового поля:


Теперь мы должны научить игру снимать выделение со здания. Помогут нам все те же Escape и правая кнопка мыши:


На этом вторая часть обучения завершена. Благодарю за внимание.
Исходник, если что-то не вышло, можно скачать [url=http://www.fonline.su/construct/city(2less).zip]отсюда[/url].

Также, вы можете обсудить этот урок на нашем форуме.

Источник: http://construct.gfaq.ru/forum/3-94
Категория: Уроки по СС | Добавил: Krizalis (06.12.2011) | Автор: Krizalis
Просмотров: 3042 | Теги: экономическая стратегия, стратегия, массив, уроки | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вход на сайт
Поиск

thevic.ru © 2017Хостинг от uCoz