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

qwertyMAN

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

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

  • Посещение

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

    47

Сообщения, опубликованные пользователем qwertyMAN


  1.  

     

    Господь с вами

     

     

    YaGSiTmCRTs.jpg

    hqdefault.jpg

     

     

    Лучше конечно же освобождать лишний слот для деталей. К тому же разобраться немного с математикой координат всегда на пользу.

    А то что не кто не использует в своих программах дефолтное улучшение, так с таким же успехом никто не использует улучшение поршня и прочие запрещённые улучшения. И что? Не кто не жалуется.


  2. Программа маленькая и простая. Для новичка это нормальная работа, но несомненно требуется оптимизация.

    Даже прочитать нормально код без отступов сложно. Не знаю как ты с таким подходом это написал. Так же запутаться легко.

    Я уже не говорю о больших программах, где без отступов мгновенно запутаешься и ничего не поймёшь, где развитые логические ветки. Например в алгоритме генерации комнат моей игры Cube. Там настолько сложный разветвлённый алгоритм сортировки таблицы (альтернатива рекурсии), что я сам лишний раз стараюсь в него не лесть. Убрать отступы там равносильно самоубийству. Совершенно потеряется представление о том что происходит.


  3. Глобальные исправлю. А зачем отступы делать? Разве в ифах и циклах.

    Отступы - это древняя традиция повышающая читаемость кода многократно. Не используешь отступы - пишешь некрасивый код.

    Вот код игры Flappy Block от newbie http://pastebin.com/JqedTE9u

    Посмотрев этот код я улучшил свои знания lua языка. Видишь отступы - они везде. Их все используют.

    • Нравится 1

  4. 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 

    Не одного отступа в коде найдено не было. Нехорошо  :angry:

    • Нравится 1

  5.  

     

    до тех пор пока не "спалятся" со своим творением

    ECS вообще не парится, у него нет секретов. Как то он рассказал в своём видео как гриферить роботом - через пару дней на сервере где он играл прикрыли роботов.

     

    А сам по себе вирус у нас не имеет смысла. Во первых, потому что приватить компы бессмысленно - админы всегда могут расприватить его. Во вторых потому что удалять файлы с компов так же бессмысленно. Нормальные игроки не будут хранить что то важное в одном экземпляре на компе на сервере - это глупо. Вот и выходит что вирус писать можно только ради развлечения. Смысла от него нуль всё ровно.


  6.  

     

    Теперь буду писать

    Антивирус никому не нужен. Спроса на программу не будет. Нужно понимать что псевдовирус и всевдоантивирус - это просто развлечение.

    Если бы действительно была нужная программа, её бы давно уже написали опытные программисты.


  7. Для начала надо разобраться, кто ты, велосипедист или нет.

     

    Тут следует понимать что написание библиотеки, либо другой опыт в программировании никогда не будет лишним.

    Велосипедостроительство == not плохо


  8. А программируешь хорошо?


    Мне кажется ты слишком сильно преувеличиваешь "опасность" вируса ECS. Если не ошибаюсь, ещё до него был игрок который распространял вирус по компам (ник засекречен)

    Но в любом случае это не чего не меняет. Как компы не несли никакой выгоды, так и не несут. Смысла на них писать вирусы кроме развлечения нет. А уж тем более антивирусы. Это бред бредовый.


    Мой тебе совет - пиши что нибудь полезное. 

    • Нравится 1

  9. Ну как я и предполагал, передаются в функцию и отбрасываем нижними подчеркиваниями. Спасибо. Завтра проверю на деле.

    Учти что в цикле обязательно должен быть os.sleep() или обычный event.pull(), так как именно в них обрабатываются event'ы.

    • Нравится 1

  10. Не понял, как пользоваться. В гугле очень туманные ответы на этот вопрос на зарубежном говоре. Если можно привязать функцию, как ей передать параметры от события? или они сами передаются? и отсеивать в самой функции эти параметры знаками "_" ?

    Сначала я хотел расписать тебе полностью как этим пользоваться, но вдруг понял что моя речь слишком слаба чтобы это сделать.

    Так что вот держи http://pastebin.com/bvxyh7fX

    Это код моей бета версии игры Open Clicker

    Просто промотай вниз и увидишь строку 

    event.listen('touch', touch)
    

    Я привязал функцию touch к событию "touch" которая реагирует на клик экрана.

    Далее смотри функцию touch()

    Разберёшься - молодец.

     

    P.S. Скрины к игре не отображаются, потому что доступ к хостингу картинок нет. Сайт недоступен.

    • Нравится 1

  11. Есть следующий код:

    ...

    Вынеси своё имя в переменную, например так local name = "danshat"

    Ты его и так часто используешь, а так другие игроки, да и ты сам сможешь легко менять ник в одном месте, не бегая по коду.

    Смысл от функции render(timearg) если она всегда выводит true и ничего не делает?

    В добавок можешь сократить написание local note = lrequire("note").play

    В начале программы можешь очистить экран командой require("term").clear

     

    И в окончание скажу что return true не обязательно писать. Можно просто return, или в случае с render(timearg) вообще не писать return

    • Нравится 1

  12. Добрый день игроки.

     

    Я хотел бы узнать, как опытные игроки проводят эксперименты по определению какой кусок кода работает лучше.

     

    А ещё хотел бы узнать, какой оператор будет работать быстрее: > или >=

    Например:

    y = x>13 and x<17

    и

    y = x>=14 and x<=16

    А может ещё быстрее работает оператор == ?

    Например:

    y = x==14 or y==15 or y==16

  13. Для примера возьмем имя "myfirstlib".

     

    Я бы написал my_first_lib чтобы не делать трудно читаемый текст, ну или на крайний случай MyFirstLib, но некак не myfirstlib.

    Отличный гайд, но по такому случаю мог бы рассказать и про dofile заодно. Как я понимаю у неё схожее применение.

     

    Кстати, допиши чтобы игроки глобальные переменные не создавали в библиотеках. А то ошибки посыпятся у игроков.


  14. Я думаю, функцию в "библиотеки" надо сделать локальной.

    Потом разобраться, для каких таких целей создаётся таблица из 2^8 значений.

    Есть и другие способы использования цветов. Например сделать формулу генерирующую цвет по введённым данным, например color = func(r,g,b), где r,g и b от 0 до 3 например.

    Или сделать тройной цикл, который бы генерировал и сохранял цвета в одну таблицу. Можно было бы даже упорядочить эту таблицу, которая бы могла выдавать нам нужный цвет по введённым данным color = color_table[r][g]

     

    В любом случае я против этой огромной таблицы. Да и не пойму какой был смысл был её создавать вручную.

     

    P.S. Нео прав, библиотека имеет конкретные критерии по которым она имеет право называть библиотекой. Во первых, это создание локальной переменной с типом данных - таблица. Далее функции присущи этой таблице и наконец вывод информации через return таблица.

    А так же главное требование: все функции записанные в таблицу должны иметь общее назначение. Например, если ты пишешь функции по конвертации систем счисления, то ты не должен туда записывать функции для управления роботом. Для таких целей следует писать отдельную библиотеку.

    Библиотека не должна содержать глобальных переменных. У тебя например там создаётся глобальная функция. Глобальные переменные в большинстве своём - зло.

    Так же библиотека не должна содержать прочих исполняемых компонентов вне функций. Например просить ввести пароль вне функций или напечатать что то. То есть когда ты прогружаешь библиотеку, она не должна при этом никак влиять на код программы, кроме того что возвращает таблицу. Если ты внутри неё напишешь такую глупость print("библиотека загружена") вне функций, это будет большой минус. Так как библиотеки имеют такой свойство как загрузка на любом движке с поддержкой языка на котором они написаны.

    Например я могу взять свою библиотеку по конвертации систем счисления и использовать в своей игре на другом движке.

    Конечно можно делать библиотеки заточеные под один конкретный движок, например под OpenOS, но лучше этого не делать если нет острой необходимости.

    • Нравится 1

  15. И все равно мне не ясны for в этой либе, особенно второй. Что за for _, k.... "_" - что это?

     

    Плюс если я использую таблицу где кейсы простые цифры, а значения - шестнадцатиричные 0x000000 и т.д. Все равно работать будет? :D

    Вообще я сейчас понял для чего служит эта библиотека. Она видимо для работы с цветными проводами из других модов.

    То есть с цветами в OC эта библиотека вообще не связана.

     

    Ну ладно, теперь о самом коде. Там стоит 2 цикла. Что делает такая форма цикла for можешь подробнее почитать в интернете, скажу лишь коротко. Эта форма перебирает все значения таблицы и выводит пару: ключ-значение.

    Во втором цикле есть переменная _ (нижний знак подчёркивания). Обычно её нигде не используют, это переменная - "мусорка". Когда функция возвращает 3 значения, а первое и второе нам не нужно, мы пишем _,_, x = func() Таким образом не забиваем лишние переменные лишней информацией.

    • Нравится 1

  16. local table = {}

    table[14] = "red"

    table.red = 14

     

    Если я еще не забыл луа....

    Да ну в пень эту библиотеку.

    Я всегда заношу в таблицу только те цвета что мне нужны. Например вот код из игры Open Clicker:

    local color = {
        back=0x000000, --цвет фона по умолчанию
        foreg=0xffffff, --цвет текста по умолчанию
        cookie=0xffcc33, --далее идут прочие цвета различных деталей. Всё это находится вначале программы, позволяя легко настроить то что нужно пользователю, не роясь в коде в поисках нужной переменной
        chocolate=0x663300,
        scoreboard=0xaaaaaa,
        work_cash=0x6699ff,
        work=0xffcc33,
        exit=0xff0000,
        reboot=0xffcc33,
        quit_cash_1=0x00ff00,
        quit_cash_2=0xff0000
    }

  17. Ходил я по стандартным API OC и нашел либу colors. Там можно обратиться к таблице colors.red и получить ее значение и наоборот - ввести colors[14] и получить red. Хотелось бы узнать как такое осуществляется. Не тупо же две таблицы одна из которых инверсированная по ключам и значениям первой.

    Зайди в папку lib при помощи команды cd lib и посмотри код набрав edit color.lua

    Можешь также в этой папке набрать ls, чтобы посмотреть список других библиотек

    И в следующий раз изучи повнимательнее компоненты OpenOS - много чего интересного найдёшь просто от прогулки по системным файлам.

     

    P.S. Насколько я знаю, понятия "двухсторонние таблицы" не существует. Бывают двухмерные, трёхмерные и прочие таблицы, но двухсторонних как то не встречал.

    И да, там не две таблицы, а одна. Библиотека возвращает лишь 1 таблицу color


  18. max=max.energy
    test=energy
    test=test*100/max
    print(test.."%")
    

    Так?

     

    В принципе всё верно. Например в игре игрок должен вырасти до нужного размера названного target_mass, у нас есть переменная в которой записана масса игрока mass. Как найти и отобразить проценты?

    local target_mass=10^6 --цель миссии набрать такую массу
    local mass=100 --стартовая масса в игре, которая может изменяться
    ... --всякий код игры
    local procent=mass*100/target_mass --узнаём процент
    print(procent .. "%") --отображаем эту информацию
    

    В игре про бактерий помниться у меня была шкала показывающая наглядно этот процент, которая меня цвет от красного к зелёному плавно.

    А вообще этому в школе учат - как получить проценты. Нечего сложного тут нет.

    • Нравится 1

  19. Но в OC же поддерживается глубина цвета 8 байт. То-есть для местных мониторов гораздо меньше цветов? Как тогда определить какие поддерживаются а какие нет? (Понятно, что система будет "округлять" цвет до нужного, но все же хотелось бы узнать какие именно используются и их количество.

    Взяв виндосовский пэинт и сделав пару скринов, могу сказать что примерно у монитора 2 уровня шаг составляет 0x33. Например цвета 0x6633cc 0xff0099 и подобные.


  20. стати, есть ли какая-нибудь информация о 0x000000 формате цвета.

    Не знаю. В гугле по этому поводу не могу составить правильно запрос чтобы тебе дать ссылку, так что придётся так рассказать.

    Хотя нет, не придётся. Фингер в ту же секунду уже рассказал, так что спасибо ему  :)

     

     

     

    Мне просто как-то привычнее, чтобы настройки находились отдельно от всего кода.

     

    Пока что в обычных прогах это бесполезно и не понятно зачем. Пользователям думаешь будет приятно, если 10 твоих прог будут создавать 10 конфигов и забивать ими комп? Хотя всё прекрасно помещается в программу.

     

    Странно, но чем больше я изучаю программирование, тем меньше у меня цели. Надеюсь, до того момента когда затеешь писать граф оболочку, у тебя будет много желания и сил для этого.

    ...

    Только что заметил что ты не рассказал про RGBA, записывается как 0xRRGGBBAA. Последняя цифра A - это прозрачность. 32-бит, как и у всех мониторов.

    И луа видя цифру начинающуюся с 0x, автоматически переводит её в десятичный вид. То есть написав x = 0xF при print(x) получим 15.

    И ещё, вот такой текст можно перевести в число таким образом tonumber("0x".."ff".."ff".."00"). То есть мы даём три переменные (rgb), складываем их как текст и при помощи tonumber() и переводим в hex число.


  21. Цель игры, как бы, убить время. Любой игры. Особенно кликеров.

    Мне кажется подобные игры рассчитаны на радости прокачки, покупки. А так больше нечем не могу объяснить популярность подобных игр.

    Сколько кликеров перевидал, видел и те что ставили цель - уничтожить что то, достигнуть. Но тем не менее везде было странное чувство. Как будто чего то не хватает. Какой то нестабильный жанр игр. Не понятно что, зачем и почему делаешь. Непонятно когда завершать игру. Непонятно вообще зачем эта игра была создана.

     

    Насчёт убийства игр нет, тут я не согласен. Ты играешь стратегию - у тебя чёткая цель, отработать тактику, думать, совершать хитрые манёвры и так далее. Играешь в гонки - анализируешь как лучше пройти поворот, когда затормозить чтобы в поворот войти, как стартовать и прочее. В любой из игр жанров есть конкретный ряд целей - повысить скилл игры. Да и вообще это больше ради развлечения чем ради убийства времени. В Морровинд так вообще играют как правило из-за атмосферы игры. Потому что нравится, есть интерес и прочее. А что есть в кликерах? Скилл никакой набить нельзя, они не заставляют задуматься. И сюжетом интересным не могут занять. И цели собственно в них никакой нет (правда в некоторых, не классических есть, но это не меняет погоды).

     

    Если бы все игры делались с учётом золотого сечения, кликеры не входили бы в их число  :)

×
×
  • Создать...