TraerTaer 39 Опубликовано: 18 августа, 2016 (изменено) Тестовый вариант игры арканойд. http://pastebin.com/Pg8edkzJ - бета тест, рабочая версия(вроде)(всегда работает) Играть уже можно. Управление на стрелки. Вход на Enter. Конфиги описаны в пастбине. Подробно. Планы для игры: Чтение кирпичей из массива [/ok] Меню загрузки карт Редактор карт Инсталлятор Стартовая позиция шарика - платформа [ok=Прочность кирпичей] Бонусы Кастомные карты меню (работает, но нужно создать для него инсталлер) http://pastebin.com/qCi7i5Epарканойд, но уже с 1 пунктом (по сути библиотека) http://pastebin.com/WpwbGj4nРедактор карт требует доработки. Спасибо за создание его PandaDoddo. http://pastebin.com/wAhE1B0s - бета, постоянно обновляется. Байтика Изменено 22 августа, 2016 пользователем TraerTaer 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 19 августа, 2016 (изменено) На мой взгляд платформу лучше двигать не по событию key_down, а начинать движение по key_down и останавливать по key_up. Так движение будет более равномерным. Рассмотри возможность сделать шарик не пикселем, а полупикселем. Даешь текстуру кирпичей и платформы. Ну, и хотелось бы подарки, выпадающие из кирпичей. Байтика автору PS Я бы кирпичи и платформу сделал объектами и при движении шарика анализировал не цвет экрана, а касание объекта. Изменено 19 августа, 2016 пользователем Zer0Galaxy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 19 августа, 2016 PS Я бы кирпичи и платформу сделал объектами и при движении шарика анализировал не цвет экрана, а касание объекта. Слишком сложно. Я с этим не дружу. И разве определение цвета это не является опредением объекта? Как это должно работать? Я просто не представляю проверку. На мой взгляд платформу лучше двигать не по событию key_down, а начинать движение по key_down и останавливать по key_up. Так движение будет более равномерным. Буду работать над этим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 19 августа, 2016 И разве определение цвета это не является опредением объекта? Странное решение, определять по цвету. На других движках, возможно ты бы и не смог подобным способом решить проблему. Можно по координатам определять, когда происходит прикосновение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 19 августа, 2016 Странное решение, определять по цвету. На других движках, возможно ты бы и не смог подобным способом решить проблему. Можно по координатам определять, когда происходит прикосновение. Геморно. Так я узнаю попадает ли шар в кирпич при его движении. Потом определяю куда я вообще попал, а дальше уже действую. Работает для всех прямоугольных предметов. В бете с чтением карт еще и убирать кирпичи произвольно можно. А в чем проблема на других движках? Нельзя получить цвет пикселя? Тут же все просто, без особенностей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 19 августа, 2016 Захочешь ты сделать кирпич, который не выбивается или выбивается с двух и более касаний, как ты это реализуешь анализируя только цвет экрана? Подобные игры - идеальный случай изучить ООП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 19 августа, 2016 (изменено) Захочешь ты сделать кирпич, который не выбивается или выбивается с двух и более касаний, как ты это реализуешь анализируя только цвет экрана? Подобные игры - идеальный случай изучить ООП. В бета версии все в массиве. Цвет каждого кирпича, его прочность(0 - не ломаемый), координаты. Так же в массиве находятся конфиги карты. Например длина платформы. Пример массива {{32(plat), 2(speed)}, {1(x), 1(y), 10(w), 10(h), 321321(color), 0(prochka), X(bonus)}, {тоже}, {тоже}} В ООП вообще не шарю. И не знаю с чего начинать. Термины, наверно, учить. Но это геморно. Изменено 19 августа, 2016 пользователем TraerTaer Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 19 августа, 2016 (изменено) А в чем проблема на других движках? Нельзя получить цвет пикселя? Тут же все просто, без особенностей. Если захочешь использовать одинаковые цвета - начнутся проблемы. Захочешь использовать картинку фоновую или полупрозрачные кирпичи или сверху накладывать полупрозрачный фон - опять же будут проблемы. Сделано хоть и нормально для OpenComputers компов, но в более серьёзных движках, это будет жёстким ограничителем, который будет мешать улучшать игру графически. Например я хочу сделать кирпичи которые будут радужными (менять плавно цвет), и с твоим подходом я не смогу осуществить их работу, так как у тебя стоит привязка к цвету. С привязкой к координатам таких проблем бы не было и на полноценных движках можно было бы всячески улучшать графику игры. Например задавать рамку вокруг кирпичей (на которую шарик в твоём случае тоже бы реагировал) Дело твоё конечно, но твой метод определения столкновения не универсален. Изменено 19 августа, 2016 пользователем qwertyMAN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 19 августа, 2016 TraerTaer, давай я сделаю тебе объект-кирпич, ты увидишь насколько это проще и возьмешь меня в соавторы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 19 августа, 2016 TraerTaer, давай я сделаю тебе объект-кирпич, ты увидишь насколько это проще и возьмешь меня в соавторы Ну насчет приминения в программе не знаю, но было бы полезно увидеть как это человеки с руками делают. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
davial 1 972 Опубликовано: 19 августа, 2016 Ну насчет приминения в программе не знаю, но было бы полезно увидеть как это человеки с руками делают. Вот. Ходил я по страничке cc.ru на вк. И наткнулся на статью о библиотеке про прямоугольники http://computercraft.ru/topic/1166-minibiblioteka-rectangle/. Может пригодиться ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 19 августа, 2016 Вот. Ходил я по страничке cc.ru на вк. И наткнулся на статью о библиотеке про прямоугольники http://computercraft.ru/topic/1166-minibiblioteka-rectangle/. Может пригодиться ? Спасибо, буду разбираться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 20 августа, 2016 Если захочешь использовать одинаковые цвета - начнутся проблемы. Захочешь использовать картинку фоновую или полупрозрачные кирпичи или сверху накладывать полупрозрачный фон - опять же будут проблемы. Сделано хоть и нормально для OpenComputers компов, но в более серьёзных движках, это будет жёстким ограничителем, который будет мешать улучшать игру графически. Например я хочу сделать кирпичи которые будут радужными (менять плавно цвет), и с твоим подходом я не смогу осуществить их работу, так как у тебя стоит привязка к цвету. С привязкой к координатам таких проблем бы не было и на полноценных движках можно было бы всячески улучшать графику игры. Например задавать рамку вокруг кирпичей (на которую шарик в твоём случае тоже бы реагировал) Дело твоё конечно, но твой метод определения столкновения не универсален. Я подумал... Можно. Использовать передний цвет и не писать символы. При этом цвет сохранится и можно будет найти кирпич. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 20 августа, 2016 Я подумал... Можно. Использовать передний цвет и не писать символы. При этом цвет сохранится и можно будет найти кирпич. Если затеешь перейти на полноценный движок и нарисуешь спрайты для кирпичей, они не смогут взаимодействовать как ты задумал по цвету. Ты сейчас загоняешь себя в рамки, выбирая не традиционные способы решения проблем. Может оно и проще кажется сейчас, но в будущем будет сложнее. Изучил бы работу с координатами - стало бы проще другие программы писать. А избегая эту тему, её не изучишь. Насчёт библиотекой, что тебе подсказали. Там так же есть работа с координатами. Мог бы вместо того чтобы использовать её напрямую, подглядеть как там работает работа с координатами и научиться новому. Так было бы полезнее, если хочешь повышать свой уровень программирования. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 20 августа, 2016 По просьбам начал лечить больного, а не пришивать ему еще ног. Проверка на кирпич. Выполняется при перемещении шара. for i = 1, #mass - 1 do if mass[i][1] < x + dx and mass[i][2] < y + dy and mass[i][1] + mass[i][3] > x + dx and mass[i][2] + mass[i][4] > y + dy then getKirpich(mass[i][1], mass[i][2], 111111111) if mass[i][1] < x + dx and mass[i][2] < y and mass[i][1] + mass[i][3] > x + dx and mass[i][2] + mass[i][4] > y then dx = 0 - dx elseif mass[i][1] < x and mass[i][2] < y + dy and mass[i][1] + mass[i][3] > x and mass[i][2] + mass[i][4] > y + dy then dy = 0 - dy else dx = 0 - dx dy = 0 - dy end end end Так же воспользовался советом Зеро. if k4 == 203 and platformaS > 1 and k1 == "key_down" then event.listen("key_down", platforma) event.listen("key_up", platforma) Вроде все. Вот пастбин. http://pastebin.com/wAhE1B0s Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 22 августа, 2016 Сделал прочность кирпичей. Цвет изменяется очень странно, доработаю позже. Сейчас массив с данными выглядит так {{x, y, w, h, color, prochka, bonus(empty)}, ...{x, y, w, h, color, prochka, bonus(empty)}, {l(platforma)}} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 722 Опубликовано: 22 августа, 2016 (изменено) Сделал прочность кирпичей. Цвет изменяется очень странно, доработаю позже. Сейчас массив с данными выглядит так {{x, y, w, h, color, prochka, bonus(empty)}, ...{x, y, w, h, color, prochka, bonus(empty)}, {l(platforma)}} В принципе w и h можно не записывать в массив, так как они везде (скорее всего) будут одинаковые. Просто вывести их в отдельные переменные. Color записывать тоже не вижу смысла. Вместо этого можно использовать переменную level, которая будет содержать уровень кирпича (от 1 и выше) и по отдельной таблице подбирать по уровню нужный цвет. Тогда и переменная prochka не нужна будет. В итоге получим следующую таблицу: local w, h = 4, 1 --например так local block = {} for x=1, 10 do for y=1, 5 do table.insert(block, {x=x, y=y, level=math.random(1,5)}) --генерируем поле 10 на 5 с блоками случайного уровня end end color = { --создаём таблицу с цветами для каждого из пяти уровней блоков 0xffffff, 0xff0000, 0x00ff00, 0x0000ff, 0xffff00 } -- ... -- где то в коде, когда назначаем цвет блока require("component").gpu.setBackground(color[block[i].level]) --где i - индекс блока Изменено 22 августа, 2016 пользователем qwertyMAN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 22 августа, 2016 W и H надо для полностью кастомных карт. Вообще думаю еще текстурки сделать. И с шаром побороться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах