Рефераты. Игра "Пятнашки"

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 или пока игрок не победил играть}

Zamena; {Передвижение в массиве}

proverka; {Проверка является ли данный расклад верным}

until (ord (ch)=27) or (prov=true);

closeGraph; {Закрытие графического режима}

end;

procedure help;

{Переход в режим справки}

var f: text; {Файловая переменная}

g1:string; {Переменная для работы со строками в файле}

begin

clrscr;

assign(f,'fhelp.txt'); {Объявление файла}

reset(f); {Открытие файла}

readln(f,g1); writeln(g1); {Присвоение переменной строки файла и вывод ее на экран}

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

writeln('For leaving press ENTER');

readln;

close(f);{Закрытие файла}

end;

procedure result;

{Отображение лучших игроков}

begin

clrscr;

GoToXY(26,5);

writeln('Best players');

assign(f,'res.txt');

reset(f);

readfile; {Считывание информации из файла лучших результатов}

{Вывод на экран в строгом порядке имена и результаты лучших игроков}

GoToXY(26,8); write('Move Name');

GoToXY(26,10); write(it[1]);GoToXY(36,10); writeln(res[1]);

GoToXY(26,11); write(it[2]);GoToXY(36,11);writeln(res[2]);

GoToXY(26,12); write(it[3]);GoToXY(36,12);writeln(res[3]);

GoToXY(26,13); write(it[4]);GoToXY(36,13);writeln(res[4]);

GoToXY(26,14); write(it[5]);GoToXY(36,14);writeln(res[5]);

GoToXY(26,15); write(it[6]);GoToXY(36,15);writeln(res[6]);

GoToXY(26,16); write(it[7]);GoToXY(36,16);writeln(res[7]);

GoToXY(26,17); write(it[8]);GoToXY(36,17);writeln(res[8]);

GoToXY(26,18); write(it[9]);GoToXY(36,18);writeln(res[9]);

GoToXY(26,19); write(it[10]);GoToXY(36,19);;writeln(res[10]);

GoToXY(26,23);writeln('For leaving press ENTER');

readln;

end;

procedure avtor;

{Вывод общей информации на экран в раздел описание }

var f: text; {Файловая переменная}

g1:string; {Переменная которой присваивается очередная строка из файла и выводится на экран}

begin

clrscr;

assign(f,'fhelp1.txt');

reset(f);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

readln(f,g1); writeln(g1);

writeln('For exit press ENTER');

readln;

close(f);

end;

begin

{Основная программа}

{Вывод на экран главного меню}

{Элементы Главного меню, один из которых закрашен белым цветом, а остальные зеленым}

men[1]:=15;

men[2]:=2;

men[3]:=2;

men[4]:=2;

men[5]:=2;

repeat

clrscr;

strok:=1; {Текущая строка}

Lom:=1;

{Выбор цветов}

GoToXY(32,10); Textcolor(men[1]); writeln('Key');

GoToXY(32,11); Textcolor(men[2]); writeln('About program');

GoToXY(32,12); Textcolor(men[3]); writeln('Play');

GoToXY(32,13); Textcolor(men[4]); writeln('Results');

GoToXY(32,14); Textcolor(men[5]); writeln('Exit');

ch:=readkey; {Выбор направления передвижение элементов меню}

if (ord(ch)=80) then {Если вниз тогда текущий становится белым, а нижний становится зеленым}

begin

for i:=1 to 5 do

begin

if (men[i]=15) and (strok<>5) then

begin

men[strok]:=2;

men[strok+1]:=15;

end

else strok:=strok+1;

end;

end;

if ord(ch)=72 then {Если вверх, то текущий белым, а верхний зеленым}

begin

for i:=1 to 5 do

begin

if (men[i]=15) and (strok<>1)then

begin

men[strok]:=2;

men[strok-1]:=15;

end

else strok:=strok+1;

end;

end;

if ord(ch)=13 then {Если нажат ENTER}

begin

for i:=1 to 5 do

begin

if men[i]=15 then

begin

if Lom=1 then begin Help; break; end; {Переход в режим справки}

if Lom=2 then begin avtor; break; end; {Переход в режим игры}

if Lom=3 then begin Game15;break; end; {Переход в режим игры}

if Lom=4 then begin result;break; end; {Переход в режим игры}

end

else Lom:=Lom+1;

end;

end;

until Lom=5 {До тех пор пока не нажат пункт EXIT}

end.

Приложение 2 Результаты работы.

Для демонстрации результата работы программы, возьмем основной раздел ИГРА.

При запуске программы появляется табло, заполненное случайными неповторяющееся цифрами от 1 до 15 и один пустой элемент (Рисунок 8).

Рисунок 8 - Основное табло со случайными числами

Далее пользователю предлагается сделать ход. К примеры переместить цифру на пустое место. Для этого необходимо нажать клавишу (вверх) на клавиатуре. В результате цифра один переместится вверх, а пустая клетка перемещается на место единицы (Рисунок 9).

Рисунок 9 - Первый ход

В дальнейшем перемещая по одной клетки, при помощи курсора, расклад будет выполнен. Весь процесс до победы может занять очень много ходов, поэтому перейдем к предпоследнему моменту.

К примеру, игрок долго играл и у него выпал следующий расклад (Рисунок 10).

Рисунок 10 - очередной ход.

Теперь пользователю необходимо сделать один, последний ход, а именно переместить клетку с цифрой 15 на пустой элемент. В результате расклад будет выполнен (Рисунок 11).

В случае если игрок разложил требуемый расклад за наименьшее количество ходов, чем игроки, игравшие ранее, то пользователю предлагается ввести имя и в дальнейшем его имя и результаты будет отображаться в разделе Результаты (Рисунок 11).

Рисунок 11 - конец игры

Страницы: 1, 2, 3, 4, 5, 6



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.