1. Список говнокодов пользователя TarasB

    Всего: 95

  2. JavaScript / Говнокод #5815

    +145

    1. 1
    <noscript><meta http-equiv="refresh" content="0; URL=/badbrowser.php"></noscript>

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

    TarasB, 27 Февраля 2011

    Комментарии (10)
  3. Pascal / Говнокод #5609

    +92

    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
    I:=1;
        while I<=High(Sockets) do
         begin
          if FD_IsSet(Sockets[I],FDSet) then
           if Recv(Sockets[I],…)<=0 then
            begin
             // Связь разорвана, надо закрыть сокет
             // и удалить его из массива
             CloseSocket(Sockets[I]);
             for J:=I to High(Sockets)-1 do
              Sockets[J]:=Sockets[J+1];
             Dec(I);
             SetLength(Sockets,Length(Sockets)-1)
            end
           else
            begin
             // Получены данные от клиента, надо ответить
             Send(Sockets[I],…)
            end;
          Inc(I)
         end;

    На первый взгляд может показаться странным, почему для перебора элементов массива используется цикл while, а не for. Но в дальнейшем мы увидим, что размер массива во время выполнения цикла может изменяться. Особенность же цикла for заключается в том, что его границы вычисляются один раз и запоминаются в отдельных ячейках памяти, и дальнейшее изменение значений выражений, задающих эти границы, не изменяет эти границы. В нашем примере это приведёт к тому, что в случае уменьшения массива цикл for не остановится на реальной уменьшившейся длине, а продолжит цикл по уже не существующим элементам, что приведёт к трудно предсказуемым последствиям. Поэтому в данном случае лучше использовать цикл while, в котором условие продолжения цикла полностью вычисляется при каждой его итерации.

    TarasB, 09 Февраля 2011

    Комментарии (51)
  4. Pascal / Говнокод #5261

    +114

    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
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    TMapObj = record
        Size: integer;
        Selected, Valid: boolean;
        case Kind: TKind of
    // дохрена пропущено
       koTxr: (
            TxrFileName: string [31];
            tLast: integer;
            TxrCorrect: boolean;
            LODS: array [0 .. 3] of TBitmap;
            Pixel: TBitmap;
          );
          koItem: (
            Location: TLocation;
            ItemEndSel: boolean;        // выделена ли для перетаскивания
            TimeBeforeReborn: integer;  // времени до восстановления
            DescrIndex: integer;        // индекс описателя
            Rotation: integer;
    
            TeamColor, EnemyColor: integer;
    
            iLast: integer;
    
            CannotGet: boolean;
    
            case TKindItem of
              kiWeapon: (
                iwpFallen: boolean;
                iwpBulletsLeft: integer;
                iwpState: TWeaponState;
              );
              kiHuman: (
                ihState: integer;
              );
              kiFlag: (
                ifState: TFlagState;
                ifHome: integer;
              );
              kiScepter: (
                isState: TScepterState;
              );
          );
          koItemDescr: (
            ItemFileName: string [31];  // файл с описанием предмета
            idLast: integer;
            ItemCorrect: boolean;
            ItemName: string [31];      // название предмета
            SpriteIndName: string [31];
            SpriteInd: integer;         // картинка
            RebornTime: integer;        // время перерождения
            case KindItem: TKindItem of
              kiHealth: (
                hlCount: integer;
              );                          
              kiShield: (
                shCount: integer;
              );
              kiFlag: (
                flTeam: integer;
              );        
              kiSL: (
                slTeam: integer;
              );
              kiAmmo: (
                amCount: integer;
                amIndex: integer;       // тип патрона
              );
              kiWeapon: (                          // всё про пушку
                wpAmmoIndex: integer;              // тип патронов
                wpKeyNumber: integer;              // кнопка на клавиатуре
                wpBulletsInCharge: integer;        // патронов в обойме
                wpInitBullets: integer;            // изначальное число патронов
                wpMaxBullets: integer;             // максимальное число патронов
                wpShotBullets: integer;            // патронов за раз
                wpReloadTime, wpShotTime: integer; // время перезарядки, скорострельность (скорострельность в миллисекундах)
                wpDispersion, wpKickBack: integer; // разброс самого оружия и отдача
                wpBasic: integer;       // базовое ли
                wpDamage: integer;      // урон
                wpDistance, wpBulletSpeed: integer;    // предельная дальность выстрела, скорость пуль
                wpSound: integer;       // номер ноты
                wpColor: TColor;        // цвет
              );
          );   
          koBullet: (
            bLast: integer;
    
            BLocP: array [0 .. 1] of TPoint;
            BLocRoom: integer;
    
            BVector: TPoint;           // нормализованный вектор направления
    
            BDamage: integer;          // параметры, которые надо передавать в процедуру создания пули
            BSpeed: integer;
            BLengthLeft: integer;
            BOwner: integer;
            Bn, Bm: TDistFunc;
            BColor: TColor;
        );
    end;

    Меня попросили показать, до чего может довести структурное программирование при отрицании ООП. Разветвлённая структура с кучей ветвей.
    Для лучшего эффекта обмазываться вместе с http://govnokod.ru/4249

    TarasB, 13 Января 2011

    Комментарии (4)
  5. Куча / Говнокод #5191

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    В связи с минусаторной атакой в говнокоде 5186, просьба.
    Страйкер, заблокируй пользователей с номерами
    http://govnokod.ru/user/2689 - 
    http://govnokod.ru/user/2703
    
    (весь диапазон оккупировали тролли-виртуалы)
    
    И ИП-адрес, с которого эти пользователи логинились.

    TarasB, 09 Января 2011

    Комментарии (115)
  6. Си / Говнокод #5186

    +125

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    int function(void) {
        static int i, state = 0;
        switch (state) {
            case 0: /* start of function */
            for (i = 0; i < 10; i++) {
                state = 1; /* so we will come back to "case 1" */
                return i;
                case 1:; /* resume control straight after the return */
            }
        }
    }

    Нестандартное применение свитча.
    Тут оно нафиг не нужно.
    Источник: http://www.gamedev.ru/code/forum/?id=142536

    TarasB, 09 Января 2011

    Комментарии (83)
  7. Assembler / Говнокод #5091

    +225

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    ; Program entry point
    00401000:  push 0070F001
    00401005:  call 0040100B
    0040100A:  ret
    0040100B:  ret

    Суровый старт зашифрованного самораспаковывающегося архива. Так хитро передаётся управление на 0070F001 (за сегмент кода).

    TarasB, 28 Декабря 2010

    Комментарии (46)
  8. Pascal / Говнокод #4943

    +92

    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
    unit uncrt;
    
    interface
    
    procedure ClrScr;
    procedure Sound(Hz: Word);
    procedure NoSound;
    
    procedure TextColor(Color: Byte);
    procedure TextBackground(Color: Byte);
    
    var
      TextAttr: Byte; { Для особо продвинутых случаев }
    
    implementation
    
    procedure ClrScr;
    begin end;
    
    procedure Sound(Hz: Word);
    begin end;
    procedure NoSound;
    begin end;
    
    procedure TextColor(Color: Byte);
    begin end;
    procedure TextBackground(Color: Byte);
    begin end;
    
    end.

    Вас достала школота, раскрашивающая свои бибикающие программы?
    Вам поможет этот модуль!

    TarasB, 16 Декабря 2010

    Комментарии (41)
  9. Pascal / Говнокод #4431

    +87

    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
    var
    s:string;
    function f(s:string):string;
    var
    i:integer;
    s1:string;
    begin
    s1:=#13#10's:=''';
    for i:=1to length(s)do begin
    if s[i]=#13then
    s1:=s1+'''#13#10+'#13#10+''''
    else if s[i]=''''then
    s1:=s1+''''''
    else if s[i]<>#10 then
    s1:=s1+s[i];
    f:=s1+''';'#13#10+
    's:=s+f(s);'#13#10+
    'write(s);'#13#10+
    'close(output);'#13#10+
    'end.';
    end;
    end;
    begin
    assign(output,'s.txt');
    rewrite(output);
    s:='var'#13#10+
    's:string;'#13#10+
    'function f(s:string):string;'#13#10+
    'var'#13#10+
    'i:integer;'#13#10+
    's1:string;'#13#10+
    'begin'#13#10+
    's1:=#13#10''s:='''''';'#13#10+
    'for i:=1to length(s)do begin'#13#10+
    'if s[i]=#13then'#13#10+
    's1:=s1+''''''#13#10+''#13#10+'''''''''#13#10+
    'else if s[i]=''''''''then'#13#10+
    's1:=s1+'''''''''''''#13#10+
    'else if s[i]<>#10 then'#13#10+
    's1:=s1+s[i];'#13#10+
    'f:=s1+'''''';''#13#10+'#13#10+
    '''s:=s+f(s);''#13#10+'#13#10+
    '''write(s);''#13#10+'#13#10+
    '''close(output);''#13#10+'#13#10+
    '''end.'';'#13#10+
    'end;'#13#10+
    'end;'#13#10+
    'begin'#13#10+
    'assign(output,''s.txt'');'#13#10+
    'rewrite(output);';
    s:=s+f(s);
    write(s);
    close(output);
    end.

    Нарыл свой высер на тему программы, выводящей свой текст.

    TarasB, 23 Октября 2010

    Комментарии (4)
  10. Pascal / Говнокод #4250

    +121

    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
    const
      Koeff: array [TTPKind] of record           // 
        BC: integer;
        Border: array [0 .. 4] of extended;
        C: array [0 .. 3, 0 .. 10] of extended;
      end = (
        (BC: 4; Border: (-0.226, 1.923, 11.361, 19.739, 21.103); C: (
          (0, 1.8891380E2, -9.3835290E1, 1.3068619E2, -2.2703580E2, 3.5145659E2, -3.8953900E2, 2.8239471E2, -1.2607281E2, 3.1353611E1, -3.3187769),
          (1.334584505E1, 1.472644573E2, -1.844024844E1, 4.031129726, -6.249428360E-1, 6.468412046E-2, -4.458750426E-3, 1.994710149E-4, -5.313401790E-6, 6.481976217E-8, 0),
          (-8.199599416E1, 1.553962042E2, -8.342197663, 4.279433549E-1, -1.191577910E-2, 1.492290091E-4, 0, 0, 0, 0, 0),
          (3.406177836E4, -7.023729171E3, 5.582903813E2, -1.952394635E1, 2.560740231E-1, 0, 0, 0, 0, 0, 0)
          )    // R
        ),
        (BC: 4; Border: (-0.235, 1.874, 10.332, 17.536, 18.694); C: (
          (0, 1.84949460E2, -8.00504062E1, 1.02237430E2, -1.52248592E2, 1.88821343E2, -1.59085941E2, 8.23027880E1, -2.34181944E1, 2.79786260, 0),
          (1.291507177E1, 1.466298863E2, -1.534713402E1, 3.145945973, -4.163257839E-1, 3.187963771E-2, -1.291637500E-3, 2.183475087E-5, -1.447379511E-7, 8.211272125E-9, 0),
          (-8.087801117E1, 1.621573104E2, -8.536869453, 4.719686976E-1, -1.441693666E-2, 2.081618890E-4, 0, 0, 0, 0, 0),
          (5.333875126E4, -1.235892298E4, 1.092657613E3, -4.265693686E1, 6.247205420E-1, 0, 0, 0, 0, 0, 0)
          )    // S
        ),
        (BC: 2; Border: (0.291, 2.431, 13.820, 0, 0); C: (
          (9.8423321E1, 6.9971500E2, -8.4765304E2, 1.0052644E3, -8.3345952E2, 4.5508542E2, -1.5523037E2, 2.9886750E1, -2.4742860, 0, 0),
          (2.1315071E2, 2.8510504E2, -5.2742887E1, 9.9160804, -1.2965303, 1.1195870E-1, -6.0625199E-3, 1.8661696E-4, -2.4878585E-6, 0, 0),
          (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
          (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
          )    // B
        ),
        (BC: 3; Border: (-8.095, 0, 42.919, 69.553, 0); C: (
          (0, 1.9528268E1, -1.2286185, -1.0752178, -5.9086933E-1, -1.7256713E-1, -2.8131513E-2, -2.3963370E-3, -8.3823321E-5, 0, 0),
          (0, 1.978425E1, -2.001204E-1, 1.036969E-2, -2.549687E-4, 3.585153E-6, -5.344285E-8, 5.099890E-10, 0, 0, 0),
          (-3.11358187E3, 3.00543684E2, -9.94773230, 1.70276630E-1, -1.43033468E-3, 4.73886084E-6, 0, 0, 0, 0, 0),
          (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
          )    // J
        ),
        (BC: 2; Border: (-5.603, 0, 20.872, 0, 0); C: (
          (0, 2.5949192E1, -2.1316967E-1, 7.9018692E-1, 4.2527777E-1, 1.3304473E-1, 2.0241446E-2, 1.2668171E-3, 0, 0, 0),
          (0, 2.592800E1, -7.602961E-1, 4.637791E-2, -2.165394E-3, 6.048144E-5, -7.293422E-7, 0, 0, 0, 0),
          (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
          (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
          )    // T
        ),
        (BC: 2; Border: (-8.825, 0, 76.373, 0, 0); C: (
          (0, 1.6977288E1, -4.3514970E-1, -1.5859697E-1, -9.2502871E-2, -2.6084314E-2, -4.1360199E-3, -3.4034030E-4, -1.1564890E-5, 0, 0),
          (0, 1.7057035E1, -2.3301759E-1, 6.5435585E-3, -7.3562749E-5, -1.7896001E-6, 8.4036165E-8, -1.3735879E-9, 1.0629823E-11, -3.2447087E-14, 0),
          (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
          (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
          )    // E
        ),
        (BC: 3; Border: (-5.891, 0, 20.644, 54.886, 0); C: (
          (0, 2.5173462E1, -1.1662878, -1.0833638, -8.9773540E-1, -3.7342377E-1, -8.6632643E-2, -1.0450598E-2, -5.1920577E-4, 0, 0),
          (0, 2.508355E1, 7.860106E-2, -2.503131E-1, 8.315270E-2, -1.228034E-2, 9.804036E-4, -4.413030E-5, 1.057734E-6, -1.052755E-8, 0),
          (-1.318058E2, 4.830222E1, -1.646031, 5.464731E-2, -9.650715E-4, 8.802193E-6, -3.110810E-8, 0, 0, 0, 0),
          (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
          )    // K
        ),
        // тут ещё 6 типов было. (Пожалуйста, ограничьтесь 4000 символами.)
      );

    Фрагмент типичной программы для научных расчётов

    TarasB, 14 Сентября 2010

    Комментарии (28)
  11. Pascal / Говнокод #4249

    +101

    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
    type
      // смотрите, как не надо делать и почему придумали ООП
      TProc = procedure;
      TGoProc = function: boolean;
      TSizeProc = function: integer;
      TGetConfigProc = function: string;
      TApplyConfigProc = procedure(SM: PStringMap);
    
      TDeviceProc = record
        InitControls: TProc;
        MoveControls: TProc;
        Go: TGoProc;
        MaxH, MinH: TSizeProc;
        GetConfig: TGetConfigProc;
        ApplyConfig: TApplyConfigProc;
      end;
    
    const
      DeviceProcs: array [TDevice] of TDeviceProc = (
        (InitControls: ETR.InitControls; MoveControls: ETR.MoveControls; Go: ETR.Go; MaxH: ETR.MaxH; MinH: ETR.MinH; GetConfig: ETR.GetConfig; ApplyConfig: ETR.ApplyConfig),
        (InitControls: TS_NSH.InitControls; MoveControls: TS_NSH.MoveControls; Go: TS_NSH.Go; MaxH: TS_NSH.MaxH; MinH: TS_NSH.MinH; GetConfig: TS_NSH.GetConfig; ApplyConfig: TS_NSH.ApplyConfig),
        (InitControls: TS_IND.InitControls; MoveControls: TS_IND.MoveControls; Go: TS_IND.Go; MaxH: TS_IND.MaxH; MinH: TS_IND.MinH; GetConfig: TS_IND.GetConfig; ApplyConfig: TS_IND.ApplyConfig),
        (InitControls: TP_NSH.InitControls; MoveControls: TP_NSH.MoveControls; Go: TP_NSH.Go; MaxH: TP_NSH.MaxH; MinH: TP_NSH.MinH; GetConfig: TP_NSH.GetConfig; ApplyConfig: TP_NSH.ApplyConfig),
        (InitControls: TP_IND.InitControls; MoveControls: TP_IND.MoveControls; Go: TP_IND.Go; MaxH: TP_IND.MaxH; MinH: TP_IND.MinH; GetConfig: TP_IND.GetConfig; ApplyConfig: TP_IND.ApplyConfig)
      );

    Вот до чего доводит ненависть к ООП.
    ОПП - это хорошо, ООП не надо ненавидеть.

    TarasB, 14 Сентября 2010

    Комментарии (26)