我写的打乱步骤核心部分代码。
Randomize;
move := '';
i := 0;
while (i < edRnd.IntValue) do
begin
ti := Round(Random(max));
if (i > 0) and (ti = arr[i - 1]) then
Continue;
if (i > 1) and (ti = arr[i - 2]) and ((ti div 3) = (arr[i - 2] div 3)) then
Continue;
arr := ti;
Inc(i);
end;
for i := 0 to edRnd.IntValue - 1 do
begin
ti := Floor(Random(max - 1));
if ti = 4 then
move := move + asMoves[arr] + '2'
else if (ti = 2) or (ti = 3) then
move := move + asMoves[arr] + #39
else
move := move + asMoves[arr];
move := move + ' ';
end;作者: lpx152301 时间: 2009-5-8 20:38:35