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

    Всего: 3

  2. Си / Говнокод #4866

    +140

    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
    ZEB_CALLBACK ZEB_CACHE_GetPage(ZEB_PagesCache *pPagesCache, ZEB_PAGEIDX fpPageIndex, void **ppCachedPageAdress)
    {  
      ZEB_WORD i; 
      for(i = 0; i < pPagesCache->loadedCount; i++)
      {
        if(pPagesCache->pDescriptors[i].fpPosition == fpPageIndex)
        {
          pPagesCache->pDescriptors[i].hitPoints++;
          (*ppCachedPageAdress)=(pPagesCache->pCache)+(i<<(pPagesCache->pageRatio)); //выдаю адрес подгруженной страницы в кэше
          return ZEBCB_GOOD;
        }
      }
      // запрошенная страница все еще не найдена} 
      //если страницы нету - то проверяем - есть ли свободный слот, а если нет слotа, то проводим операцию по выпиливанию страницы с наименьшим ХП 
      if( pPagesCache->loadedCount < pPagesCache->capacity )
      {//если слот еще есть то загружаем в позицию края - это loadedCount и увеличиваем его на 1
        pPagesCache->pDescriptors[pPagesCache->loadedCount].fpPosition = fpPageIndex; //указываем реальный адрес в соусе
        pPagesCache->pDescriptors[pPagesCache->loadedCount].hitPoints = 1;  //ХП ставим в 1
        ZEB_CACHE_MechMountPage(pPagesCache,pPagesCache->loadedCount,fpPageIndex);//загружаем эту страницу в кэш (позиция соответствует индексу дескриптора) 
        (*ppCachedPageAdress)=(pPagesCache->pCache) + ((pPagesCache->loadedCount) << (pPagesCache->pageRatio)); //получаем адрес страницы  
        pPagesCache->loadedCount++; //увеличиваем количество загруженных страниц  
        return ZEBCB_GOOD;
      }else //TODO: елсе не нужен     // Почему не нужен? (2010 07 12)    //Не знаю (2010 07 28)
      {//если свободных слотов нет - то проводим поиск наименьшего хп и выпиливаем его, загружая на его место новый дескриптор и страницу
        //поиск наименбшего хп
        ZEB_WORD 
         register minHP,
         register minDIDX  //Descriptor InDeX
         ;    
        minHP = pPagesCache->pDescriptors[0].hitPoints;
        minDIDX = 0;
        for(i = 1; i < pPagesCache->capacity; i++)
        {
          if(pPagesCache->pDescriptors[i].hitPoints < minHP)
          {
            minHP = pPagesCache->pDescriptors[i].hitPoints;
            minDIDX = i;
          }
        }
        //страница в любос случае найдена - выпиливаем ее - сохраняя ее в сурс обратно
        ZEB_CACHE_MechUnmountPage(pPagesCache,minDIDX,pPagesCache->pDescriptors[minDIDX].fpPosition); 
        //и на ее место грузим новый дескриптор и саму страницу
        pPagesCache->pDescriptors[minDIDX].fpPosition = fpPageIndex; //указываем реальный адрес в соусе   //TODO: Нужно запихивать дескрипторы в отдельный массив и обращаться по указателю, потом это дело можно сортировать для ускорения поиска страниц. Режимы сортировок - максимум и минимум: 1 - для быстрого обращения к наиболее часто используемым страницам, 2 - для быстрого выпиливания менее используемых страниц. (2010 07 28)
        pPagesCache->pDescriptors[minDIDX].hitPoints = 1;  //ХП ставим в 1 
        //кэшируем требуемую страницу
        ZEB_CACHE_MechMountPage(pPagesCache,minDIDX,fpPageIndex);    
        (*ppCachedPageAdress)=(pPagesCache->pCache) + ((pPagesCache->loadedCount) << (pPagesCache->pageRatio)); //получаем адрес страницы  
        return ZEBCB_GOOD;
      }
    }

    Господа - я не уверен говнокод ли это, но вы как бесспорные эксперты в области обнаружения ГК дайте свое заключение. Метод получает страницу из кэша. Страницы фиксированного размера и кэшируются из файла. Буфер под кэш - определяется один раз при создании как единый динамически полученный массив. Код кодил ОП.

    CreatorOfBullshit, 08 Декабря 2010

    Комментарии (5)
  3. C++ / Говнокод #4863

    +152

    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
    //CreatorOfBullshit говорит: следите за руками
    void __fastcall TFORM_MENU::pan_newClick(TObject *Sender) //запуск новой игры
    {
      if(fl_sound)sndPlaySound("Data\\Sounds\\push.wav",SND_ASYNC|SND_NODEFAULT);
      tm_showstarthint->Enabled=false;
      pan_cong->Visible=false;
      pan_hider->Visible=false;
      pan_new->Caption="Еще разок";//меняем надпись на кнопке
      pan_new->Hint="Начать новую сборку";
      pan_sign->Color=clBlack;
      lab_timeleft->Caption="00:00";
      lab_timeleft->Hint="...а время течёт, как вода по трубам...";
      tm_gameseconds->Enabled=false; //сначала останавливаем таймер, и после окончания прорисовки стартового поля запускаем его снова
      Label1->Visible=true;
      lab_timeleft->Visible=true;
      game_time_seconds=0;//сброс времени
      game_time_minutes=0;
    
      pb_viewport->Enabled=true;
      for(int i=0;i<128;i++)
      {
        gameplane.recreate();
        if(gameplane.getclosed()<8)
          break;
      }
      game_start_count=gameplane.getclosed();
      gameplane.drawfield();
      lab_per->Caption=IntToStr( (int)( (float)gameplane.getclosed()*100.f/(float)(game_field_width*game_field_height) ) )+"%";
      tm_gameseconds->Enabled=true;  //запускаем таймер
    }
     ...
    //CreatorOfBullshit говорит: "фрагмент из модуля с определениями для класса объекта gameplane" тот самый recreate()
    ...
    void C_GAMEFIELD::recreate()
    {
    /*
      Создаю игровое поле и расположения 
      */
      int i,j;
      for(i=0;i<width;i++)
      {
        for(j=0;j<height;j++)
        {
          pp_field[i][j]=0;
        }//for j
      }//for i
      //определение центральной точки источника воды:
      if( (width&b0001)==0 )
        start_x=(width>>1)-1;
      else
        start_x=(width>>1);
      //_  _  _  _  _  _  _  _  _  _  _  _
      if( (height&b0001)==0 )
        start_y=(height>>1)-1;
      else
        start_y=(height>>1);
      pp_field[start_x][start_y]|=wALWAYSON;//назначение стартовой метки(поднимается флаг)
      crt_crgf();
      checklinkup();
      for(i=0;i<width;i++)for(j=0;j<height;j++)
      {
        pp_mask[i][j]=pp_field[i][j];
      }//for
    }
    ...
    //CreatorOfBullshit говорит: "Теперь проследуем в crt_crgf()"
    void C_GAMEFIELD::crt_crgf() //Соединяет неправильно построеенные трубы 
    { //Проработать мне нужно алгоритм построения!!!
      unsigned __int8 i,j;
      static int brd_right,
                 brd_bottom,
                 bounds;
      crt_setcell(start_x,start_y, TRIPLE);  ///crt_setcell создает трубу, потом тут же ее поворачиваем
      //далее первый шаг построения: сначала создаются совершенно случайные незаконо-
      //мерные ветви, т.е. могут остаться НЕЗАПОЛНЕННЫЕ участки:
      unsigned __int8 startcell=pp_field[start_x][start_y], tryingcell;
      if( (startcell&UP)==UP )
        crt_connect(start_x,start_y-1,DOWN);
      if( (startcell&DOWN)==DOWN )
        crt_connect(start_x,start_y+1,UP);
      if( (startcell&LEFT)==LEFT )
        crt_connect(start_x-1,start_y,RIGHT);
      if( (startcell&RIGHT)==RIGHT )
        crt_connect(start_x+1,start_y,LEFT);
    }
    //CreatorOfBullshit говорит: "Апофеоз говнокодизма - чуть ниже:"
    inline void C_GAMEFIELD::crt_setcell(unsigned __int8 x, unsigned __int8 y, unsigned __int8 pipetype)
    {
      pp_field[x][y]|=pipetype;
      //создаем трубу по заказу и рандумно поворачиваем
      if(random(2))
        rotate_CW(x,y);
      if(random(2))
        rotate_CW(x,y);
      if(random(2))
        rotate_CW(x,y);
    }

    Говнокод написан лично моими руками на первом курсе института. Писал игру в которой нужно поворачивать трубы так чтобы потом по всему игровому полю текла вода. Писал на Буилдере 5.0. Угощайтесь.
    Алсо это не еще не все - там есть фрагмент в котором китайским методом создаются спрайты игровых текстур.
    С:8444

    CreatorOfBullshit, 08 Декабря 2010

    Комментарии (6)
  4. 1C / Говнокод #4858

    −129

    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
    //Тут был код
    
    //!Проверки на корректность данных.
    		ИначеЕсли (Строка(Лист.Cells(Счетчик,8).value) = "") ИЛИ (Строка(Лист.Cells(Счетчик,8).value) = "") ИЛИ ((Лист.Cells(Счетчик,8).value) = 0) ИЛИ ((Лист.Cells(Счетчик,8).value) = 0)  Тогда
    			Сообщить("У номенклатуры в строке №"+Счетчик+" не хватает данных по ценам! Позиция не добавлена!", СтатусСообщения.Важное);
    		ИначеЕсли ((Лист.Cells(Счетчик,8).value) < 0) ИЛИ ((Лист.Cells(Счетчик,8).value) < 0) Тогда 
    			Сообщить("У номенклатуры в строке №"+Счетчик+" отрицательная цена! Позиция не добавлена!", СтатусСообщения.Важное);
    		Иначе
    			Мас.Добавить(Строка(Лист.Cells(Счетчик, 1).value));
    			ЭлементСправочника = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Строка(Лист.Cells(Счетчик, 1).value));
    
    
    //Там дальше код

    Фрагмент обработки найден в конфиге клиента. До фрагмента - открытие файла excel. После - распихивание данных с него по регистрам. Гениальная проверка на корректность гениальна.

    CreatorOfBullshit, 08 Декабря 2010

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