Четверг, 14 Ноября 2024, 11:14

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Решаем задачи по Construct Classic [вопрос-ответ]
Serega-AДата: Среда, 01 Октября 2014, 11:03 | Сообщение # 2561
почетный гость
Сейчас нет на сайте
Привет всем! Чуть выше спрашивал про движение объекта,(спасибо за помощь) но видно проблемы еще не закончились. Суть в том, что хочется сделать, простенький симулятор баскетбола. Целый день безуспешно пытаюсь реализовать нормальное поведение кольца и сетки. Ну как сделать чтобы мяч правильно отскакивал от кольца, пролетал в него. В общем как в настоящем баскетболе. Цельный спрайт тут явно не к месту, пытался с полигонами по колдовать - тоже ничего не вышло. И как реализовать взаправдашную сетку. Может делал кто чего подобное или идеи какие есть. Вторая версия Констуктора!

Мои поделки

Сообщение отредактировал Serega-A - Среда, 01 Октября 2014, 11:03
VickaДата: Среда, 01 Октября 2014, 11:37 | Сообщение # 2562
Another ART
Сейчас нет на сайте
Serega-A, еще бы понимать что такое "всамделишное поведение")
попробуй разбить задачу на этапы.
иначе просто не понятна конечная цель.

Добавлено (01.10.2014, 11:37)
---------------------------------------------
ммммм..
то на сколько поняла


Serega-AДата: Среда, 01 Октября 2014, 12:35 | Сообщение # 2563
почетный гость
Сейчас нет на сайте
Цитата Neia ()
ммммм..
то на сколько поняла
Как раз именно то. Спасибо огромное. А как можно реализовать анимацию сетки при соприкосновении с мячом. Просто прикрутить физику не получится скорее всего?
Цитата Neia ()
еще бы понимать что такое "всамделишное поведение")
Я просто по части "Толком выразится" не мастер. smile . То есть как в реальной игре.
P.S С меня +.


Мои поделки
VickaДата: Среда, 01 Октября 2014, 13:59 | Сообщение # 2564
Another ART
Сейчас нет на сайте
Цитата Serega-A ()
А как можно реализовать анимацию сетки при соприкосновении с мячом. Просто прикрутить физику не получится скорее всего?

Можно) Но стоит ли овчинка выделки)?
Не проще ли использовать готовую анимацию)
Тем-более что активная её фаза займет от силы секунду)

Добавлено (01.10.2014, 13:59)
---------------------------------------------
К стати бросок в сторону мышки как-то не камельфо)
Если игра планируется на ведроид - актуальнее делать свапом.


Nick_RimerДата: Среда, 01 Октября 2014, 13:59 | Сообщение # 2565
заслуженный участник
Сейчас нет на сайте
Neia, Serega-A,
а если не полениться и сделать 2-3 анимации, чтобы не так бросалось в глаза однообразие, и каждый раз играть случайную, то ваще здорово smile
физика - это хорошо, но не представляю даже, как её к сетке прикрутить..


- Доброе утро, Агент Пи!
VickaДата: Среда, 01 Октября 2014, 15:48 | Сообщение # 2566
Another ART
Сейчас нет на сайте
Цитата Nick_Rimer ()
а если не полениться и сделать 2-3 анимации, чтобы не так бросалось в глаза однообразие, и каждый раз играть случайную, то ваще здорово

Апчём собственно и говорю)

Цитата Nick_Rimer ()
физика - это хорошо, но не представляю даже, как её к сетке прикрутить..

через физику и джоинты) но так ломает))


Serega-AДата: Среда, 01 Октября 2014, 19:55 | Сообщение # 2567
почетный гость
Сейчас нет на сайте
Цитата Neia ()
Если игра планируется на ведроид - актуальнее делать свапом.
А это как прошу прощения!


Мои поделки
VickaДата: Среда, 01 Октября 2014, 19:58 | Сообщение # 2568
Another ART
Сейчас нет на сайте
Serega-A, когда ты не тыкаешь а проводишь пальцем по экрану и объект берет скорость и угол .

Serega-AДата: Среда, 01 Октября 2014, 20:20 | Сообщение # 2569
почетный гость
Сейчас нет на сайте
Цитата Neia ()
когда ты не тыкаешь а проводишь пальцем по экрану и объект берет скорость и угол .
Понял. А его сложно реализовать?


Мои поделки
VickaДата: Среда, 01 Октября 2014, 21:17 | Сообщение # 2570
Another ART
Сейчас нет на сайте
Serega-A, не знаю. в теории нет. Но конструкт очень надменно относится к теориям)

Serega-AДата: Пятница, 10 Октября 2014, 17:01 | Сообщение # 2571
почетный гость
Сейчас нет на сайте
Как сделать чтобы объект плавно перемещался из одной координаты в другую. Например - каждые 5 секунд SpriteX - SetX.(random(275, 40)). Перемещается он уж больно резко. знаю что есть такая штука как dt. Но пользоваться ей не больно умею.

Мои поделки
VickaДата: Пятница, 10 Октября 2014, 18:20 | Сообщение # 2572
Another ART
Сейчас нет на сайте
Serega-A, ммм.. x+dt*64

Serega-AДата: Суббота, 11 Октября 2014, 09:17 | Сообщение # 2573
почетный гость
Сейчас нет на сайте
Цитата Vicka ()
ммм.. x+dt*64
Это ВОТ ТАК! - SetX.random(275, 40)+dt*64.


Мои поделки
AnthemДата: Среда, 15 Октября 2014, 18:57 | Сообщение # 2574
Д'Артаньян
Сейчас нет на сайте
Что-то тут все расслабились... Как насчет такой задачки?
Допустим у меня в экономической игре 40 видов товаров. Для каждого уровня мне необходимо случайно выбрать 10 из них. Как это сделать?
Другими словами, как делать назначение рандомного значения переменной для слова или строки?


Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры


Сообщение отредактировал Anthem - Среда, 15 Октября 2014, 19:02
Nick_RimerДата: Четверг, 16 Октября 2014, 08:59 | Сообщение # 2575
заслуженный участник
Сейчас нет на сайте
Anthem, ну хорошо.. рандом всё равно умеет рандомизировать только числа, так что тут вопрос организации того, как и куда ты запишешь эти 40 товаров.
Если у тебя будет одномерный массив с элементами, куда вписаны наименования товаров, размерностью [1..40] (или [0..39], если нумерация с нуля), то чего проще делать random(40)+1 для первого варианта (или random(40) для второго)?
Собственно, какие тут могут быть ещё проблемы? Для С2 не забыть добавить floor(), т.е. floor(random(40)+1) и floor(random(40)) соответственно, иначе никогда не выберешь ни один товар.
Если массив двумерный, допустим, в столбцах какие-то параметры товара (название, цена и т.д.), а каждая новая строка - отдельный товар, то понятно, что рандомизировать по количеству строк (стандартно это у массива, кажется, Y). Если товаров 40, то и формулы те же..
Уже выбранные позиции можно записывать отдельно, например, в сторонний одномерный массив, и каждый раз при выборе случайного товара проверять, а не выбирали ли мы уже такой? Если да, то выбрать другой.

Я, если честно, корня проблемы-то не увидел.. dry
А с твоим уровнем репутации я вообще не могу понять, то ли лыжи не едут, то ли я какой-то не такой. Может я не понял глобальности задачи? biggrin


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

