- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
var
sMem: String;
.......
case Byte(sMem[len]) of
Word('k'): { Что то делаем };
Word('m'): { Что то делаем };
Word('g'): { Что то делаем };
end;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+81
var
sMem: String;
.......
case Byte(sMem[len]) of
Word('k'): { Что то делаем };
Word('m'): { Что то делаем };
Word('g'): { Что то делаем };
end;
Вот такой вот гавнокод
+98
Сижу такой набираю код
program Project6;
{$APPTYPE CONSOLE}
var i,j: integer;
begin
repeat
readln(j);
i := 0;
if (j=0) then
i := 1
else
break;
Writeln(i);
until false;
end.
[Hint] : Value assigned to 'i' never used
Ну ладно, похер, уберу
program Project6;
{$APPTYPE CONSOLE}
var i,j: integer;
begin
repeat
readln(j);
// i := 0;
if (j=0) then
i := 1
else
break;
Writeln(i);
until false;
end.
[Warning] : Variable 'i' might not have been initialized
_________________
g@@@@@44444*********9444@@@@@@@@@@@Mggg__
g@M" _an**"""""""**Vw=G______"%%@@@@@gg_
,@@` a^" __a=~v-vvv~~,___ _____`"*@gg_
a@@ _M" _m*"` _______ `""""""""""` " "9@g_
@@ a" ,m"_ar*"'` -, ,amv****-~, 9@g
@@ .* u" C ,~ "\ @
d@ ' __gg____ ` @y
g@ ,g@@@@@@@@4@@gg_ C ______ 9@g
g@@.>~. __ a@""@@@@@@__ "9@g ,g@@@@**4@@_ "@g_
g@"$-*""" *Y, @@@@*""**4@@@g__$@C ggg@@@@@@@@@@*" "'" ""Mg`8@g
g@",` ,g@@@@@@@g_ _g@ ""@M" `"@@" *n_"C"@@
g@' p@" ,`"@@@ggggg@@" 8] ,_ _gM@@@@g ' 'C8@
@@ j@ 8@_ `"""' 8@g_ 3@g@@@`, `" ][@
@L 8@ _g@@@@@gg_ _gMMy "9@g_ `""' 8L j8@
@k 3@ d@@@@ "@@@gg_ *""""" @"``___ '@@g_ @@C n" Q@
"@C $ 9k @@_ "8@@@@gg_ @g_fM4@@M g@""" "n. a@@@ _m*3@"
"@g N, 9@@gg_ 8@ `""9@@@gg__" 8gg@M _g@@@d@k a@%
"@@g_' "@@@@@@@@g_ `"8@@@@ggg____ ""` ___gg@@@@ 8@@@ @@
"@g_ '@g `"@@@@gg__ @L `"""4@@@@@@@@@@@@@@@@" @C @@@ 3@
9@_ `@g 3@"9@@@@@@g@ [@ @@ 4@y @kg@@@ [@
9@ 8@gd@ '"9@@@@@@@gggggd@gggggd@gggggg@W@@@@@@@@ [@
8g "@@g @""9@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F [@
@g "@@g_ d@ '""@@@@@@@@@@@@@@@@@@@@@@@$@ 3@
`@g_ "@@@g_j@' @C ``"3@@"""8@""j@'j@g@@ 3@
9@g_ ~__ ~._ `"@@@@g_ @C 8@ g@^ p@^ "@@M @C
"@@g "9m_ "Nq_ "*@@@@ggggg@______@____@@gg@@@@@M" @L
"9@@g_`"Mm_`"Nq_ """"*4@@@@@@@@@@M@@4*"""' 8k
"9@@g_ ""Mm_"*w__ ~~~~ aaa~~ _/ $@
`"@@gg_ "*WG_"*w~.____ ___am*" / [@
"*@@gg `"*-~<.__ ` __M" 3@
"9@gg_ `""'** ------**""` d@
`"@@ggggg__ ,d@
""9@@@@@gg__ __g@"
`""*4@@@@MggggggggM@@@@"
`""""""""""'
+95
if length(fsizeS)<=9 then fsize:=strtoint(fsizeS);
if (length(fsizeS)>9) and (length(fsizeS)<18) then
fsize:=strtoint(copy(fsizeS,length(fsizeS)-8,length(fsizeS)-9))+
strtoint(copy(fsizeS,1,length(fsizeS)-9))*1000000000{10**9};
if length(fsizeS)>18 then
begin
writeln;
writeln('File:'+curstr);
writeln('Size:'+fsizeS);
write('Please input file''s size, written above:');
readln(fsize);
end;
Интересный способ конвертации строки в число. Думаю, у вас здесь такого ещё не было. Нашел в своих исходниках времён 8 - 9 класса.
+90
program Project1;
Var
i,j : Integer;
begin
i := 300001; j := 300002;
asm
MOV EAX, I;
XCHG EAX,j
MOV I, EAX;
end;
Write(i,' ',j); Readln;
end.
Ещё один кулхацкерный метод перестановки значений двух чисел местами.
+82
var
u: longint;
begin
u := $-80000000;
writeln(u);
end.
Жуквери в Дельфи7. Компилируется.
+91
procedure RecursiveVisibility(e : PCreature; oct, depth : integer; slopeA, slopeB : single);
var
x, y : integer;
begin
case oct of
1 : begin
y := e^.y - depth; { initialize y }
x := round(e^.x - slopeA * depth); { initialize z }
while GetSlopeStd(x, y, e^.x, e^.y) >= slopeB do begin { while in octant }
if GetVisDistance(x, y, e^.x, e^.y) <= mw then begin { if within max visual range }
if WorldSurface[x, y].entity^.obstruct then begin { if obstruction }
if not WorldSurface[x - 1, y].entity^.obstruct then begin { if no prior obstruction }
RecursiveVisibility(e, 1, depth + 1, slopeA, GetSlopeStd(x - 0.5, y + 0.5, e^.x, e^.y));
end; { ^create recursive scan }
end else begin { no obstruction }
if WorldSurface[x - 1, y].entity^.obstruct then begin { if prior obstruction }
slopeA := GetSlopeStd(x - 0.5, y - 0.5, e^.x, e^.y); { adjust slope for later recursion }
end;
end;
WorldSurface[x, y].visibility := 3; { set block visible }
end;
inc(x);
end;
dec(x)
end;
2 : begin
y := e^.y - depth; { initialize y }
x := round(e^.x + slopeA * depth); { initialize z }
while GetSlopeStd(x, y, e^.x, e^.y) <= slopeB do begin { while in octant }
if GetVisDistance(x, y, e^.x, e^.y) <= mw then begin { if within max visual range }
if WorldSurface[x, y].entity^.obstruct then begin { if obstruction }
if not WorldSurface[x + 1, y].entity^.obstruct then begin { if no prior obstruction }
RecursiveVisibility(e, 2, depth + 1, slopeA, GetSlopeStd(x + 0.5, y + 0.5, e^.x, e^.y));
end; { ^create recursive scan }
end else begin { no obstruction }
if WorldSurface[x + 1, y].entity^.obstruct then begin { if prior obstruction }
slopeA := -GetSlopeStd(x + 0.5, y - 0.5, e^.x, e^.y); { adjust slope for later recursion }
end;
end;
WorldSurface[x, y].visibility := 3; { set block visible }
end;
dec(x);
end;
inc(x)
end;
// Далее всё в таком же духе.
Отсюда: http://roguebasin.roguelikedevelopment.org/index.php?title=FOV_using_recursive_shad owcasting_-_improved
Можно было сделать менее говнокодистей?
+75
procedure TForm1.RunCode(Code:String;A,B:Cardinal);
var
i,j:Cardinal;
dpth:Word;
itrCounter:Integer;
ans:Integer;
begin
i:=A-1;
repeat
i:=i+1;
if Code[i]='>' then
if p=30000 then p:=1 else p:=p+1;
if Code[i]='<' then
if p=1 then p:=30000 else p:=p-1;
if Code[i]='+' then allspace[p]:=allspace[p]+1;
if Code[i]='-' then allspace[p]:=allspace[p]-1;
if Code[i]='.' then Memo2.Lines.Text:=Memo2.Lines.Text + Chr(allspace[p]);
if Code[i]='[' then
begin
dpth:=0;
j:=i;
repeat
if (Code[j]=']') and (dpth>0) then dpth:=dpth-1;
j:=j+1;
if Code[j]='[' then dpth:=dpth+1;
if j>B then
begin
ShowMessage('Обнаружен незакрытый цикл. Выполнение остановится');
running:=False;
Exit;
end;
until (Code[j]=']') and (dpth=0);
itrCounter:=0;
while allspace[p]<>0 Do
begin
if running=False then Exit;
RunCode(Memo1.Text,i+1,j-1);
itrCounter:=itrCounter+1;
if itrCounter=10000000 then
begin
ans:=MessageDlg('Выполнение программы вероятно зациклилось (прошло уже 10 000 000 итераций). Возможно код содержит ошибки.' + #13 + 'Остановить выполнение?',mtConfirmation,[mbYes,mbNo],0);
if ans=mrYes then running:=False;
if ans=mrNo then itrCounter:=0;
end;
end;
i:=j;
end;
if Code[i]=',' then EnterChar;
Application.ProcessMessages;
until (i>=B) or (running=False);
end;
Процедура интерпретации brainfuck кода
+67
function IntToHex(N: integer): string;
const
S = '0123456789ABCDEF';
var
i: integer;
begin
SetLength(Result, 8);
for i := 0 to 7 do Result[8 - i] := S[N shr (i shl 2) and $0F + 1];
end;
Носки менял, ноги мыл, все равно воняет хаккирством.
И оно почему-то в модуле WinAPI.pas у Тараса лежит о_О
+99
Procedure TForm1.CreateObjects(Column, Row: Integer); // Процедура создания кнопок (ячеек).
Var
i, j, iLeft, iTop, iRow : Integer; // Переменные, отвечающие за расположение ячеек на форме. (Кроме iRow, она содержит номер ячейки по горизонтали.)
SpeedButton : array of TSpeedButton; // Собственно, сам массив с ячейками.
cColumn : Char; // Номер ячейки по вертикали.
iMine : ShortInt; // Дополнительная переменная кол-ва бомб на поле.
BEGIN
{Присваиваем начальные значения переменным. :7:}
iLeft := 0; // Начальная позиция по горизонтали.
iTop := 5; // Начальная позиция по вертикали.
iRow := 1; // Номер ячейки по горизонтали.
iMine := MineCount; // Кол-во мин на поле.
cColumn := 'A'; // Номер ячейки по вертикали.
SetLength(SpeedButton, Row+1); // Массив с ячейками.
{------------------------------------------ :7:}
{Создаём новые списки. :8:}
FObjectList := TObjectList.Create; // Список с объектами.
Form2.FMineList := TStringList.Create(); // Список с номерами мин на поле.
{--------------------- :8:}
{Главный цикл создания игрового поля :9:}
For i := 1 to Column do // Запускаем цикл создания по вертикали.
Begin
For j:=1 to Row do // Теперь тоже самое по горизонтали.
bEgin
SpeedButton[j] := TSpeedButton.Create(Self); // Создаём очередную ячейку на поле.
SpeedButton[j].Parent := GamePanel; // Этим параметром указываем, что ячейка принадлежит первой форме.
SpeedButton[j].Top := iTop; // Задаём расположение ячейки по вертикали.
SpeedButton[j].Name := cColumn + IntToStr(iRow); // Задаём имя ячейки.
SpeedButton[j].Flat := True; // Используем св-во кнопок не отображаться на рисунке.
SpeedButton[j].Font.Color := clBlue; // Делаем цвет текста синим.
SpeedButton[j].Font.Style := [fsBold]; // Делаем шрифт жирным.
SpeedButton[j].OnClick := SpeedButton1.OnClick; // Указываем, какая процедура будет вызываться при клике на ячейку.
SpeedButton[j].OnMouseDown := SpeedButton1.OnMouseDown; // Указываем, какая процедура будет вызываться при нажатии на ячейку.
SpeedButton[j].Left := iLeft+8; // Задаём расположение ячейки по горизонтали, смещая её на 8 пикселей вправо.
{Устанавливаем бомбу в ячейку. :10:}
If (iMine <> 0) and (SpeedButton[j].Name <> 'A1') then // Если кол-во бомб не превышено, то...
beGin
Randomize; // Генерируем список ПСЧ.
SpeedButton[j].Tag := Random(2); // Случайным образом задаём, будет ли бомба находится в ячейке.
If SpeedButton[j].Tag = 1 then
begin
Form2.FMineList.Add(SpeedButton[j].Name); // Добавляем новую запись в массив бомб.
Dec(iMine); // Уменьшаем счетчик мин на единицу.
end;
enD;
{----------------------------- :10:}
FObjectList.Add(SpeedButton[j]);// Добавляем новую запись в массив ячеек.
iLeft := iLeft + 24; //Увеличиваем расстояние между ячейками.
If iRow = Row then iRow := 1 // Если номер следующей ячейки по горизонтали неправильный, то меняем его на 1.
Else Inc(iRow); // Иначе увеличиваем номер.
eNd;
cColumn := Char(Ord(cColumn) + 1); // Увеличиваем номер ячейки по вертикали.
iTop := iTop + 24; // Увеличиваем положение ячейки по вертикали.
iLeft := 0; // Обнуляем позицию ячейки по горизонтали.
End;
{----------------------------------- :9:}
ImageList1.GetBitmap(0, (FindComponent('A1') as TSpeedButton).Glyph); // Загружаем спрайт в первую ячейку.
Form2.FMineList.SaveToFile('OUTPUT.TXT'); // Сохраняем расположение мин в файл.
MineCountLabel.Caption := IntToStr(Form2.FMineList.Count); // Показываем колво мин на поле.
END;
Function TForm1.CheckMove(X,Y : ShortString): Boolean; // Функция проверки валидности ячейки. Она должна находится рядом с текущей.
Var
iXod, iAlf : Integer; // Вспомогательные переменные.
BEGIN
result := false; // Презумпция вины :)
iXod := Abs(StrToInt(Y) - StrToInt(dPos.yInt)); // Получаем расстояние до текущей ячейки по горизонтали.
iAlf := Abs(Ord(dPos.xChr) - Ord(X[1])); // Получаем расстояние до текущей ячейки по вертикали.
If ((iXod <= 1) and (iAlf <= 1)) and ((iXod <> 0) or (iAlf <> 0)) then result := true; // И если оно не больше одного, то разрешаем ход.
END;
Procedure TForm1.SpeedButton1Click(Sender: TObject); // Главная процедура нажатия на кнопку(ячейку).
Var
i : Integer; // Счётчик цикла.
cObject : TSpeedButton; // Сам объект.
Str, j : String; // Вспомогательная переменная имени ячейки.
Count : Integer; // Вспомогательная переменная. (стр. 160)
BEGIN
{Подготавливаем переменные :1:}
cObject := TSpeedButton(Sender); // Получаем ячейку, на которую кликнули.
Str := cObject.Name; // Присваиваем вспомогательной переменной имя задействованной ячейки.
dClick.xAlf := Str[1]; // Присваиваем переменной первый символ задействованной ячейки по вертикали.
dClick.yFlt := Copy(Str, 2, Length(Str)); // Получаем номер ячейки по горизонтали.
{------------------------- :1:}
...
По просьбам желающих. Код некогда созданной мною игрушки Сапёр. Отдельный прикол, это как потом все эти кнопки удаляются.
+81
Если ты имеешь в виду, что появляются полосы прокрутки и
уродуют окно или stringgrid, то просто оставляй "запас" в
несколько пикселей, т.к. на разных системах может быть разная
ширина краев формы и прочих элементов.
А что, я еще и код писать должен чтобы какие-то экзотичные
темы винды поддерживать? Нет уж, я лучше несколько
пикселей оставлю запаса.
Вся суть дельфинов
http://www.gamedev.ru/code/forum/?id=168899