madsen, окай! Microsoft Windows ты же не говоришь, меня друг попросил установить ему майкрософт, или я тут себе новый майкрософт поставил, а он глючит. по телику тоже не говорят, новый майкрософт 8! говоришь ведь виндовс, винда и т.п. я прав? и сайт у них тоже http://microsoft.com так что теперь, винду майкрософтом обзывать? поэтому товарисч IzBePg верно глаголит,
блин, первое - конструктор называется Construct Classic. Он не называется Scirra. второе, с этим конструктором у меня вечно глюки, то куда-нибудь ткну - вылетит, то установится с другой программой какой-то пакет VCRedist - вообще не запускается, помогает лишь переустановка (последний раз такое произошло сегодня).. как-то раз даже исходник мне запорола так что мой совет: чаще сохраняться, не пренебрегать включением в опциях автосейва (можно прям поставить каждую минуту), при обнаружении проблем, подобных этим, первым делом переустановить и проверить работоспособность. если проблема не ушла - проверить с другим исходником похожую ситуацию, если там не наблюдается таких явлений, значит где-то уже запоролся исходник, что печально, ибо навряд ли подлежит восстановлению - Доброе утро, Агент Пи!
цикл в цикле, это вложенная конструкция, когда в теле одного цикла запущен другой цикл. Пусть количество итераций внешнего цикла - a, внутреннего - b. Внешний цикл отработает a раз, в то время как внутренний за это же время отработает a*b раз. наиболее часто используемым примером вложенных циклов является работа с двумерным массивом. двумерный массив представляет собой матрицу размерностью m*n (m - количество строк, n - количество столбцов). двумерный массив можно себе образно представить как набор из нескольких одномерных (так же как и одномерный - двумерным всего с одной строкой). одномерный массив заполняется значениями циклом, в котором последовательно проходят от 1-го до n-го элемента, заполняя его значением. для двумерного массива нужно заполнить m таких "одномерных массивов", т.е. каждую из его строк нужно последовательно заполнить элементами. таким образом создаётся цикл в цикле. первый, внешний цикл фактически работает на увеличение номера строки, а внутренний - пробегает по всем столбцам этой строки.
попытался объяснить своими словами. надеюсь, что хоть что-то понятно. приведу небольшой пример ни на каком языке, просто логикой. заполнение двумерного массива.
Пример: //внешний цикл 1 для переменной i от 1 до m выполнять следующие действия: -----//запускается внутренний цикл 2 -----для переменной j от 1 до n выполнять следующие действия ----------//заполняется элемент со порядковым номером i,j ----------присвоить элементу (i,j) случайное значение -----//конец цикла 2 //конец цикла 1
таким образом, что происходит. появляется две переменных i - содержит номер ТЕКУЩЕЙ заполняемой строки, j - содержит номер ТЕКУЩЕГО заполняемого столбца. запускается цикл 1, i становится равно = 1 (т.е. начали с первой строки) запускается цикл 2, j становится равно = 1 (т.е. начали с первого столбца) присвоили элементу (1,1) какое-то число внутри цикла 2 происходит увеличение переменной на 1, j становится равно = 2 (т.е. второй столбец, но i по-прежнему равно 1, т.к. ещё ни разу не завершился 1 цикл) присвоили элементу (1,2) какое-то число внутри цикла 2 происходит увеличение переменной на 1, j становится равно = 3 (т.е. третий столбец, но i по-прежнему равно 1) присвоили элементу (1,3) какое-то число и так далее, пока не заполним элемент (1,n) только теперь завершится цикл 2, а так как в цикле 1 других действий нет, то и он завершится, i увеличится на 1, и снова запустится цикл 1, а внутри него - цикл 2, который начнёт всё то же самое, только i теперь равно 2. начнём заполнять элементы (2,1), (2,2), (2,3) ... (2,n) и так будет без конца. всё закончится, когда мы заполним элемент (m,n). тогда внешний цикл запускаться уже не будет, а соответственно и вложенный в него внутренний.
вот. своими словами. вроде популярно разжевал просто по мелочам. если что-то не ясно, или требуется уточнение - пиши в Л.С.
я никогда не делал никакие массивы в СС, но там есть такой компонент - Array. у него есть три свойства: Width (X), Height (Y), Depth (Z) таким образом можно создать хоть трёхмерный массив (как ты понимаешь, при работе с трёхмерным массивом будет три координаты, значит дважды будет цикл в цикле, но, думаю, это тебе не надо, хотя, как знать..)
Соответственно ты выставляешь размерность по X, Y, Z. Если X>0, Y=1, Z=1 - это одномерный массив. если X>0, Y>1, Z=1 - это двумерный массив. если X>0, Y>1, Z>1 - это трёхмерный массив. Массив 1*1*1 - тупо бессмысленный массив из одного элемента
У Array есть событие For each element (для каждого элемента), очевидно, что это событие делает всё то, что я выше написал, проходя по всем элементам, а там ты уже должен сделать, что это будет, запись ли данных, чтение ли данных, или ещё что-то..
Создание цикла на СС может быть сделано System -> FOR указываешь Name - имя переменной, по которой происходит перебор, Start - начальное значение, End - конечное значение. например, если ты захочешь заполнить массив с 5 по 9 элемент, можно написать цикл: System -> For -- Name = "i", Start = 5, End = 9 далее создать на это событие действие, например, Array -> Set value at X -- в первом поле ввести LoopIndex("i"), во втором - то значение, которое хочешь присвоить этим номерам массива, например, 7. Таким образом, если мы создадим пустую сцену с такими условиями (мы не будем менять в Array значения по-умолчанию), мы будем иметь одномерный массив Array из 10 элементов, в котором все элементы будут = 0, кроме элементов с 5 по 9, которые будут равны 7.
Вот. Такое тебе практическое дополнение для СС по созданию массивов. За любыми вопросами прошу в Л.С. или уточнять прям тут далее по теме. Это не важно, но если помогло, надеюсь на "+", а то я столько текста написал, разжевал всё, надеюсь, полезно и поможет
Добавлено (27.03.2013, 00:38) --------------------------------------------- вот, как можно сделать заполнение массива двумя разными способами. результат один и тот же, но второй способ нагляднее демонстрирует цикл в цикле (хотя в любом ЯП эта наглядность обычно гораздо выше, тут же пока разберёшься). рекомендуется использовать первый способ, когда нужно заполнить полностью весь массив, и второй способ (за малыми изменениями), когда требуется заполнить лишь какую-то часть последовательности. клац 1, клац 2
массив, как видно, заполняется случайными значениями от 1 до 100. при этом что в первом, что во втором случае сработает код для любой размерности двумерного массива.
- Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Вторник, 26 Марта 2013, 23:42
off_line, переживаю, что нет. рассчитай эти точки и настрой для каждого спрайта вручную в соответствующих полях при выборе инструмента hot spot. думаю, что не иначе.. - Доброе утро, Агент Пи!
minuzz, за последние пару недель уже человека три обратились с этой "проблемой", т.к. я был одним из них и получил ответ, делюсь: идём сюда, вверху нажимаем кнопочку "Скачать удалённо", что приводит нас на другой сайт, где видно все три известных версии программы. Ставь последнюю (идёт с номером r2), не ошибёшься. - Доброе утро, Агент Пи!
petrodiesel, вот пример. переменная увеличивается на 1, когда мышка над объектом (это делается всего один раз, сколько ни вози мышь по объекту, но стоит тебе выйти за пределы объекта и войти в него снова, событие отработает ещё ровно один раз, и так далее). просто замени изменение переменной на проигрывание своего звука. - Доброе утро, Агент Пи!
petrodiesel, у всяких функций типа System -> Next Layout/Prev Layout и т.п. есть такая штучка: Transition. По умолчанию стоит None. Но если зайти заранее во вкладке projects -> Add transitions (добавить переход), то можно будет выбирать его. - Доброе утро, Агент Пи!
allxumuk, остаётся верить, что человек понимает структуру INI-файла, дабы с ним правильно работать. гугл ему в помощь и семь футов под килем! - Доброе утро, Агент Пи!
как и во многих языках программирования, в питоне 3 функции, обеспечивающие округление: floor(), ceil(), round()
результаты выполнения для чисел 25.3, 45.5, -17.6: floor(25.3) = 25; floor(45.5) = 45; floor(-17.6) = -18 ceil(25.3) = 26; ceil(45.5) = 46; ceil(-17.6) = -17 round(25.3) = 25; round(45.5) = 46; round(-17.6) = -18
функцию round() можно представить в виде round(x, n), где n - точность округления, например: round(101.5328, 2) = 101.53
один нюанс, вот такое округление: round(101.5678, 1) даст нам 101.5 вместо ожидаемых 101.6
Добавлено (25.03.2013, 13:56) --------------------------------------------- AntiAlianKiller, по аналогии с int() есть функция float() (англ. float - плавать), ты, наверное, перепутал с floor()
Ramilyanamana, такое впечатление, что тебе не только СС надо переустановить, но и браузер, отлично отображается скриншот, что в первом, что во втором случае. вот ссылка на него. может так у тебя выйдет посмотреть. я всегда скриншоты в виде ссылок отправляю, чтобы было ноу проблем. - Доброе утро, Агент Пи!
DimOk, на современных мониторах давно уже можно начинать с 1024х768, а то 800х600 это уже давно вырви глаз! и я не вижу как-то решения проблемы.. я так понимаю, что человеку нужно знать, какие разрешения поддерживает монитор, чтобы предлагать именно их, а то игра вылетает при выборе неправильных.. если честно, то я теряюсь в догадках, не знаю, как это сделать даже где-нибудь типа делфи (хотя стопудов решения есть).. я подумаю, поищу, что говорит об этом программирование, вдруг что узнаем, но это очень навряд ли.. - Доброе утро, Агент Пи!
Serega-A, ну вообще, если очень внимательно посмотреть, то ты найдёшь в меню вкладку Layout, на которой есть кнопка Toggle grid, а также Edit grid и галочки Snap-to moving, Snap-to resizing. Поиграйся с ними. Это твоя сетка. - Доброе утро, Агент Пи!
petrodiesel, попробуй ещё посмотри такие параметры, как acceleration (ускорение; отрицательное ускорение есть замедление) и gravity (гравитация), а так же может быть rate (сколько партиклов создавать в секунду) - Доброе утро, Агент Пи!
я свой ник использую уже почти 11 лет, началось всё с литературного псевдонима, потом в сеть перекочевал.. но многие не читали Лукьяненко, поэтому для некоторых, блин, я Раймер, т.к. по правилам чтения, как я написал, должно читаться Раймер. Но я пишу исключительно вот так и прошу читать, как надо по-русски - Ример. С этими никами вечно такая запара, всем не угодить
- Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Пятница, 22 Марта 2013, 09:14
я так исказал надо сделать так чтобы платформ было ограниечное кол-во
ну тогда это точно не x milliseconds, I think
Цитата
Мне нужна генерация во вертикали.
Типа дудл джамп? Это, кстати, мне кажется проще, т.к. надо будет учитывать, наверное, только вертикальное расстояние между платформами, смещать их вправо-влево рандомно.. за пределами экрана внизу "килять" их, а вверху создавать ещё за пределами экрана с некоторым запасом. если поколдовать, эти платформы можно вообще сделать типа bullets, чтобы двигались платформы, а ты по ни уже прыгаешь (ну это так, мысли вслух), таким образом создать эффект постоянного движения вверх.. - Доброе утро, Агент Пи!
Ramilyanamana, чувак, тебе просто не везёт! знаешь, я помню, что писал: XAudio2 -> Loop music XAudio2 -> Play music "xxx.mp3" и проблем не помню.. быть может у меня были файлы такие, что не слышно было разрыва, я не знаю.. (ну, с затуханием в конце или чё-то типа того) - Доброе утро, Агент Пи!
Gammeza, ава у него как раз не пошлая, очень тянет на LIMBO.. только там у гг не было фонарика.
Цитата
Every x ms- spawn
не потянет, т.к. гг может тупо стоять на месте (прикинь, припёло в туалет так, что аж на паузу забыл нажать, и ушёл на полчаса), а платформы всё генерятся.. посему нужно исходить из каких-то локальных перемещений героя, создавать платформы за пределами его видимости, но чётко в те моменты, когда он подходит на какое-то расстояние. конечно, нужно учитывать высоту и длину прыжка, чтобы платформа не сгенерировалась хрен знает где.. для освобождения памяти неплохо удалять ранее созданные (хотя они вполне могут удаляться, например, если попадают за предел экрана, ибо нефиг бежать в обратную сторону - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Пятница, 22 Марта 2013, 08:15