Суббота, 23 Ноября 2024, 12:03

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Решаем задачи по Construct Classic [вопрос-ответ]
VickaДата: Пятница, 12 Сентября 2014, 14:57 | Сообщение # 2541
Another ART
Сейчас нет на сайте
Anthem, наверное так


Nick_RimerДата: Пятница, 12 Сентября 2014, 15:00 | Сообщение # 2542
заслуженный участник
Сейчас нет на сайте
Anthem,
в System есть событие For each object и For each object (ordered). В первом случае событием будут пройдены все объекты указанного типа (порядок может быть внезапным). Во втором случае ты устанавливаешь правило для порядка обхода и направление (по возрастанию или убыванию).
У меня сейчас нет времени писать тебе код, мне нужно срочно уйти к врачу. Попробуй сам потеребить эти свойства. Если ничего не выйдет, я вечером (после 22 Мск) могу помочь.


- Доброе утро, Агент Пи!

Сообщение отредактировал Nick_Rimer - Пятница, 12 Сентября 2014, 15:01
AnthemДата: Пятница, 12 Сентября 2014, 17:37 | Сообщение # 2543
Д'Артаньян
Сейчас нет на сайте
Neia, спасибо, видимо, для моего случая этого не достаточно.
Nick_Rimer, я наверно слишком сложную систему хочу сделать, поэтому получается не все. Могу предложить тебе следующую задачу: топ-даун игра, есть фермы, дороги и поля. Все 64х64. Фермы ставятся у дорог, каждый сезон ферма закладывает одно поле в одной из 8 клеток вокруг себя, при условии, что там нет другого поля и дороги (долго с этим возился, но получилось:). У каждой фермы есть переменная, содержащая кол-во полей, максимум 4. Если она меньше, в начале каждого сезона каждая ферма должна заложить по одному полю и успокоиться:) Для этого введена переменная "заложено ли поле", которая обнуляется в начале каждого сезона. Теперь мне надо сделать проверку, чтобы когда эта переменная у каждого поля равняется единице, процесс закладывания полей прекращался и можно было переходить к следующему этапу. Буду признателен за помощь в налаживании этого механизма


Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
AccceДата: Пятница, 12 Сентября 2014, 18:25 | Сообщение # 2544
участник
Сейчас нет на сайте
Anthem, попробуй использовать For Each Object(отдельно для каждого объекта) Он находится в условиях системы в разделе Loops.

Добавлено (12.09.2014, 18:25)
---------------------------------------------
У меня очень странная ерунда, сделал персонажа в костной анимации и дал ему в руки меч через олвейс, который не является частью анимационного скелета. При движении меч отстает от руки angry не знаю почему....Он как бы едет за рукой а не сидит в ней...
Nick_Rimer, там есть карандашек в менюшке где управление менять, копируешь например Move Left и вставляешь в новое действие допустим для второго игрока. Закрываешь. Потом опять открываешь и меняешь так же остальное по одному)))


Сообщение отредактировал Accce - Пятница, 12 Сентября 2014, 18:28
Nick_RimerДата: Пятница, 12 Сентября 2014, 23:12 | Сообщение # 2545
заслуженный участник
Сейчас нет на сайте
Anthem,
Так, я спросить забыл, тебя интересует С2 или СС?
Буду дома через минут 40, попробую замутить пример.

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

Добавлено (12.09.2014, 23:12)
---------------------------------------------
Anthem,
Я решил твою задачу. По крайней мере, я надеюсь, что я её решил так, как ты хотел.

В исходнике 4 переключателя в виде треугольников. Одна из вершин отмечена жирной точкой. В начале уровня все выключатели перемешаны в одном из четырёх положений (0, 90, 180, 270 и 360 градусов).
Требуется поставить все выключатели в положение, когда точка находится вверху. Как только это условие будет выполнено, ты получишь соответствующее сообщение.

В общем, это вроде практически твоя задача. Только вместо переключателей у тебя поля, и они не вращаются, а чё-то для меня непонятное делают biggrin не суть. Главное, что у меня идёт проверка по углу, а у тебя будет идти проверка по значению переменной. Соответственно, моё условие, что все треугольники стоят правильно, это аналогия твоему состоянию, что все поля имеют по единице. Надеюсь, я правильно всё понял.
Моя проверка проста и заключается в том, что выключатель в верном положении прибавляет к глобальной переменной 1. Соответственно, когда глобальная переменная будет равна количеству выключателей - все находятся в верном положении.

Вот исходник: скачать
Версия актуальна для CC r2
Срок хранения файла 30 дней

P.S. Если что-то не так, я переделать могу. Там внутри есть небольшие комментарии. Но по любым вопросам обращайся, если что happy


- Доброе утро, Агент Пи!
AnthemДата: Суббота, 13 Сентября 2014, 00:47 | Сообщение # 2546
Д'Артаньян
Сейчас нет на сайте
Nick_Rimer, чето у меня с констрактом, последнее время всегда пишет, что файл был создан в более новой версии, хотя я обычно знаю, что это не так...

Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
SanchesДата: Суббота, 13 Сентября 2014, 11:00 | Сообщение # 2547
участник
Сейчас нет на сайте
Ты уверен?
Nick_RimerДата: Суббота, 13 Сентября 2014, 12:49 | Сообщение # 2548
заслуженный участник
Сейчас нет на сайте
Anthem,
Заново перенабрал исходник (благо, что он небольшой) для твоей версии СС.
Взять можно тут: скачать
Исходник сделан в СС r1.2
Время хранения файла 30 дней


- Доброе утро, Агент Пи!
AnthemДата: Суббота, 13 Сентября 2014, 15:33 | Сообщение # 2549
Д'Артаньян
Сейчас нет на сайте
Nick_Rimer, спасибо за пример. Вопросы такие:
В чем преимущество использования функций вместо переменных? И есть ли разница между for each object как отдельном под-событии и одним из условий?


Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
Nick_RimerДата: Суббота, 13 Сентября 2014, 16:48 | Сообщение # 2550
заслуженный участник
Сейчас нет на сайте
Anthem,
Функций вместо переменных?!
Что-то я не понимаю смысла вопроса, ведь переменная и функция - это совершенно разные вещи.
А фразу
Цитата
есть ли разница между for each object как отдельном под-событии и одним из условий
я что-то не понял совсем.

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

А преимущество использования функций видно там, где выполняется какая-то однотипная работа. Функция позволяет написать код только однажды вместо многократного его написания. Из разных мест программы можно вызвать функцию и тем самым отработать содержащийся в ней код. В функцию можно передавать различные параметры, с которыми она может работать внутри кода. В конце выполнения функция возвращает определённые параметры, если это от неё требовалось, и передаёт их в место, откуда была вызвана. Функция может также и ничего не возвращать (аналог процедур в ЯП Паскаль).
В случае кода, который я тебе написал, в мои функции ничего не передаётся, и они ничего не возвращают, я сделал их просто для уменьшения писанины, меньше строк - понятнее и удобнее код. Сам можешь заметить, что я одни и те же функции вызывают в нескольких разных местах. Не используй я функции, пришлось бы писать каждый раз этот код в том месте, где я захотел бы их вызвать.

Последний вопрос мне труден для понимания.. вообще For each object работает, как обычный цикл FOR в каком-нибудь ЯП (если тебе известен хоть один). В этом условии порядок выбора нам не важен, он определяется программой автоматически.
У нас есть несколько объектов, по которым мы начинаем "бегать". Нашли первый - выполнили все подсобытия, находящиеся внутри For each object, при этом происходит работа с конкретным, выбранным в данный момент объектом. Нашли следующий - ещё раз выполнили все условия уже для нового объекта. И так далее, пока не будут пройдены и обработаны все объекты. Только после этого будут выполняться какие-то условия, следующие за For each object.

Я смог ответить на все вопросы, или что-то осталось не ясно? Попробуй сформулировать вопрос несколько по-другому, если что-то не так. Если совсем не понятно, напиши в личку, можем связаться по скайпу, например, объяснить словами будет попроще, чем писать много буков biggrin

Добавлено (13.09.2014, 16:48)
---------------------------------------------
Как пример функции, которая возвращает значение, можно привести, допустим, сложение двух чисел.
Функция выдает простой результат: Result = a + b;
Везде в программе, где нужно сложить два числа, мы будем вызывать функцию, передавать в неё какое-то a, какое-то b, а получать в ответ их сумму.

Пример чуть более сложной функции. Пусть функция выполняет одно из четырёх действий: сложение, вычитание, умножение, деление.
Передавать в функцию мы будем три параметра: число a, число b и числовой параметр operation - переменная, которая будет иметь значение от 1 до 4, что означает одну из операций.
После чего мы вызываем функцию, которая будет проверять, например:
Если operation = 1, то Result = a + b;
Иначе если operation = 2, то Result = a - b;
Иначе если operation = 3, то Result = a * b;
Иначе ели operation = 4, то Result = a / b;
А на выходе мы получаем интересующий нас результат


- Доброе утро, Агент Пи!
AnthemДата: Суббота, 13 Сентября 2014, 18:09 | Сообщение # 2551
Д'Артаньян
Сейчас нет на сайте
Nick_Rimer, спасибо за обширный ликбез. Пользуясь случаем, еще один вопрос:
У меня есть 10 иконок, значков. Можно ли заставить их появляться по одной пока другие невидимы в зависимости от разных значений одной переменной, не создавая 10 событий?


Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
Nick_RimerДата: Суббота, 13 Сентября 2014, 18:41 | Сообщение # 2552
заслуженный участник
Сейчас нет на сайте
Anthem,
Не уверен, что до конца понял тебя, но сделал вот так: скачать
Пойдёт?

Исходник сделан на СС r1.2
Срок хранения файла 30 дней


- Доброе утро, Агент Пи!
AnthemДата: Суббота, 13 Сентября 2014, 19:26 | Сообщение # 2553
Д'Артаньян
Сейчас нет на сайте
Nick_Rimer, если непонятно, я могу уточнить, если конечно тебе просто не в кайф примеры создавать:)
Замысел такой: допустим на экране 10 спрайтов в виде чисел от 1 до 10, все они невидимы, игрок нажимает пробел и появляется число 1, нажимает пробел - появляется число 2, единица гаснет, и так далее. У меня есть переменная "число", увеличивающаяся при нажатии на пробел, в зависимости от нее, одна из цифр становится видимой, другие нет. Это требует 10 событий. Можно сократить? Например, если частная переменная одного из спрайта семьи "цифры" равна глобальной переменной "число", сделать соответствующий спрайт видимым


Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
Nick_RimerДата: Суббота, 13 Сентября 2014, 20:20 | Сообщение # 2554
заслуженный участник
Сейчас нет на сайте
Anthem,
Ну мне это даже нравится при условии достаточного владения временем smile
Вот тебе ещё исходник. Надеюсь, теперь это то, что надо happy

СКАЧАТЬ
Исходник сделан на СС r1.2
Срок хранения файла 30 дней


- Доброе утро, Агент Пи!
AnthemДата: Суббота, 13 Сентября 2014, 22:38 | Сообщение # 2555
Д'Артаньян
Сейчас нет на сайте
Nick_Rimer, можешь расшифровать четвертую строчку?

Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
Nick_RimerДата: Суббота, 13 Сентября 2014, 22:52 | Сообщение # 2556
заслуженный участник
Сейчас нет на сайте
Anthem,
Ну почти дословно звучит так: "выбрать объект, удовлетворяющий выражению".
Я выбираю тот number, который удовлетворяет условию, что его номер кадра анимации равен количеству таких объектов на сцене, т.е. в данном примере = 3.
Таким образом я хочу скрыть его, когда сбрасываю Num в 1 (там ведь до бесконечности можно жать пробел). Если бы этой строки не было, то номер 3 не скрывался бы, как остальные.

Такую проверку надо делать, сколько бы ни было таких объектов, чтобы скрыть последний, только в том случае, если будет возвращение Num на 1 (строка 3). Иначе, это можно не делать.
Убери строки 3 и 4, и тогда можно будет пройти от начала до конца 1 раз.


- Доброе утро, Агент Пи!

Сообщение отредактировал Nick_Rimer - Воскресенье, 14 Сентября 2014, 00:26
Serega-AДата: Четверг, 25 Сентября 2014, 17:59 | Сообщение # 2557
почетный гость
Сейчас нет на сайте
Всем привет! Подскажите как реализовать движение объекта. Есть объект (мяч), к нему прикручена "физика". И как сделать так, чтобы при клике мышью, (в любое место на лайоте), мячик летел именно туда, где курсор. Буду очень признателен и с меня +. Использую Констракт 2.

Мои поделки
VickaДата: Четверг, 25 Сентября 2014, 20:25 | Сообщение # 2558
Another ART
Сейчас нет на сайте
Serega-A, не совсем уверена что поняла... может так? happy

Serega-AДата: Понедельник, 29 Сентября 2014, 06:17 | Сообщение # 2559
почетный гость
Сейчас нет на сайте
Цитата Neia ()
не совсем уверена что поняла... может так?
Блин, моя версия Констракта не подходит. Требует обновить. Через Стим не получается.

Добавлено (29.09.2014, 06:17)
---------------------------------------------

Цитата Serega-A ()
не совсем уверена что поняла... может так?
Блин, моя версия Констракта не подходит. Требует обновить. Через Стим не получается.

PS. Обновилась прога. Спасибо - именно то, что нужно! С меня +


Мои поделки
Nick_RimerДата: Понедельник, 29 Сентября 2014, 08:23 | Сообщение # 2560
заслуженный участник
Сейчас нет на сайте
Serega-A,


- Доброе утро, Агент Пи!

Сообщение отредактировал Nick_Rimer - Понедельник, 29 Сентября 2014, 08:23
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг