аповнення поточному кольором}
Bar (x, y, x + w1, y + h1); {Малювання клітини}
end;
lx: = 245;
ly: = 162;
for i: = 1 to 4 do {Цикл висновку двомірного масиву по вгору клітин}
begin
for j: = 1 to 4 do
begin
OutTextXY (lx, ly, as [i, j]); {Виведення тексту на екран}
lx: = lx +35;
end;
lx: = 245;
ly: = ly +35;
end;
line (220,135,220,300); {Малювання рамки}
line (385,135,385,300),
line (220,135,385,135);
line (220,300,385,300);
end;
procedure Tablo;
{Формування табло при першому запуску заповнене випадковими і неповторяющимися цифрами}
var b: integer; {Змінна, якої присвоюється випадкове число}
k, z: integer; {Лічильники для операцій з масивами}
begin
randomize;
For z: = 1 to 16 do
begin
b: = random (15); {Вибір випадкового числа}
k: = 1;
while k <> 17 do {Цикл поки не буде заповнений масив з цілими цифрами}
begin
if bs [k] = b then
begin
b: = random (17);
k: = 1;
end
else k: = k +1;
end;
bs [z]: = b; {Присвоєння чергового неповторюваного елемента масиву}
end;
z: = 1;
for i: = 1 to 4 do {Заповнення двомірного масиву, замість цифр з одновимірного, присвоюються рядкові елементи}
begin
for j: = 1 to 4 do
begin
case bs [z] of
1: as [i, j]: = '1 ';
2: as [i, j]: = '2 ';
3: as [i, j]: = '3 ';
4: as [i, j]: = '4 ';
5: as [i, j]: = '5 ';
6: as [i, j]: = '6 ';
7: as [i, j]: = '7 ';
8: as [i, j]: = '8 ';
9: as [i, j]: = '9 ';
10: as [i, j]: = '10 ';
11: as [i, j]: = '11 ';
12: as [i, j]: = '12 ';
13: as [i, j]: = '13 ';
14: as [i, j]: = '14 ';
15: as [i, j]: = '15 ';
16: as [i, j]: = '';
end;
z: = z +1;
end;
end;
vivod; {Висновок табло на екран}
end;
Procedure Poisk;
{Пошук чистого елемента в табло}
begin
for i: = 1 to 4 do
begin
for j: = 1 to 4 do
begin
if as [i, j] = '' Then {Пошук, дорівнює чи поточний елемент прогалині}
begin
Strok: = i; {Якщо дорівнює, то присвоюються координати порожнього елемента}
Stolb: = J
end;
end;
end;
end;
procedure bonus;
{Бонус, для перевірки. При натисканні клавіші END на клавіатурі розклад збирається}
begin
as [1,1]: = '1 '; as [1,2]: = '2 '; As [1,3]: = '3'; as [1,4]: = '4 ';
as [2,1]: = '5 '; as [2,2]: = '6 '; As [2,3]: = '7'; as [2,4]: = '8 ';
as [3,1]: = '9 '; As [3,2]: = '10'; as [3,3]: = '11 '; as [3,4]: = '12';
as [4,1]: = '13 '; as [4,2]: = '14'; as [4,4]: = '15 '; as [4,3]: = '';
Strok: = 4; Stolb: = 3;
end;
procedure napravlenie;
{Введення напрямки переходу}
begin
ch: = readkey; {Перемінної присвоюється код клавіші, користувачем клавіші на клавіатурі}
end;
procedure Zamena;
{Пересування клітин з цифрами в залежності від вибору користувача}
begin
napravlenie; {Процедура, введення напрямки переходу}
if ord (ch) = 79 then bonus; {Якщо натиснута клавіша END на клавіатурі то розклад сам збирається}
if ord (ch) = 75 then {Якщо натиснута клавіша вліво}
begin
if stolb <> 4 then {Якщо це не останній елемент, що стоїть біля кордону табло}
begin
as [strok, stolb]: = as [strok, stolb +1]; {На місце порожнього елемента присвоюється елемент стоїть праворуч від порожнього}
as [strok, stolb +1]: = ' '; {Елементу стоїть праворуч від порожнього присвоюється порожній елемент}
stolb: = stolb +1; {Нова координата порожнього елемента}
hod: = hod +1; {Черговий зроблений хід}
end;
end;
if ord (ch) = 72 then {Якщо натиснута клавіша вгору}
begin
if strok <> 4 then {Якщо це не останній елемент, що стоїть біля кордону табло}
begin
as [strok, stolb]: = as [strok +1, stolb]; {На місце порожнього елемента прісваевается елемент стоїть знизу від порожнього}
as [strok +1, stolb]: = ' '; {Елементу стоїть знизу від порожнього прісваевается порожній елемент}
strok: = strok +1; {Нова координата порожнього елемента}
hod: = hod +1; {Черговий зроблений хід}
end;
end; ...