- 1
- 2
- 3
- 4
function midVal(X, Y)
{
return (Math.max(X, Y) - Math.min(X, Y)) / 2 + Math.min(X, Y);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 95
−160
function midVal(X, Y)
{
return (Math.max(X, Y) - Math.min(X, Y)) / 2 + Math.min(X, Y);
}
Это среднее арифметическое один один чел так считает.
Взято отсюда: http://www.gamedev.ru/flame/forum/?id=137879&page=4#m47
Тема сама по себе весёлая.
+86
procedure Click(H: hWnd);
begin
SendMessage(H, wm_LButtonDown, 0, 0);
SendMessage(H, wm_LButtonUp, 0, 0);
end;
Как я круто по-хакерски сэмулировал нажатие на кнопку или на радиобаттон.
+107
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;
Надо, чтобы в игре скорость игрового процесса не зависела от тормозов графики. Даже когда кадр долго рисуется, звуки и движения делаются строго по таймеру. Создавать лишний поток мне в лом, и вообще я дико боюсь приколов с синхронизациями и так далее. Поэтому сделал такую хрень. Сэмулировал многопоточность банальным однопоточным кодом.
+102
// тут обычный паскалевский код...
if x > y then asm // если икс больше игрека
mov eax, x // то меняем их значения местами
mov edx, y
mov x, edx
mov y, eax
end;
Как поменять значения двух целочисленных переменных, не заводя третью? Года 3 назад я делал примерно так.
+240.1
fld qword ptr [d]
call @ROUND
Это творчество дельфийского компилятора на тему i := round(d);
Он делает вызов функции ради одной пустяковой команды, что очень влияет на скорость.