Школоло / Говнокод #26436 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Zick, (Updated )

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

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

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

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

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

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


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

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

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

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8