if ord (ch) = 77 then {Якщо натиснута клавіша вправо}
begin
if stolb <> 1 then {Якщо це не останній елемент, що стоїть біля кордону табло}
begin
as [strok, stolb]: = as [strok, stolb-1]; {На місце порожнього елемента присвоюється елемент стоїть ліворуч від порожнього}
as [strok, stolb-1]: = ' '; {Елементу стоїть ліворуч від порожнього присвоюється порожній елемент}
stolb: = stolb-1; {Нова координата порожнього елемента}
hod: = hod +1; {Черговий зроблений хід}
end;
end;
if ord (ch) = 80 then {Якщо натиснута клавіша вниз}
begin
if strok <> 1 then {Якщо це не останній елемент, що стоїть біля кордону табло}
begin
as [strok, stolb]: = as [strok-1, stolb]; {На місце порожнього елемента привласнюється елемент стоїть зверху від порожнього}
as [strok-1, stolb]: = ' '; {Елементу стоїть зверху від порожнього присвоюється порожній елемент}
strok: = strok-1; {Нова координата порожнього елемента}
hod: = hod +1; {Черговий зроблений хід}
end;
end;
Vivod;
end;
procedure readFile;
{Додає в файл інформацію про кращі результати}
begin
assign (f, 'res.txt'); {Оголошення файлу}
reset (f); {Відкриття файлу}
j: = 1;
for i: = 1 to 10 do
begin
readln (f, res [i]); {Занесення імен кращих гравців з файлу в масив}
readln (f, it [j]); {Занесення результатів кращих гравців в масив}
j: = j +1; {Лічильник для кращих результатів}
end;
close (f);
end;
procedure writeFile;
{Зчитує файл з кращими результатами}
begin
assign (f, 'res.txt'); {Оголошення файлу}
rewrite (f); {Відкриття в режимі перезапису}
for i: = +1 to 10 do
begin
writeln (f, resv [i]); writeln (f, itv [i]); {Внесення інформації про кращі гравцях та їх результати з масивів у файл}
end;
close (f);
end;
procedure Mesto;
{Процедура в якої встановлюється зайняв Чи гравець яке або місце, якщо так то занесення до список кращих гравців}
var chetcik: integer; {Лічильник, оголошує що інформація про лучім гравцеві вже внесена, повторної інформації не повинно бути}
begin
if prov = true then {Якщо гравець розклав розклад}
begin
readfile; {Процедура зчитування інформації з файлу з кращими результатами}
chetcik: = 0;
j: = 1;
for i: = 1 to 10 do
begin
if (hod <= it [i]) and (Hod> = it [i-1]) and (chetcik <1) then
begin
{Введення імені гравця}
OutTextXY (132,325, 'will Enter name and press Enter: ');
line (400,338,530,338);
GoToXY (52,21),
read (name);
{Присвоєння чергового елементу даних поточного гравця}
itv [i]: = hod;
resv [i]: = name;
j: = j +1;
chetcik: = 1;
end;
{Перенесення з одного масиву в інший}
if j <= 10 then
begin
itv [j]: = it [i];
resv [j]: = res [i];
j: = j +1;
end;
end;
writeFile; {Збереження інформації у файл}
OutTextXY (230,360, 'For leaving press ENTER ');
readln;
end;
end;
procedure proverka;
{Перевірка чи правильно розкладено табло}
begin
prov: = false;
if (as [1,1] = '1 ') and (As [1,2] = '2 ') and (as [1,3] = '3') and (as [1,4] = '4 ')
and (as [2,1] = '5 ') and (As [2,2] = '6 ') and (as [2,3] = '7') and (as [2,4] = '8 ')
and (as [3,1] = '9 ') and (As [3,2] = '10 ') and (as [3,3] = '11') and (as [3,4] = '12 ')
and (as [4,1] = '13 ') and (As [4,2] = '14 ') and (as [4,3] = '15') and (as [4,4] = '')
then
begin
prov: = true; {Якщо табло розкладено вірно, то ІСТИНА}
OutTextXY (230,100, 'Congratulate You have won ');
Mesto; {Процедура, що встановлює на якому місці поточний користувач}
end;
end;
procedure Game15;
{Підключення графіки і перехід в режим ІГРИ}
var grMode: integer; {Режим роботи відеосистеми}
grPath: string; {Шлях до файлу}
grDriver: integer; {Використовуваний програмою драйвер відеоадаптера}
begin
hod: = 0;
grDriver: = VGA;
grmode: = VGAHi;
grPath: = 'EGAVGA.BGI';
initGraph (grDriver, grMode, grPath); {Ініціалізація графічного режиму}
Tablo; {Формування табло}
Poisk; {Пошук порожнього елемента}
repeat {Цикл, поки не натиснута клавіша ESC або поки гравець не переміг грати} <...