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

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

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

В первой части мы проделаем следующее:

  • Сделаем игровой плацдарм из массива;
  • Установим два режима выделения: обычный и строительный;
  • Сделаем привязку строительного режима выделения к секторам (сетке);
  • Добавим проверку на доступность постройки в указанном секторе;
  • Научимся работать с семьями и локальными переменными семьи;
  • Добавим панель выбора текущей постройки;
  • Реализуем три постройки: лес, дорогу и дом.
  • Добавим локальные переменные к нашим зданиям (Сектор, прототип и стоимость).

Но сначала подготовительный этап и немного введения, которое должно подготовить мозжечок для дальнейшей плодотворной и, желательно, эффективной работы.

1. Введение

Я три года отдал созданию игр и повидал немало людей, желающих заниматься играми. Основной их проблемой было отсутствие подготовительного этапа и/или каких-либо документов, на которых можно будет опираться во время создания проекта. Постарайтесь избегать подобного и старайтесь хотя бы как-то записывать то, что вы себе представляете в результате. Во время работы у вас будет возникать масса идей. Всегда документируйте их, ведь как говорится: «Никто не запомнит вас за ваши мысли».

Но хватит болтать, пора уже перейти к делу. Для начала поставим задачу: на этом этапе нам нужно будет создать оболочку игры. То есть выбор здания, его постройка, отображение параметров, доход, расход и так далее. Мы должны быть уверены, что сможем продолжать разработку, опираясь на базис нашего функционала.

Для начала создадим папки объектов: это будет сами структуры (здания) и их иконки для покупки.


В папке Structures у нас будут храниться сами здания. Их имена должны начинаться на struct_, в папке Build_icons, соответственно, иконки для меню покупок соответствующих зданий, их названия начинаются с b_icon_.

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


Приступим к следующему пункту.

2. Создание игрового плацдарма

Мы не будем делать изображение по всей длине и ширине нашего игрового поля. Причин у этого масса, главная из которых — отсутствие динамики размерности. Мы будем создавать его массивом.

Сначала добавим спрайт нашего сектора (20х20):

Теперь создаем массив. Назовем его Background. Размеры будут, пускай, 20х20, для начала. В перспективе, мы сможем увеличивать это значение глобальными переменными как нам угодно.
Нам нужно заставить это функционировать. Переходим на вкладку редактирования событий и создаем там группу (Insert Group) с названием Begin. В ней создадим первое условие: Start of layout и к нему саб-условие для массива For each element. К саб-условию добавим действие:
Code
New -> System -> Create object -> Pick an object

Указываем спрайт нашего игрового сектора. В координатах пишем: Background.CurrentX*20 для Х и Background.CurrentY*20 для Y, соответственно. Должно получиться следующее:


Чтоб увидеть созданное массивом поле — запустите игру.

3. Режимы выделения

Ни одна стратегия не может обойтись без Selection (выделения), особенно, если это градостроительный экономический симулятор какой-нибудь. У нас пока будет два режима выделения: обычный и строительный. Второй включает привязку к сетке и активируется при начале строительства какого-либо здания. Позже мы добавим третий режим: когда сектор уже занят каким-либо зданием и четвертый режим: когда здание уже выбрано. Пока что добавим 4 спрайта. Если хотите, для удобства можете поместить их в отдельную папку:

Примечание-совет:
Quote
Название ваших спрайтов, да и любых других объектов, должно быть настолько понятным, что даже дворник дядя Ваня, с жуткого похмелья, понял бы суть предназначения объекта по его названию. Давайте английские названия (не dohod, а profit, car, а не mashina), используйте одинаковое оформление названия (setVisible, getPoint, addRange, а не SetVisible, point_get, ADD_range). Если вы планируете в дальнейшем открывать исходный код своей игры — позаботьтесь об этом, иначе грош-цена вашему плохо оформленному исходнику.


