Перейти к содержимому

qwertyMAN

Пользователи
  • Публикации

    1 009
  • Зарегистрирован

  • Посещение

  • Победитель дней

    47

Все публикации пользователя qwertyMAN

  1. Часть кода моей новой проги: for i,j in pairs (control.keys) do j() end Цикл for i,j in pairs (таблица) do end работает столько раз, сколько ячеек в таблице. При этом каждый раз выводит ключ i и значение j. В данном случае я в таблице храню функции, а ключ - это клавиши, вроде "f" и прочие для управления.
  2. Да забудь вообще слово "учить". Формулы нужно самому уметь выводить, а не надеяться на интернет, таблицу сложения и прочий мусор выдуманный гуманитариями. В общем я решил за тебя сделать столь сложный труд, вот 4 координаты точек правильного тетраэдра: local x=10 -- любое число - длинна грани тетраэдра {-x/2,0,0} {x/2,0,0} {0,0,math.sqrt(3)*x/2} {0,math.sqrt(x^2-(x/(2*math.sqrt(3)))^2),x/(2*math.sqrt(3))} Тригонометрия и не такое может. Мне кажется можно было читаемость повысить другим способом. Вынести таблицу в отдельную локальную переменную или например добавить отступы в коде где их нет. А их нигде нет. Используешь по старинке math.pi/180 ? Так уже давно никто не делает. Почитай тут про библиотеку math, там есть такие полезные функции как math.deg и math.rad, они делают то что тебе надо. И да, если часто используешь какую то библиотеку, то желательно написать следующее в начале кода: local math = math По идее локальная переменная должна работать быстрее чем глобальная и это должно ускорить код.
  3. Учитель физики бы ругался трёхэтажным матом услышав эту фразу Что? 9.8 - это ускорение. А ускорение нужно складывать векторно! И причём тут масса? Весь код такой оригинальный
  4. Вообще неплохой вопрос. Я тоже когда то начинал набираться опыта с игры. Я решил эту проблему не делая игр которые бы требовали сохранения. Всё очень просто P.S. Судя по твоим вопросам, скорее всего ты плохо понимаешь чего хочешь и как это будет реализовываться. Хотя бы объяснил что за игра и про что она. Я вот полез в игроделы из-за того что люблю математические задачи, на которых и основывается физика и графика игр. Если ты не любишь математику, скорее всего тебе не место в этой отрасли.
  5. Аааааа, как? Зачем? Ты убиваешь во мне перфекциониста такими методами. Когда я тестировал и писал 3D рендеринг, я делал идеальный тетраэдр (моя любимая геометрическая фигура). Но ты меня убил вот этим "немного кривой". Так сложно использовать формулы? Так сложно логически составить формулы для составления точных точек тетраэдра? Учи тригонометрию. for i=1,60 do--вращение по Y+X+Z gl.transform({1,2,3,4},{1,0,0,0, 0,math.cos(angle),math.sin(angle),0, 0,-math.sin(angle),math.cos(angle),0, 0,0,0,1}) gl.update() os.sleep(0.03) end Правильное применение отступам? Ага, их как раз так и применяют
  6. Меня интересовала именно альтернатива счётчика, работает ли она лучше. Так что условия задачи я изменил.
  7. Добрый день, игроки. Возник вот какой вопрос. Какой из двух вариантов кода использовать. Первый я назвал "математическим" и выглядит он так: --local table={} for i=1, 20 do for j=1, 50 do local n = (i-1)*50+j --table[n]={i,j} ... <<Какой то код, использующий переменную n>> ... end end return table Второй я назвал вариантом "программиста" и выглядит он так: --local table={} local n=0 for i=1, 20 do for j=1, 50 do n=n+1 --table[n]={i,j} ... <<Какой то код, использующий переменную n>> ... end end return table Как мы видим, мы проходим по координатам и записываем их в таблицу вычисляем переменную n разными способами. Но разница состоит в том, использовать ли при этом лишнюю переменную счётчика или нет. А теперь напишите в комментариях, какой код лучше и почему.
  8. Давайте устроим конкурс на лучшее прибавление единицы! Мой вариант: x = x + x/x Ещё можно так: x = x + math.sin(math.pi/2) Или так: x = x + x^math.sin(math.pi())
  9. Интересно наблюдать, как автор темы ставит свой же ответ лучшим
  10. Лучше конечно же освобождать лишний слот для деталей. К тому же разобраться немного с математикой координат всегда на пользу. А то что не кто не использует в своих программах дефолтное улучшение, так с таким же успехом никто не использует улучшение поршня и прочие запрещённые улучшения. И что? Не кто не жалуется.
  11. Программа маленькая и простая. Для новичка это нормальная работа, но несомненно требуется оптимизация. Даже прочитать нормально код без отступов сложно. Не знаю как ты с таким подходом это написал. Так же запутаться легко. Я уже не говорю о больших программах, где без отступов мгновенно запутаешься и ничего не поймёшь, где развитые логические ветки. Например в алгоритме генерации комнат моей игры Cube. Там настолько сложный разветвлённый алгоритм сортировки таблицы (альтернатива рекурсии), что я сам лишний раз стараюсь в него не лесть. Убрать отступы там равносильно самоубийству. Совершенно потеряется представление о том что происходит.
  12. Отступы - это древняя традиция повышающая читаемость кода многократно. Не используешь отступы - пишешь некрасивый код. Вот код игры Flappy Block от newbie http://pastebin.com/JqedTE9u Посмотрев этот код я улучшил свои знания lua языка. Видишь отступы - они везде. Их все используют.
  13. robot = require("robot") component = require("component") sides = require("sides") inv = component.inventory_controller geo = component.geolyzer Глобальные переменные? Серьёзно? Зачем? function mine() robot.swingDown() robot.forward() robot.swingDown() robot.forward() robot.swingDown() robot.turnLeft() robot.forward() robot.swingDown() robot.turnLeft() robot.forward() robot.swingDown() robot.forward() robot.swingDown() robot.turnRight() robot.forward() robot.swingDown() robot.turnRight() robot.forward() robot.swingDown() robot.forward() robot.swingDown() robot.turnRight() robot.forward() robot.forward() robot.turnRight() robot.forward() robot.forward() robot.down() robot.turnRight() robot.turnRight() end Не одного отступа в коде найдено не было. Нехорошо
  14. ECS вообще не парится, у него нет секретов. Как то он рассказал в своём видео как гриферить роботом - через пару дней на сервере где он играл прикрыли роботов. А сам по себе вирус у нас не имеет смысла. Во первых, потому что приватить компы бессмысленно - админы всегда могут расприватить его. Во вторых потому что удалять файлы с компов так же бессмысленно. Нормальные игроки не будут хранить что то важное в одном экземпляре на компе на сервере - это глупо. Вот и выходит что вирус писать можно только ради развлечения. Смысла от него нуль всё ровно.
  15. Да это была первоапрельская шутка. Или ты всерьёз думаешь что существуют такие люди?
  16. Антивирус никому не нужен. Спроса на программу не будет. Нужно понимать что псевдовирус и всевдоантивирус - это просто развлечение. Если бы действительно была нужная программа, её бы давно уже написали опытные программисты.
  17. Тут следует понимать что написание библиотеки, либо другой опыт в программировании никогда не будет лишним. Велосипедостроительство == not плохо
  18. А программируешь хорошо? Мне кажется ты слишком сильно преувеличиваешь "опасность" вируса ECS. Если не ошибаюсь, ещё до него был игрок который распространял вирус по компам (ник засекречен) Но в любом случае это не чего не меняет. Как компы не несли никакой выгоды, так и не несут. Смысла на них писать вирусы кроме развлечения нет. А уж тем более антивирусы. Это бред бредовый. Мой тебе совет - пиши что нибудь полезное.
  19. Учти что в цикле обязательно должен быть os.sleep() или обычный event.pull(), так как именно в них обрабатываются event'ы.
  20. Сначала я хотел расписать тебе полностью как этим пользоваться, но вдруг понял что моя речь слишком слаба чтобы это сделать. Так что вот держи http://pastebin.com/bvxyh7fX Это код моей бета версии игры Open Clicker Просто промотай вниз и увидишь строку event.listen('touch', touch) Я привязал функцию touch к событию "touch" которая реагирует на клик экрана. Далее смотри функцию touch() Разберёшься - молодец. P.S. Скрины к игре не отображаются, потому что доступ к хостингу картинок нет. Сайт недоступен.
  21. Вынеси своё имя в переменную, например так local name = "danshat" Ты его и так часто используешь, а так другие игроки, да и ты сам сможешь легко менять ник в одном месте, не бегая по коду. Смысл от функции render(timearg) если она всегда выводит true и ничего не делает? В добавок можешь сократить написание local note = lrequire("note").play В начале программы можешь очистить экран командой require("term").clear И в окончание скажу что return true не обязательно писать. Можно просто return, или в случае с render(timearg) вообще не писать return
×
×
  • Создать...