Сообщение отредактировал Nick_Rimer - Четверг, 16 Октября 2014, 09:03
AnthemДата: Четверг, 16 Октября 2014, 19:25 | Сообщение # 2576
Д'Артаньян
Сейчас нет на сайте
Nick_Rimer, у меня репутация гуманитарного характера, я не программист. О массивах я знаю лишь то, что в них сначала записывают какие-то значения, потом читают. Все. В этом и проблема. Из твоих объяснений я понял, что вся эта конструкция не будет очень компактной. Поэтому вопрос такой: товаров у меня на самом деле 12. Будет ли оптимальным вариантом написать 12 строк с присвоением каждому значения переменной?

Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
Nick_RimerДата: Четверг, 16 Октября 2014, 21:47 | Сообщение # 2577
заслуженный участник
Сейчас нет на сайте
Anthem, насколько тебе не показалось бы это громоздким, а работа с массивами - это база, которую обязан знать любой программист, ибо это есть упорядоченный доступ к данным под ОДНИМ именем, но с разной индексацией.
Можешь себе представить комод. В комоде есть ящики, допустим, их будет 12, все они пронумерованы подряд от 1 до 12. И вот в каждом ящике лежит какой-то товар. Чтобы взять нужный товар ты должен подойти к комоду и открыть ящик с нужным номером.

Точно такой же подход используется к управлению массивами. Например, есть массив Goods, он состоит из 12-ти элементов. В каждом элементе записано название товара. Чтобы взять третий товар, мы обращаемся к нему примерно так: Goods(3). Нужен пятый? Тогда Goods(5). Нужен какой-то случайный товар? Пишем вместо числа конструкцию, которая выдаст случайное число от 1 до 12: random(12)+1. Получается, что, написав примерно такую запись: Goods(random(12)+1), мы получим один из 12-ти случайных товаров.
Почему я говорю "примерно так", потому что чисто техническая реализация процесса может немного отличаться в зависимости от синтаксиса разных языков программирования (ЯП), но это не меняет сути. Так же в некоторых ЯП нумерация массива может начинаться не с 1, а с 0. Тогда первым элементом будет элемент с номером 0, а последним - с номером 11, да и рандом тогда будет без "+1". Но это тонкости, и с этим всегда начинаются заморочки, прибавление единиц, вычитание единиц.. не думай пока об этом smile

Чем это удобно?
+ Не нужно создавать отдельную переменную под каждый товар. Это ладно 12. А если их 100? 1000? Переменных не напасёшься, устанешь их создавать. А в случае с массивом останется только просто поправить число входящих в него элементов (число ящиков в комоде).
+ Лёгкие операции с индексами - цифрами, которым применяются разные математические операции (в том числе и выбор случайного индекса) - это невероятно удобно при организации цикла, т.к. такой оптимизации на обычных переменных не достичь!
Минус, пожалуй, может заключаться лишь в том, что главное - это не запутаться в этой самой индексации, в циферках, т.е. не обращаться случайно не к тем элементам или вообще к несуществующему элементу.

Это мы с тобой разобрали одномерный массив. Я надеюсь, что объяснил понятно.

На практике же наравне с одномерными массивами ничуть не реже используются двумерные массивы. Их легко представить в виде матрицы, таблички, содержащей N строк и M столбцов. Ну или представить себе комод с ящиками, только каждый ящик содержит в себе ещё несколько ящиков. Таким образом, чтобы взять какой-то элемент из двумерного массива, мы должны обратиться сначала к определённой строке, а потом к номеру столбца в этой строке (или же наоборот, кому как нравится, кому как в конкретной ситуации удобнее). К двумерному массиву обращение идёт примерно такое: Goods(M,N) - элемент по M-тому столбцу и N-той строке.
Двумерный массив предлагает нам уже в некотором роде "табличку", которую мы можем использовать по своему усмотрению. Например, нам важен не только товар, как он называется, но так же и: его 1) цена, 2) количество товара на складе, 3,4,5...) любое другое количество параметров. Так поступим же вот так:

Пусть 1 столбец - название товара.
2 столбец - его цена
3 столбец - количество товара на складе

И наш массив будет заполнен примерно так:
Конфеты | 50 | 1000
Стулья | 300 | 12
Лопаты | 95 | 210
...

и так далее. А теперь вот что удобно. Нужна нам информация о конфетах? Читаем массив. Goods(1,1) - название, Goods(2,1) - цена, Goods(3,1) - остаток. А самое прелестное, что любые ЯП умеют организовывать циклы для совершения однотипных последовательных операций, которые уменьшают количество строк кода для обработки одних и тех же данных (нифига себе, если бы пришлось писать столько кода для каждого товара! а если бы, опять же, 1000???)
Но про циклы песня отдельная.. хотя они идут так тесно с массивами, что, изучая массивы, нельзя не изучить и циклы, чтобы жить было легче smile

Достоинства всё те же. Неудобства, пожалуй, тоже. Главное, не перепутать строки со столбцами и внимательно следить за индексами.

Я надеюсь, что очень популярно объяснил тебе теорию без особого углубления в подробности. Если тебя интересует более конкретное освещение этих аспектов и на более конкретном языке (или конструкторе), то ты спрашивай, я тебе могу объяснить (даже очень подробно) и сделать разные примеры. Уж на чём-чём, а на массивах у меня не одна собака съедена. Ленюсь только написать статью о конкретном применении массивов на констракте.. эта ведь тема многих волнует, особенно, кто не знаком ни с одним ЯП. Не ты первый, не ты последний, кто ещё задаст вопросы, как это работает.. smile

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

P.S. С массивами, как и с переменными, остаётся открытым вопрос, как данные туда попадут. Если в массиве должна быть какая-то сохранённая конкретная информация, надо её где-то хранить. Откуда-то читать, куда-то записывать. Можно, конечно, и в программе прописать, чтобы каждый раз создавалась конкретная информация, но обычно это "не комильфо".


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

Сообщение отредактировал Nick_Rimer - Четверг, 16 Октября 2014, 22:21
AnthemДата: Воскресенье, 19 Октября 2014, 20:59 | Сообщение # 2578
Д'Артаньян
Сейчас нет на сайте
Nick_Rimer, спасибо. Классно расписал. Это все я, кажется, понимаю. Давай перейдем к практике. Как организовать эти массивы в СС 1.2? Вот у меня есть список из 12 товаров, для выбора случайного из них подойдет одномерный массив, так? Как это все записать?

Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
Nick_RimerДата: Понедельник, 20 Октября 2014, 10:42 | Сообщение # 2579
заслуженный участник
Сейчас нет на сайте
Anthem, а использование именно версии r1.2 обязательно?
Со своей стороны могу порекомендовать перейти на уже давно существующую и последнюю версию классика - r2.
Найти и взять можно ТУТ.

Что касается практической реализации.. вот тебе пример:
СКАЧАТЬ для версии r1.2
Срок хранения файла: 30 дней

Программа умеет создавать массив по значениям, которые ты сам введёшь, сохранять и загружать массив. А также выбирать три случайных элемента.
Я снабдил пример ООООЧЕНЬ подробными комментарии о происходящем там.
Но если вопросы всё-таки появятся после разбора примера, милости прошу, всё ещё раз разжую и объясню.
Если что, пиши в личку, можем вечером как-нибудь по скайпу связаться.

исходники r2 не открываются в r1.2, но наоборот вполне себе работает.


- Доброе утро, Агент Пи!
AnthemДата: Вторник, 21 Октября 2014, 22:07 | Сообщение # 2580
Д'Артаньян
Сейчас нет на сайте
Nick_Rimer, большое спасибо! Вопросов у меня нет, т.к. на этом этапе я уже почти все не понимаю и пытаться меня научить программированию даже такого уровня может не столь бесполезно, сколь нецелесообразно. Поэтому я буду задаваться целями попроще. Вот например: машина должна двигаться в пределах дороги, для этого стоят ограничения по координатам. Почем вверх-вниз она ездит, а влево-вправо нет? Размеры поля 640х768


Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
Поиск:

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