-
Лучший говнокод
- В номинации:
-
- За время:
-
-
+107
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
var
OGTC: cardinal; // для сверки с таймером
procedure CheckPhys;
begin
if OGTC < GetTickCount then begin
Phys; // тут считается вся игровая физика и все изменения состояний. Звуки тоже здесь.
Inc(OGTC, dT);
end;
end;
procedure Graph; // процедура отрисовки графики
var
i: integer;
begin
CheckPhys;
for i := 0 to ItemCount - 1 do with Items[i]^ do CopyPosition := Position; // делаем копию состояния перед отрисовкой мира!
for i := 0 to ItemCount - 1 do begin
ShowItem(Items[i]^); // рисуем элемент мира
CheckPhys; // проверяем, не пора ли снова считать физику
end;
end;
procedure OnIdle;
begin
if PlayingGame then Graph;
end;
Надо, чтобы в игре скорость игрового процесса не зависела от тормозов графики. Даже когда кадр долго рисуется, звуки и движения делаются строго по таймеру. Создавать лишний поток мне в лом, и вообще я дико боюсь приколов с синхронизациями и так далее. Поэтому сделал такую хрень. Сэмулировал многопоточность банальным однопоточным кодом.
TarasB,
26 Мая 2010
-
0
- 1
$ find ~ -name .git -type d -prune -printf "***\n%p\n***\n" -exec git -C '{}/..' status \;
MAKAKA,
21 Февраля 2021
-
0
- 1
https://tproger.ru/articles/frontend-roadmap-2021/
Как много надо учить ради того, чтобы клепать красивые формочки.
Они там совсем ебанулись?
YpaHeLI_,
12 Ноября 2020
-
−1
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
std::optional<int64_t> readNumber(const wchar_t *&str)
{
const wchar_t *origStr = str;
if (*str == L'-' || *str == L'+') {
str++;
if (!std::iswdigit(*str)) {
str--;
return {};
}
} else {
if (!std::iswdigit(*str)) {
return {};
}
}
while (std::iswdigit(*str)) {
str++;
}
return wcstoll(origStr, NULL, 10);
}
А всё потому, что доки по «wcstoll» надо читать!
gost,
07 Января 2019
-
+156
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
var old = 47;
function getRate() {
$.ajax({
url: "http://query.yahooapis.com/v1/public/yql?q=select%20%2a%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22USDRUB%22%29&env=store://datatables.org/alltableswithkeys",
dataType: "text"
}).done(function(msg) {
var value = /<Rate>(.+)<\/Rate>/.exec(msg)[1];
//$("#p-rate").html(/<Rate>(.+)<\/Rate>/.exec(msg)[1]);
$("#p-rate").html(value);
if(value > old) $("#p-message").html("МНЕ ОТ ЭТОГО ТОЛЬКО ЛУЧШЕ! ТОЛЬКО НА ПОЛЬЗУ!");
else if(value < old) $("#p-message").html("СКАЛЕН! СКАЛЕН!");
else $("#p-message").html("МНОГОХОДОВОЧКА!");
old = value;
});
}
setInterval(getRate,1500);
gost,
24 Ноября 2014
-
+142
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
public class PDFVPage
{
....
public int GetX()
{
return m_x;
}
public int GetY()
{
return m_y;
}
Либа Android PDF :)
kovel,
31 Декабря 2013
-
+160
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
for(var i = 0, l = requestParams.length; i < l; i++) {
var param_pair = requestParams[i];
key = encodeURIComponent(param_pair[0]);
val = param_pair[1];
if ( val && val.constructor.toString().match(/array/i) ) {
val = val.join('+');
}
// ...
}
Кусочек велосипеда, который заменяет функционал jQuery.ajax
Если вдруг наш параметр оказался массивом ... ну что ж еще с ним сделать кроме как соединить через "+". Обратите внимание на саму проверку.
Elvenfighter,
05 Декабря 2012
-
−157
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
uint16_t (*tArray16[20])[16];
uint16_t (*tArray64[5])[64];
//////
где-то в начале это malocaется
//////
for( i = 0; i < 25; i++ )
{ ....
free( h->tArray16[i] );
}
это работает. т.к. структуры идут в памяти последовательно
3.14159265,
18 Июня 2010
-
+152
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
typedef signed int s32;
//...
void SomeStruct::SomeFunc(const char* ipImageName /*, ... */ )
{
// ...
s32 imageNameSize = strlen(ipImageName) * sizeof(char) + 1;
this->mpImageName = new char[imageNameSize];
strcpy(this->mpImageName, ipImageName);
// ...
}
А теперь представим, что вместо char будет wchar_t... ...автор - лид-программист...
Kirinyale,
13 Июня 2010
-
+133.8
- 1
- 2
- 3
Продолжение обсуждения Говнокод #3028
Предлагаю перейти сюда, а то каментов тонна.
Продолжение обсуждения Говнокод #3028
А то каментов скопилось.
Предлагаю премодерацию переложить на плечи тех, кто постит.
Выложил говно -- проследи, чтобы обсуждение было на уровне.
Отдельно на должности модеров, я думаю, народ не пойдет. Это отнимает много времени и сил.
Тем более ГдеЗдесьСиПлюсПлюсеры не дремлют.
Если постер будет излишне необъективен и будет выпиливать любую критику, то его ветка просто будет уныла.
Ведь при наличии хорошего диалога в каментах, даже из неоднозначного поста получается годная вещь.
Для гестов можно ввести ограничение по количеству каментов в сутки, следить по IP, хотя этот метод не лишен недостатков.
Или установить вырвиглазную капчу. Шутка. :))
mrbig66,
19 Апреля 2010