TraerTaer 39 Опубликовано: 9 июля, 2016 Довольно долго пытался сделать обычный, но не смог. Создал эту тему чтобы спросить несколько вопросов и залить дополнение к обычному арканойду. http://pastebin.com/5K6yh6g6 - арканойд на двоих(не работает) Там весьма подробный комментарии. Вопрос таков, как сделать чтобы он после соприкосновении с платформой летел нормально? Так же просьба рассказать о всех костылях и вообще переписать пол проги за меня чтоб я понял свои косяки. Как я понимаю их много. И как определить закрашен ли пиксель. Например: gpu.setBackground(color) gpu.set(x, y, " ") Как узнать какой цвет в координатах х у? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 9 июля, 2016 И как определить закрашен ли пиксель. Например: gpu.setBackground(color) gpu.set(x, y, " ") Как узнать какой цвет в координатах х у? local char, foreColor, backColor = gpu.get(x, y) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 9 июля, 2016 ... Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 9 июля, 2016 Замутить арканоид? Пфф да запросто, там много ума не надо. Хоть на четверых можно играть Но мне лень пока писать, занят был созданием хардкорной сборки, сейчас тестить начну. А пока просто по накидаю советов по программированию в ОС: Когда пишешь проги в отдельном редакторе, возможно, нужна перезагрузка компа или выход/вход в игру, чтобы изменения вступили в силу. (в одиночной игре) Чтобы изменения сразу вступали в силу без перезагрузки, нужно в конфигах одну строку изменить. (для одиночной игры) Если пишешь библиотеку - готовься после каждого изменения файла перезагружать комп. Увы, но мне лень было придумывать способ выгрузки библиотек из памяти. Пусть гуру луа пояснят, что в таких случаях нужно делать. Если используешь event.listen, и перед выключением проги не производишь event.ignore - готовься что у тебя будут повторяться некоторые действия. Быстрое решение - перезагружать комп каждый раз после выхода из проги. Более правильное решение - не выходить из проги через Ctrl + C и по завершении проги использовать event.ignore (как я понял ты с этой проблемой столкнулся и она тебе дико мешает) Удачи с реализацией! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 9 июля, 2016 Если используешь event.listen, и перед выключением проги не производишь event.ignore - готовься что у тебя будут повторяться некоторые действия. Быстрое решение - перезагружать комп каждый раз после выхода из проги. Более правильное решение - не выходить из проги через Ctrl + C и по завершении проги использовать event.ignore (как я понял ты с этой проблемой столкнулся и она тебе дико мешает) Нет, event.listen как я его использовал подходит только для одного игрока. Пока один перемещаю платформу другой не может. Так то он мне не мешает. Еще не сталкивался с проблемойю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 9 июля, 2016 Нет, event.listen как я его использовал подходит только для одного игрока. Пока один перемещаю платформу другой не может. Так то он мне не мешает. Еще не сталкивался с проблемойю Лень мне вникать в код, в общем вот проблема: -- физика(нет) не работает. Если у шарика у < 1 то меняет направление несколько раз = не работает Вот причина которая подходит по описанию к проблеме: В твоём коде есть event.listen, но нет event.ignore. (ужасная ошибка, исправь немедленно) Значит при каждом запуске проге, будет всё больше и больше раз выполнтся функция. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 11 июля, 2016 (изменено) Я бы не использовал event.listen, а использовал event.pull. По событию "key_down" платформа начинает движение, а по "key_up" останавливается. Не нужно два десятка раз жмакать на клавишу да и с ignore не будет проблем. Собственно перемещение платформы осуществлять по таймеру. Можно через os.sleep, но тогда нужно использовать многопоточность, что бы движение одной платформы не влияло на другую. Изменено 11 июля, 2016 пользователем Zer0Galaxy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 11 июля, 2016 (изменено) Я бы не использовал event.listen, а использовал event.pull. По событию "key_down" платформа начинает движение, а по "key_up" останавливается. Не нужно два десятка раз жмакать на клавишу да и с ignore не будет проблем. Собственно перемещение платформы осуществлять по таймеру. Можно через os.sleep, но тогда нужно использовать многопоточность, что бы движение одной платформы не влияло на другую. С event.listen можно запросто певдомногопоточность замутить. Чтобы несколько игроков могли управлять одновременно. Вон же змейка у меня как то работает на большое количество игроков с помощью event.listen. Единственная при этом проблема, краши и выходы без event.ignore. При тесте особо тяжко, приходится комп перезагружать в случае ошибок. На счёт арканоида. Разбираться в коде лень, не такой уж он и красивый чтобы исправлять ошибки. Мне проще с нуля написать нормальный код в котором будет всё как надо. И названия переменных нормальные. Изменено 11 июля, 2016 пользователем qwertyMAN Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 11 июля, 2016 С event.listen можно запросто певдомногопоточность замутить. Чтобы несколько игроков могли управлять одновременно. Вон же змейка у меня как то работает на большое количество игроков с помощью event.listen. Единственная при этом проблема, краши и выходы без event.ignore. При тесте особо тяжко, приходится комп перезагружать в случае ошибок. Разбираться в коде лень, не такой уж он и красивый чтобы исправлять. Мне проще с нуля написать нормальный. А в pcall нельзя добавить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 11 июля, 2016 А в pcall нельзя добавить? Проблема именно во время тестов. Я часто проги тестирую и каждый раз через Ctrl + C завершать прогу и потом перезагружать комп долго. А вот когда готовая уже прога то там ошибок не должно быть и всё норм работает. Это проблема именно тестирования проги. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 542 Опубликовано: 11 июля, 2016 (изменено) Проблема именно во время тестов. Я часто проги тестирую и каждый раз через Ctrl + C завершать прогу и потом перезагружать комп долго. А вот когда готовая уже прога то там ошибок не должно быть и всё норм работает. Это проблема именно тестирования проги. Я с такими проблемами боролся. переопредели event.shouldInterrupt() если true, тогда ignore сделай для всех функции. Изменено 11 июля, 2016 пользователем NEO 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 11 июля, 2016 Тестовый вариант арканойда на одного http://pastebin.com/Pg8edkzJ . Хромой больной, но рабочий код с играбельной игрушкой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
qwertyMAN 1 723 Опубликовано: 11 июля, 2016 Тестовый вариант арканойда на одного http://pastebin.com/Pg8edkzJ . Хромой больной, но рабочий код с играбельной игрушкой. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
TraerTaer Автор темы 39 Опубликовано: 11 июля, 2016 Ну пока тестовый вариант. Может кто посоветует что... Про евент игнор уже понял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах