1. C# / Говнокод #27553

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    static public (int, int) FirstPosition(int figure, int rotate)
            {
                int x = 0;
                int y = 0;
                if ((figure == 1) && (rotate == 1)) { x = 6; y = 2; }
                if ((figure == 1) && (rotate == 2)) { x = 6; y = 3; }
                if ((figure == 2) && (rotate == 1)) { x = 6; y = 2; }
                if ((figure == 2) && (rotate == 2)) { x = 6; y = 3; }
                if ((figure == 3) && (rotate == 1)) { x = 6; y = 2; }
                if ((figure == 3) && (rotate == 2)) { x = 6; y = 3; }
                if ((figure == 4) && (rotate == 1)) { x = 6; y = 2; }
                if ((figure == 4) && (rotate == 2)) { x = 6; y = 2; }
                if ((figure == 4) && (rotate == 3)) { x = 6; y = 2; }
                if ((figure == 4) && (rotate == 4)) { x = 6; y = 3; }
                if ((figure == 5) && (rotate == 1)) { x = 6; y = 2; }
                if ((figure == 5) && (rotate == 2)) { x = 6; y = 3; }
                if ((figure == 5) && (rotate == 3)) { x = 6; y = 2; }
                if ((figure == 5) && (rotate == 4)) { x = 6; y = 2; }
                if ((figure == 6) && (rotate == 1)) { x = 6; y = 3; }
                if ((figure == 6) && (rotate == 2)) { x = 6; y = 2; }
                if ((figure == 6) && (rotate == 3)) { x = 6; y = 2; }
                if ((figure == 6) && (rotate == 4)) { x = 6; y = 2; }
                if ((figure == 7) && (rotate == 1)) { x = 6; y = 3; }
                return (x, y);
            }                           //НАЧАЛЬНАЯ ПОЗИЦИЯ ЦЕНТРА ФИГУРЫ
            static public int[,] Position(int figure, int rotate, int[,] a, int x, int y)
            {
                if ((figure == 1) && (rotate == 1)) { a[x, y - 2] = 1; a[x, y - 1] = 1; a[x, y] = 1; a[x, y + 1] = 1; }
                if ((figure == 1) && (rotate == 2)) { a[x - 1, y] = 1; a[x, y] = 1; a[x + 1, y] = 1; a[x + 2, y] = 1; }
                if ((figure == 2) && (rotate == 1)) { a[x - 1, y - 1] = 1; a[x - 1, y] = 1; a[x, y] = 1; a[x, y + 1] = 1; }
                if ((figure == 2) && (rotate == 2)) { a[x - 1, y] = 1; a[x, y] = 1; a[x, y - 1] = 1; a[x + 1, y - 1] = 1; }
                if ((figure == 3) && (rotate == 1)) { a[x + 1, y - 1] = 1; a[x + 1, y] = 1; a[x, y] = 1; a[x, y + 1] = 1; }
                if ((figure == 3) && (rotate == 2)) { a[x - 1, y - 1] = 1; a[x, y - 1] = 1; a[x, y] = 1; a[x + 1, y] = 1; }
                if ((figure == 4) && (rotate == 1)) { a[x, y - 1] = 1; a[x, y] = 1; a[x, y + 1] = 1; a[x + 1, y + 1] = 1; }
                if ((figure == 4) && (rotate == 2)) { a[x + 1, y] = 1; a[x, y] = 1; a[x - 1, y] = 1; a[x - 1, y + 1] = 1; }
                if ((figure == 4) && (rotate == 3)) { a[x - 1, y - 1] = 1; a[x, y - 1] = 1; a[x, y] = 1; a[x, y + 1] = 1; }
                if ((figure == 4) && (rotate == 4)) { a[x - 1, y] = 1; a[x, y] = 1; a[x + 1, y] = 1; a[x + 1, y - 1] = 1; }
                if ((figure == 5) && (rotate == 1)) { a[x, y - 1] = 1; a[x, y] = 1; a[x, y + 1] = 1; a[x - 1, y + 1] = 1; }
                if ((figure == 5) && (rotate == 2)) { a[x - 1, y - 1] = 1; a[x - 1, y] = 1; a[x, y] = 1; a[x + 1, y] = 1; }
                if ((figure == 5) && (rotate == 3)) { a[x + 1, y - 1] = 1; a[x, y - 1] = 1; a[x, y] = 1; a[x, y + 1] = 1; }
                if ((figure == 5) && (rotate == 4)) { a[x - 1, y] = 1; a[x, y] = 1; a[x + 1, y] = 1; a[x + 1, y + 1] = 1; }
                if ((figure == 6) && (rotate == 1)) { a[x, y] = 1; a[x, y - 1] = 1; a[x - 1, y] = 1; a[x + 1, y] = 1; }
                if ((figure == 6) && (rotate == 2)) { a[x, y - 1] = 1; a[x + 1, y] = 1; a[x, y + 1] = 1; a[x, y] = 1; }
                if ((figure == 6) && (rotate == 3)) { a[x - 1, y] = 1; a[x, y + 1] = 1; a[x + 1, y] = 1; a[x, y] = 1; }
                if ((figure == 6) && (rotate == 4)) { a[x, y - 1] = 1; a[x - 1, y] = 1; a[x, y + 1] = 1; a[x, y] = 1; }
                if ((figure == 7) && (rotate == 1)) { a[x, y] = 1; a[x + 1, y] = 1; a[x + 1, y - 1] = 1; a[x, y - 1] = 1; }
                return (a);
            }             //ПОСТРОЕНИЕ ФИГУРЫ ОТНОСИТЕЛЬНО ЕЁ ЦЕНТРА

    Поворот тетрисных фигур

    Запостил: VladimirM4K, 08 Августа 2021

    Комментарии (52) RSS

    • Все эти говноповороты можно было б накодогенерировать в компилтайме. Хотя тут говношарп, где вроде нет никаких таких фич для нормального метапрограммирования, так что нужна кодогенерация.
      Ответить
      • учи матчасть ... есть T4
        Ответить
      • https://docs.microsoft.com/en-us/visualstudio/modeling/code-generation-and-t4-text-templates?view=vs-2019
        Ответить
        • > In Visual Studio, a T4 text template

          А не в "Visual Studio" эта хуйня не работает, да? Почему б тогда не взять некий говнопрепроцессор, чтобы не треботвать от всех иметь у себя говностудию чтобы это собрать?
          Ответить
          • Для «Mono» есть такая питушня:
            https://github.com/mono/t4
            Ответить
            • Т.е. по-сути это говнопрепроцессор, который вклинивается в код и чего-то туда набрасывает, ничего про сам код не зная? И чем это лучше в сравнении с ситуацией, если я код на сишке через PHP так буду генерировать?
              Ответить
              • Ну да, банальный препроцессор, работающий по принципу «найти макрос и заменить».

                Кому-то явно не хватало сишного препроцессора в «.Net», состряпали ему замену.
                Ответить
                • А этот препроцессор может насрать новый макрос для этого препроцессора, который он потом опять обработает и опять раскроет? Примерно как в https://govnokod.ru/27507
                  Ответить
                  • в си вся система на макросах написанна - поэтому код тупо не поддается анализу. такого нет в С#
                    Ответить
                    • Какая такая "вся система"? Вся система чего?

                      Чьему анализу не поддается? Анализу каких-то анскильных IDE? Так вообще-то это проблема IDE, что они этого не осиливают. Всякие PVS-студии вполне могут это анализировать
                      Ответить
                      • IDE не могут раскрыть макросы, потому что не знают какие параметры ты передашь при компиляции
                        Ответить
                        • Знают. Они CMakeLists смотрят. CLion точно раскрывает.
                          Ответить
                          • А если у тебя несколько видов сборки?
                            Ответить
                            • Какая выбрана сейчас, ту и раскрывает.
                              Ответить
                              • А если у меня стоит проверка на версию компилятора, например?
                                Ответить
                                • В "СиЛьве" есть кнопочка "Run" (зелёный треугольник). Также есть подсветка синтаксиса с раскрытием макросов. Почему бы им одинаково не работать? Я уверен, так и работает.
                                  Ответить
                                  • надо проверить. Макросы через add_definitions вроде работают, за кнопочку не скажу
                                    Ответить
                            • Значит можно анализировать для всех возможных видов.
                              Ответить
                        • Вообще-то могут, если IDE известно, какие параметры я передаю при компиляции.
                          Ответить
          • Думаю что как-то работает, иначе как её на CI запускать?
            Ответить
        • Те же миксины в D это фича языка, а не фича какой-то проприетарной win-only говноIDE
          Ответить
      • В шарпе есть препроцессор, это не жаба.

        Но на самом деле не нужно ничего генерить, а нужно просто заполнить структуру, и по ней работать
        Ответить
        • Вот да, тут хватит статических матриц. Стольких сравнений не будет, сразу будет выбор нужной ветки по индексам.
          Ответить
    • Если ты хочешь знать что такое агрессивное продвижение ЯП зайди на форум поехавших паскалистов или не дай бог на форум фортрана, там тебе сразу обьяснят кто ты по жизни
      Ответить
    • Чем то мне это все напоминает древний движ Java vs C++, где в заранее подготовленном синтетическом куске кода с циклом и прогретой JVM делался замер где Java показывала результат чуть ли не 1.5 раза быстрее C++, но при этом все знали что она тормозит...
      Лозунг Java тех лет - "Не тормозит!"
      Лозунг Rust наше время - "Дыр нет!"

      Но все все знают... кароче времена меняются на хоть что то постоянное
      Ответить
      • --Джава выделяет память быстрее чем С++
        --А потом приходит GC, да?
        --Ну это уже другой вопрос
        Ответить
        • Где-то на «ГК» обсуждали специальную сборку «Йажи» без GC. Вообще без освобождения данных. Её просто перезапускают, когда память заканчивается.
          Ответить
          • Именно поэтому я за «PHP».
            Ответить
          • Да не сборку, а вроде просто такой GC включался опцией
            Шипилёша про него писал

            Там память выделыется сразу, и никогда новой не берут (почти как у j123, лол)
            А если память течет, то процесс перезапускают (и дают программисту дамп и пиздюлей чтобы правил)
            Ответить
          • прикольная идея... а откудава данные потом берут после перегрузки. из сервера монгодб?
            Ответить
            • Например да.

              Вообще сервер должен быть готовым к перезапуску обычно, всякое может случиться
              Ответить
            • Перекомпилириуют программу с новыми данными
              Ответить
    • На помойках обычно 2 очереди, одна за роутерами, вторая - перепрошиватся на OpenWRT.
      Если заказывать роутер через инет, то магаз за свой счет перепрошивает и присылает перепрошитый.
      Далее к этому роутеру прикрепляется специальный индиго-разрабоадмин который тщательно каждый день отслеживает новости об уязвимостях в OpenWRT и в случае обнаружения оной немедленно фиксит и накатывает апдейт.
      Кстати, забыл сказать, что в любой магазе в отделе роутеров висит большой мигающий плакат с надписью: "Уважаемые покупатели, после покупки роутера рекомендуем незамедлительно перепрошить его на OpenWRT".
      Ответить
      • В России все домашние роутеры делятся на две категории
        * Keenetic
        * Какое-то говно на соплях и навозе, которое не нужно

        OpenWRT можно установить только на вторых
        Ответить
        • Та и кинетик тоже в общем-то недалеко ушёл
          Ответить
          • Почему?

            В Украине есть кинетик, кстати?
            Ответить
            • Откуда я знаю? Так делают его
              Ответить
            • Были какие-то траблы с тем, что устройства отключались от вафляя сами по себе на одной из сеток
              Ответить
              • Какой багор )))
                Ответить
              • Было такое если включить https://help.keenetic.com/hc/ru/articles/360009149400-Airtime-Fairness

                Это говно нужно сразу отключать
                Ответить
        • «Кинетик» — это «Зухель» только для продажи в РФ или я его с чем-то путаю?

          К слову, «OpenWRT» портировали далеко не на все модели.
          Ответить
          • Да, именно так.

            По помему имхо он самый стабильный, и при этом очень гибкий.
            Asus тоже хороший, но кинетик кажется мне более крепким

            Какие-то люди домой микротики покупают, но это очень на любителя
            Ответить
          • «Зухель» — сам по себе бренд для нетребовательных СНГ-ниггеров, которые покупают по инерции из-за Omni Pro
            Ответить
            • Зухель это тайваньская компания, продающаяся по всему миру, в тч и США
              Ответить
              • Погугли, про них никто не знает вне глобуса СНГ. В принципе, ты и так всё видел в осуждении портков OpenWRT.
                Ответить
                • We have data on 2,007 companies that use Zyxel. The companies using Zyxel are most often found in United States and in the Telecommunications industry. Zyxel is most often used by companies with 10-50 employees and 1M-10M dollars in revenue. Our data for Zyxel usage goes back as far as 4 years and 10 months.

                  8% of Zyxel customers are in United States, 11% are in United Kingdom, 6% are in India and 6% are in France.

                  https://enlyft.com/tech/products/zyxel
                  Ответить
                  • То есть в Штатах меньше 200 компаний используют зухель?
                    Ответить
                  • Даже для индусов сомнительная хрень, очень покпоказательно.
                    Ответить

    Добавить комментарий