1. Pascal / Говнокод #26436

    +5

    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
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    begin
                     G4.Caption:='X';
                     if G5.Caption='' then
                     begin
                       G5.Caption:='X';
                       if G6.Caption='' then
                       begin
                         G6.Caption:='X';
                         if G7.Caption='' then
                         begin
                           G7.Caption:='X';
                           if G8.Caption='' then G8.Caption:='X' else
                           if sg8=1 then
                              G8.Font.Style:=[fsBold,fsStrikeOut];
                         end else
                         if sg7=1 then
                            G7.Font.Style:=[fsBold,fsStrikeOut];
                       end else
                       if sg6=1 then
                          G6.Font.Style:=[fsBold,fsStrikeOut];
                     end else
                     if sg5=1 then
                        G5.Font.Style:=[fsBold,fsStrikeOut];
                   end else
                   if sg4=1 then
                      G4.Font.Style:=[fsBold,fsStrikeOut];
                 end else
                 if sg3=1 then
                    G3.Font.Style:=[fsBold,fsStrikeOut];
               end else
               if sg2=1 then
                  G2.Font.Style:=[fsBold,fsStrikeOut];
               if H2.Caption='' then H2.Caption:='X' else
               if sh2=1 then H2.Font.Style:=[fsBold,fsStrikeOut];
               if F2.Caption='' then
               begin
                 F2.Caption:='X';
                 if E3.Caption='' then
                 begin
                   E3.Caption:='X';
                   if D4.Caption='' then
                   begin
                     D4.Caption:='X';
                     if C5.Caption='' then
                     begin
                       C5.Caption:='X';
                       if B6.Caption='' then
                       begin
                         B6.Caption:='X';
                         if A7.Caption='' then A7.Caption:='X' else
                         if sa7=1 then
                         A7.Font.Style:=[fsBold,fsStrikeOut];
                       end else
                       if sb6=1 then
                       B6.Font.Style:=[fsBold,fsStrikeOut];
                     end else
                     if sc5=1 then
                     C5.Font.Style:=[fsBold,fsStrikeOut];
                   end else
                   if sd4=1 then
                   D4.Font.Style:=[fsBold,fsStrikeOut];
                 end else
                 if se3=1 then
                 E3.Font.Style:=[fsBold,fsStrikeOut];
               end else
               if sf2=1 then
               F2.Font.Style:=[fsBold,fsStrikeOut];
             end;
          6: begin //Король
        {E1}   if ((se1=1) and not ((E1.Caption<>'Ферзь') or (E1.Caption<>'Ладья') or (E1.Caption<>'Король')) or
        {D1}   ((sd1=1) and not ((E1.Caption='') and ((D1.Caption='Ферзь') or (D1.Caption='Ладья')))) or
        {C1}   ((sc1=1) and not (((E1.Caption='') and (D1.Caption='')) and ((C1.Caption='Ферзь') or (C1.Caption='Ладья')))) or
        {B1}   ((sb1=1) and not (((E1.Caption='') and (D1.Caption='') and (C1.Caption='')) and ((B1.Caption='Ферзь') or (B1.Caption='Ладья')))) or
        {A1}   ((sa1=1) and not (((E1.Caption='') and (D1.Caption='') and (C1.Caption='') and (B1.Caption='')) and ((A1.Caption='Ферзь') or (A1.Caption='Ладья')))) or
        {E2}   ((se2=1) and not ((E2.Caption='Слон') or (E2.Caption='Ферзь') or (E2.Caption='Пешка') or (E2.Caption='Король'))) or
        //ПРОДОВЖИТИ
        {D3}   ((sd3=1) and not ((E2.Caption='') and ((D3.Caption='Ферзь') or (D3.Caption='Слон')))) or
        {C4}   ((sc4=1) and not (((E2.Caption='') and (D3.Caption='')) and ((C4.Caption='Ферзь') or (C4.Caption='Слон')))) or
        {B5}   ((sb5=1) and not (((E2.Caption='') and (D3.Caption='') and (C4.Caption='')) and ((B5.Caption='Ферзь') or (B5.Caption='Слон')))) or
        {A6}   ((sa6=1) and not (((E2.Caption='') and (D3.Caption='') and (C4.Caption='') and (B5.Caption='')) and ((A6.Caption='Ферзь') or (A6.Caption='Ладья')))) or
        {F2}   ((sf2=1) and not (E2.Caption='Ладья') or (E2.Caption='Ферзь')) or
        {F3}   ((sf3=1) and not ((F2.Caption='') and ((F3.Caption='Ферзь') or (F3.Caption='Ладья')))) or
        {F4}   ((sf4=1) and not (((F2.Caption='') and (F3.Caption='')) and ((F4.Caption='Ферзь') or (F4.Caption='Ладья')))) or
        {F5}   ((sf5=1) and not (((F2.Caption='') and (F3.Caption='') and (F4.Caption='')) and ((F5.Caption='Ферзь') or (F5.Caption='Ладья')))) or
        {F6}   ((sf6=1) and not (((F2.Caption='') and (F3.Caption='') and (F4.Caption='') and (F5.Caption='')) and ((F6.Caption='Ферзь') or (F6.Caption='Ладья')))) or
        {F7}   ((sf7=1) and not (((F2.Caption='') and (F3.Caption='') and (F4.Caption='') and (F5.Caption='') and (F6.Caption='')) and ((F7.Caption='Ферзь') or (F7.Caption='Ладья')))) or
        {F8}   ((sf8=1) and not (((F2.Caption='') and (F3.Caption='') and (F4.Caption='') and (F5.Caption='') and (F6.Caption='') and (F7.Caption='')) and ((F8.Caption='Ферзь') or (F8.Caption='Ладья')))) or
        {G2}   ((sg2=1) and not (G2.Caption='Ферзь') or (G2.Caption='Слон')) or
        {H3}   ((sh3=1) and not ((G2.Caption='') and ((H3.Caption='Ферзь') or (H3.Caption='Слон')))) or
        {H1}   ((sh1=1) and not (H1.Caption'Ферзь') or (H1.Caption='Слон')) or
       {Кони}  ((sh2=1) and not (H2.Caption='Конь')) or ((sg3=1) and not (G3.Caption='Конь')) or  ((se3=1) and not (E3.Caption='Конь')) or  ((sd2=1) and not(D2.Caption='Конь'))
               ) then if (F1.Caption='') then F1.Caption:='X' else
               if sf1=1 then F1.Font.Style:=[fsBold,fsStrikeOut];
             end;

    Как-то на первом или втором курсе недоунивера возникло желание сделать шахматы в ООП на Паскале. Решил закодить 64 кнопки (8*8 поле). Сделал переменные для идентификации хода черных/белых, для 2 режимов, в первом из которых кликаешь на свою фигуру (надпись на кнопке) и тебе показывают доступные ходы ею (Х куда можно поставить фигуру, подчеркнутое название вражеской фигуры при возможность её забрать). Ты кликаешь, поле очищается от подсказок, фигура перемещается, проверка на шах/мат (ад), ход передается другому цвету фигур (Жирное начертание для определения) и режим взаимодействия с игровым полем опять переходит в выбор фигуры. Теоретически закодировав каждую кнопку на все возможные события шахматы были бы закончены полностью. Вот только спустя окончания кодировки первой кнопки я заYAYлся и забросил ибо говнокод вышел в 1000 строк на одну YAYдь кнопку. Разумеется, показать могу лишь часть

    Запостил: Zick, 12 Февраля 2020

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

    • Интересно, сколько времени займёт его реализация
      Ответить
      • В таком стиле реализация займет много времени и места)
        Возможно, стоит переписать
        Ответить
    • Использовать в качестве хранилища данных элементы GUI и производить поиск по Caption — то ещё говно. Если использовать не для шахмат, а для какой-нибудь игры с кучей мелких деталей, тормоза обеспечены.
      Ответить
    • > YAY
      Какой кернинг )))

      YAYAVAYAYAWAYAYAVAYAY
      Ответить
      • Ява, ява
        Не дрожи, шалава!
        Ответить
        • Яву, Яву, скачал я нахаляву.
          Ответить
          • Яву хуй скачаешь ещзе, там надо логиница
            Ответить
            • apt install openjdk-8-jdk openjdk-8-jre
              dnf install java-latest-openjdk.x86_64
              Ответить
              • прыщеблядские проблемы. Попробуй на винде это сделать https://www.oracle.com/java/technologies/javase-jdk13-downloads.html

                впрочем, логиница правда не надо
                но надо принимать соглашение.

                >8
                блядь, у нас уже давно 11-я

                >dnf
                А у тебя центось восьмая?
                Ответить
                • > логиница правда не надо
                  Пердолиться с регистрацией надо чтобы скачать старые версии.

                  > блядь, у нас уже давно 11-я
                  Повезло тебе, не ебёшься с легаси говном, которое только на восьмой идёт. В отдельных, печальных случаях — на седьмой.
                  Ответить
                • >прыщеблядские проблемы. Попробуй на винде это сделать

                  Как раз это виндопроблемы — собирать гавняшки по интернетам.
                  В любом линуксе это делается 1-2 строчками.

                  >блядь, у нас уже давно 11-я
                  Давно уже 13я. Просто в офф. репах дермиана как обычно лежит говно мамонта. (Когда я в последний раз ставил)

                  These open-source builds are provided under the GNU General Public License, version 2, with the Classpath Exception.

                  Linux / x64 tar.gz (sha256) 195812001
                  macOS / x64 tar.gz (sha256) 189969691
                  Windows / x64 zip (sha256) 195969512

                  https://jdk.java.net/13/
                  Ответить
                  • > собирать гавняшки по интернетам.
                    Кстати, в десятку завезли таки магазин. Но там нету нихуя.
                    Ответить
                  • >> Просто в офф. репах дермиана как обычно лежит говно мамонта.

                    Это хлеб!
                    Ответить
                    • Это не хлеб, просто debian -- очень стабльная ОС.

                      Нельзя использовать в продакшене софт, которому меньше пяти лет, там могут быть баги.
                      Ответить
                      • Я слышал забавные истории о том, как в организациях использовали IE6, потому что более новые версии не были проверены службой безопасности.
                        Ответить
                        • Всегда было интересно: а как эти безопасники проверяют проприетарный софт? Садятся в «Иду» и весь многомегабайтный бинарь с десятками дллок в асме читают?
                          Ответить
                          • А может быть, запускают в виртуальной машине и тесты гоняют?
                            Ответить
                            • А как это поможет? Мало того, что способов задетектить виртуалку есть дофига и больше, так ещё и какой-нибудь специализированный троян может тихо собирать инфу полгода, никуда не стучась и никак себя не выдавая. А потом одним пакетом отправить.

                              Кстати, смутно помню старенькую байку (или не байку…) про хитрый вирус, который пронесли на специально отключённый от интернета комп на флешке. Вирус этот на комп внедрился и при каждом подключении флешки скидывал на неё собранную инфу вместе со специальным модулем. Как только флешку вставили в публичный комп — вся инфа с приватного испарилась в облако.
                              Ответить
          • https://youtu.be/-q8maZpDvoM

            https://youtu.be/J_BKqEyLI50
            Ответить
    • > YAY
      Пони в этом треде чувствую я.
      Ответить
      • Внезапно:
        https://en.wiktionary.org/wiki/yay

        «Yay» с азербайджанского переводится как «лето». А вот «весна» у них будет «yaz».

        А в ближайшем к нему турецком то же слово означает «лук» (в смысле оружие).

        В нидерландском есть близкое по звучанию слово, которое переводится как «ты»:
        https://en.wiktionary.org/wiki/jij

        Внезапно «yay» — это название одного из китайских языков (все же помнят, что китайский — это не только путунхуа):
        https://ru.wikipedia.org/wiki/Буи_(язык)
        Ответить
      • ФЫР!
        Ответить
      • Шаришь)
        Ответить
    • Кококой кококошмар )))

      Хоть бы массив хуйнул, и гуец и данные разделил.

      Кстати, в юникококоде же есть символы для шахматных фигур. Анскилл в виде названий фигур не нужен, одни и те же фигуры даже в одном языке могут называться по-разному.
      Ответить
      • >Хоть бы массив хуйнул, и гуец и данные разделил.
        Разделение на "движок" и "данные" -- очень важное понимание, обычно оно приходит где-то на второй год программирования. А у автора это мог быть первый год
        Ответить
        • Подтверждаю. Я помню, как моих одноклассников и сокурсников интересовал вопрос, какой функцией можно определить символ или цвет точки экрана в заданных координатах. Мы думали, что в качестве хранилища игрового поля можно использовать сам экран. Потом пришло понимание, что лучше игровое поле хранить не на экране, а выделить под него хоть сколько-нибудь оперативки.
          Ответить
          • getpixel же
            всегда так делал
            Ответить
          • Я тоже юзал экран как игровое поле, когда писал пародию на worms на паскале - под отдельный буфер ни памяти ни проца не было.
            Ответить
      • 6: begin //♔
            {E1}   if ((se1=1) and not ((E1.Caption<>'♕')


        Помню "Как написать игру для ZX Spectrum", там почти все игры работали через функцию SCREEN$. Которая определяет символ, напечатанный в соответствующем знакоместе экрана. Растрового.

        Но, с другой стороны, это, конечно, хорошо, когда памяти хватает на модель-вид-контроллер, а средства языка позволяют не запутаться в куче дополнительных массивов. А попрограммируйте-ка на BASIC48K...
        Ответить
        • В паскале были оверлеи: можно было подгружать по уровню с диска.

          небольшой экран 320x200 отлично помещался в памяти
          Ответить
          • Но не в 48К. Посчитай, сколько памяти нужно для экрана плюс для кода плюс для операционной системы.
            Ответить
            • В 48к -- да, не влазит. А в пару сегментов -- влезет
              Ответить
            • Ну, операционная система и интерпретатор бейсика не в 48К, а в 16К ROM (которые вместе составляют адресное пространство в 64), а вот экран почти 7 килобайт из них отъедают.
              Ответить
    • Питухи, видели ток https://youtu.be/yL_-1d9OSdk?t=33 ?
      Ответить

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