mef1sto, я так понимаю, Х в какой-то момент принимает какое-то значение, и ты проверяешь, входит ли он в данное множество? или под воздействием каких-то параметров Х должен принять значение из этого множества? кажися, у меня после сессии тупняк, не соображаю чё-то.. - Доброе утро, Агент Пи!
NSakenov, такое, как уже сказал алхимик, невозможно. я делал такую фигню, что тайлы разбивал на отдельные картинки и сохранял в виде кадров анимации для спрайта (анимация выключена, естественно). и тогда можно выбирать нужный кадр спрайта, и как бы дело в шляпе. только все кадры должны быть одного размера.. - Доброе утро, Агент Пи!
VladimirPutin, кнопку можно сделать, например, из спрайта, мне так больше нравится. главное, у что у него мы создадим приватную переменную, например, PlayMusic. если PlayMusic = 1 - музыка играется, если PlayMusic = 0 - музыка выключена. теперь, когда кликаешь по кнопке, идёт проверка: если PlayMusic = 1 >> выключаешь музыку >> ставишь PlayMusic = 0 иначе если PlayMusic = 0 >> включаешь музыку >> ставишь PlayMusic = 1
что для тебя означает выключить/включить музыку и как будет выглядеть и работать твоя кнопка - это уже твоя забота. принцип я объяснил. - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Четверг, 06 Июня 2013, 18:01
smile196, начать можно с создания простейшего платформера. тут много чего всякого можно использовать сразу, чтобы пошире охватить различные области. если ни разу не работал с СС, рекомендую пройти обучающие уроки, вроде "платформер за 5 минут". за 5 минут, конечно, ты его не сделаешь, но общее представление о работе конструктора появится. если всё же ты уже с опытом, просто не знаешь, чем бы заняться, то тут подсказывать очень тяжело, т.к. должна душа к чему-то лежать - Доброе утро, Агент Пи!
engineer_pro, Lasmelan, я сделал пример выбора уровня. изначально доступен только первый (квадратик оранжевый, остальные серые), если кликнуть на уровень, будет написано, запустится он, или нет. можно нажать на Enter, это типа мы победили на первом уровне. для демонстрации, что стал доступен второй уровень.
выбор спрайтов для уровней осуществляется по uID, это очень жёсткая привязка, которую нельзя нарушать при проектировании меню, поэтому тут надо быть очень осторожным, чтобы не допустить ошибок. если кто знает, как иначе связать индекс массива и спрайт, прошу написать. все вопросы, как это работает, можно задавать. я пока не придумал, как проще чем через uID это сделать. проблема в том, что если накосячить с созданием спрайтов кнопок при создании уровня, можно получить фигню.
Lasmelan, engineer_pro, можно так сделать, если каждый раз открывается только один, следующий уровень. не надо иметь кучу локальных переменных, достаточно одной глобальной, которая будет равна количеству доступных уровней. т.е. она изначально = 1 (доступен 1й уровень), и один одномерный массив, количество элементов которого будет равно количеству уровней (в нём элемент = 0 - уровень заблокирован, элемент = 1 - уровень доступен). соответственно, прошли уровень - увеличили эту глобальную переменную на 1. проверили, чему равна переменная, элементу массива с этим номером присвоили 1. соответственно, когда на кнопки уровней будешь нажимать, надо проверять, чему там равен соответствующий номер массива. имхо, с массивом удобно, т.к. быстрый доступ к элементу по индексу. - Доброе утро, Агент Пи!
подскажите как сделать , чтобы уровень завершался, полсле того, как убьешь/разобьешь последний блок
сделать соответствующую проверку на количество блоков = 0. вот пример. щёлкай по кубикам, чтобы уничтожать их. ах, да, пример для CC r2. если у тебя С2, как я сейчас увидел, то не откроется. - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Среда, 05 Июня 2013, 08:52
Stesho, я сделал тебе пример, как я его вижу (как я объяснял). смотри. в этом примере есть три "кнопки", когда зелёная область перекрывает кнопку, нажатие на неё мышкой уничтожает кнопку (для наглядности, что всё произошло). т.к. перемещаться можно только вправо-влево, нижнюю кнопку ты не уничтожишь. пример для СС r2.
Цитата
я еще не умею делать проверки
а как ты работать с конструктором собрался? здесь всё основано на событиях, не умеешь этого делать, не сделаешь ничего. сделай хотя бы пару базовых обучающих уроков, чтобы освоить конструктор. - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Среда, 05 Июня 2013, 08:53
я, например, не читаю то, что относится к С2, стараюсь не читать, т.к. я с ним просто не работал и хз, что там может быть, не могу ни толком помочь, ни исходник сделать или посмотреть. когда я вижу призыв о помощи, то стараюсь по возможности помочь всем, поэтому если человек указывает, что речь о С2, я сразу знаю, что читать не обязательно для меня, и на помощь не бросаюсь :)
igrodel500, в редакторе изображений нужно сделать image point'ы, это такие синие "прицелы" указываешь координаты и называешь по-особенному. а затем для лука, меча, топора и т.п. делаешь System - Create at image point вот, как-то так - Доброе утро, Агент Пи!
yarickyarick, ты забыл указать, что говоришь про Construct 2. Надо бы говорить об этом. Я с С2 не работал, но есть предположения.. например, у тебя где-нибудь там какой-нибудь масштаб как-то стоит, где-то событие, может, меняет размер шрифта и работает неверно.. если ты создашь новый объект текст и введёшь в него любые слова, то же самое будет при любом размере? может где какая глобальная установка для текста в программе.. - Доброе утро, Агент Пи!
Stesho, я делал примерно такую хитрую штуку: делал ещё один спрайт и помещал его на базисный слой, который не видно. привязывал этот спрайт жёстко к гг (т.е. System - Always - Set position to another object) спрайт этот сделан так, что он собой представляет как бы область, в которой наш гг может что-то сделать, до чего-то дотянуться. далее нужны проверки, что когда такой-то объект (например, рычаг) был в области действия, т.е. они там пересекаются, то нажатие на объект (рычаг) приведёт к его активации, а в противном случае посылать всех нафиг.
то, что я изложил, понятно? или надо привести более подробный пример с картиночкой и событиями?
P.S. твой исходник не смотрел, не могу счас. попробуй сделать, как я. - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Вторник, 04 Июня 2013, 15:18
Была у меня мысль как-то написать статью по работе с циклами и массивами для СС, подошла бы новичкам, но потом как-то бросил. Не знаю, стоит ли оно того, чтобы написать. Если будут какие вопросы по массивам и т.п. - обращайся - Доброе утро, Агент Пи!
madsen, да можно и без ини, принцип пойми! нужно сохранить состояние на момент закрытия и время, в которое закрылась программа. после открытия эти данные считать и сравнить с текущими. а именно, посчитать время и увеличить переменную на столько, на сколько нужно было её увеличить за это время. куда ты будешь сохранять эти данные, в ини, в тхт, в реестр, в двоичном формате.. всё равно. но иначе не получится. - Доброе утро, Агент Пи!
RUNGOGET2THECHOPAH, я думал о таком варианте, хотя, надо сказать, я просто предложил один из вариантов действия. как вариант, можно делать не второй массив, а сделать первый массив двумерным. на второй его строке пусть будет то, что во втором массиве. а на первой - имена городов. вообще, хороший вариант тогда иметь названия городов в файле, в начале игры читать, а потом из него удалять, и сохранять эту информацию. в общем, есть варианты, можно додумать - Доброе утро, Агент Пи!
в принципе, подобное решение можно применять не только для констракт 2. я вижу такой вариант, что ты держишь названия городов в файле. когда нужно раздать название городу, ты читаешь файл, пишешь все имена в одномерный массив (или ещё в начале/при загрузкеновой/старой игры ты загружаешь эти массивы, чтобы потом лишний раз не читать), затем рандомно выбирается индекс элемента массива, название с этим индексом и присваивается городу. параллельно есть ещё массив, куда ты тут же записываешь это название (это отдельный массив для городов, чьи названия уже "забиты"). поэтому каждый раз, как ты выбрал в первом массиве какой-то город, надо проверить, есть ли такой город уже во втором массиве, если есть, то искать ещё. и так до тех пор, пока не будет найдено в первом списке имя, которого нет во втором списке. суть ясна? после этого всего второй массив тоже нужно сохранить в файл (как-то связанный с сохранением), чтобы в случае загрузки не потерять список "забитых" названий, а при загрузке - загружать его во второй массив.
повторюсь, чтобы всё было ясно: 1. имеем общий игровой файл, где записаны имена городов 2. имеем массив, куда загружаются имена из общего файла с именами 3. имеем второй массив, где хранятся те имена, которые уже использованы, и их в этой игре использовать нельзя 4. когда нужно дать имя городу, случайным образом выбираем его из первого массива 5. проверяем, есть ли такое имя во втором массиве 6.1 если есть, то ищем ещё 6.2 если нет, то даём городу это имя и записываем его во второй массив 7. второй массив также сохраняем в отдельный файл, который связан именно с этой игрой (чтобы в начале новой игры можно было снова иметь в доступности все города)
надеюсь, я объяснил понятно? если есть ещё вопросы, задавай. - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Воскресенье, 02 Июня 2013, 11:49
AntiAlianKiller, ога, выглядит интересно.. надо только как-то попробовать всё ж от раздвоения личности избавиться.. и ещё, там, как мне показалось, в некоторых местах тени некрасиво наезжают поверх других объектов. почему-то мне кажется, что было бы логично, чтобы тени были под объектами (если это возможно в принципе сделать) - Доброе утро, Агент Пи!
DimOk, не совсем понял твой исходник в отношении сабжа.. мне казалось, что AntiAlianKiller хочет что-то такое: клац есть один косяк.. если внутрь "радиуса" мышь заводить, то начинается раздвоение личности надо от этого избавиться, но мне сейчас не до того, бежать надо уже - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Среда, 29 Мая 2013, 16:30