Создадим глобальную переменную SelectionType. Она будет принимать два значения. 0 — режим обычного выделения. 1 — строительный режим. Делаем еще одну группу событий (можно не делать, если вы группофоб), назовем ее "Selection”. Еще, если вы еще этого не сделали, добавьте Mouse & Keyboard, это пригодится нам. Также создайте новый слой и переместите туда спрайты выделения, чтоб они не перекрывались спрайтами секторов.

Алгоритм нашего Selection:
Условие: мышь сейчас над нашим полем.
Саб-условие: Значение переменной SelectionType равняется 0:
Действие: Установить позицию для нашего Selection в MouseX и MouseY.
Как-то так:


Проверили? Работает? Тогда добавим тоже самое, только для режима строительства, только координаты должны быть round(MouseX/20)*20. И тут у нас возникает небольшая загвоздка: эти режимы должны сменяться. То есть, перед тем как переместить выделение, нужно сначала скрыть то выделение, которое было и сделать видимым текущий спрайт выделения:


4. Здания и «Это у нас семейное»

Теперь нужно добавить семью «Structures», куда бы входили наши здания. Причин для этого масса:

  • Новые объекты семьи сразу будут иметь локальные (приватные) переменные семьи;
  • Можно взаимодействовать сразу со всеми членами семьи, что очень помогает нам при работе с исключениями.
  • Объекты поддерживают многосемейность, что является подобием иерархии.


Заходим на один из наших объектов и слева, в Properties, Groups -> Families -> New Family -> Add. Выбираем семью из списка, либо создаем свою. Название семьиОБЯЗАТЕЛЬНО должно быть на английском языке, иначе работа с этой семьей в событиях будет. Определяем семью для других строений.

Примечание-совет:
Quote
Даже если вы заядлый патриот и не снимает свой пионерский галстук со стены около двадцати лет, все равно помните: что Construct — программа иностранная, поэтому все названия должны быть на английском языке, чтоб потом не было сюрпризов и сокрушительных крахов.


Заходим на панель семьи (Project -> Manage Families)
Ищем вкладку Private Variables, ниже и правее есть кнопка Add (если вы вдруг не знали). Жмем ее и добавляем локальные переменные, которые будут использоваться любым членом семьи Structures:

  • Proto — прототип здания (0 – дерево, 1 – дорога, 2 – дом, 3 – магазин и так далее);
  • SectorX — сектор Х (координатаХ/20)
  • SectorY — сектор Y (координатаY/20)
  • Сost — стоимость здания


После чего закрываем панель семьи. И для каждого из ее членов указываем значения этих параметров, ну например, как это сделал я:

Quote
Лес: Proto: 1, Cost: 5
Дорога: Proto: 2, Cost: 10

Дом1: Proto: 3, Cost: 50


SectorX и SectorY мы вручную не устанавливаем. Они будут заполнены при самой установке постройки.

5. Панель строительства и сам билдинг

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

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


Добавим на нее иконки и добавим их в новую семью BuildIcons. Создадим новую группу событий Building. Создадим условие:

Если: левая кнопка мыши нажата на члене семьи BuildIcons, то меняем значение переменной SelectionType на 1, что активирует строительный режим.
Добавим глобальную переменную BuildNum, она будет хранить значение, отвечающее за то, что мы сейчас строим.

Теперь сделаем доступность строения. Оно должно быть саб-условием к строительному режиму, приблизительно вот так:


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


Чтобы установить здание, вернемся к проверке на доступность постройки. Сделаем обратное условие: если сектор свободен и мы жмем левую кнопку мыши то вызываем функцию Building, которая, в зависимости от значения переменной BuildNum будет устанавливать здание в этом секторе:



На этом 5-ый этап завершен. Теперь мы можем выбирать здание и строить его, менять режимы выбора, делать проверку на доступность сектора и что-то еще. Но, дальше больше. Продолжение следует.



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

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