program Code;
type
//Grid = array [0..7, 0..7] of Integer;
Grid = Array[0..7] of Array[0..7] of Integer;
Direction = (Up, Down, Left, Right);
var
x, y: Integer;
procedure UpdateGrid(var MainGrid: Grid);
var
i, j: Integer;
begin
for (i := 0 to (Length(MainGrid) - 1)) do
begin
for (j := 0 to (Length(MainGrid[i] - 1)) do
begin
MainGrid[i][j] := GetColor(189 + (i * 40), 45 + (j * 40));
end;
end;
end;
procedure MovePieceDirection(i: Integer, j: Integer, Dir: Direction);
begin
case Dir of
Up: begin HoldMouse(189 + (i * 40), 45 + (j * 40), true);
wait(10);
MoveMouseSmooth(189 + (i * 40), 45 + ((j - 1) * 40));
wait(10);
ReleaseMouse(189 + (i * 40), 45 + ((j - 1) * 40), true);
end
Down: begin HoldMouse(189 + (i * 40), 45 + (j * 40), true);
wait(10);
MoveMouseSmooth(189 + (i * 40), 45 + ((j + 1) * 40));
wait(10);
ReleaseMouse(189 + (i * 40), 45 + ((j + 1) * 40), true);
end
Left: begin HoldMouse(189 + (i * 40), 45 + (j * 40), true);
wait(10);
MoveMouseSmooth(189 + ((i + 1) * 40), 45 + (j * 40));
wait(10);
ReleaseMouse(189 + ((i + 1) * 40), 45 + (j * 40), true);
end
Right: begin HoldMouse(189 + (i * 40), 45 + (j * 40), true);
wait(10);
MoveMouseSmooth(189 + ((i - 1) * 40), 45 + (j * 40));
wait(10);
ReleaseMouse(189 + ((i - 1) * 40), 45 + (j * 40), true);
end
end;
procedure MovePiece(MainGrid: Grid);
begin
for (i := 0 to (Length(MainGrid) - 1)) do
begin
for (j := 0 to (Length(MainGrid[i] - 1)) do
begin
if ((MainGrid[i][j] = MainGrid[i + 2][j]) AND
(MainGrid[i][j] = MainGrid[i + 3][j])) then
begin
MovePieceDirection(i, j, Left);
exit;
end
else if ((MainGrid[i][j] = MainGrid[i - 2][j]) AND
(MainGrid[i][j] = MainGrid[i - 3][j]))
begin
MovePieceDirection(i, j, Right);
exit;
end
else if ((MainGrid[i][j] = MainGrid[i][j + 2]) AND
(MainGrid[i][j] = MainGrid[i][j + 3]))
begin
MovePieceDirection(i, j, Down);
end
else if ((MainGrid[i][j] = MainGrid[i][j - 2]) AND
(MainGrid[i][j] = MainGrid[i][j - 3]))
begin
MovePieceDirection(i, j, Up);
end
end;
end;
end;
procedure Main();
var MainGrid: Grid;
begin
repeat
UpdateGrid(MainGrid);
MovePiece(MainGrid);
wait(800);
until(false);
end;
begin
Main();
end.