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

4.1.5 procedure Zamena;

Программа в зависимости от выбора направления осуществляет перестановку элементов в двумерном массиве.

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


4.1.6 procedure proverka;

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


4.1.7 procedure Mesto;

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

4.1.8 procedure Game15;

Эта процедура является основной. В ней подключается графический модуль и происходит основной процесс игры.

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


4.2 Вспомогательные процедуры.

 

4.2.2 procedure readFile;

После ввода имени пользователя (пункт 4.1.7), информация добавляется в файл res.txt


4.2.3 procedure writeFile;

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


4.2.4 procedure bonus;

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

4.3 Основная программа.


В основной программе на экране выводится Главное меню и в зависимости от выбранных пользователем действий происходит взаимодействие с процедурами.

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

5.         Описание алгоритма программы


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

Основной алгоритм программы разбит на четыре раздела (схема 1):

-        Описание;

-        Управление;

-        Игра;

-        Результаты.


 




      










Схема 1 - Основной алгоритм программы


5.1 Раздел Описание.

 

Данный раздел предназначен для ознакомления пользователем, с возможностями, программы.

Раздел реализован при помощи процедуры Avtor. Данная процедура считывает информацию из файла fhelp1.txt и выводит считанную информацию на экран, для ознакомления пользователю.

Общий алгоритм данного раздела заключается в следующем (Схема 2):

–           Чтение информации из файла fhelp1.txt;

–           Вывод информации из файла на экран;

–           Закрытие файла.













Схема 2 Алгоритм - Описание


5.1.1 Чтение файла.

При помощи процедуры assign(f,'fhelp1.txt'), связываем файловую переменную f с файлом fhelp1.txt, к которому происходит обращение. В данном варианте не описывается полный путь к файлу, подразумевая, что данный файл находится в корне каталога с программой. Это необходимо в тех случаях, когда пользователь захочет перенести файлы программы в любое удобное для него место, если бы был прописан полный путь, тогда пользователь не мог бы перемещать файлы программы, а в случае перемещения, информация из раздела Описание, не выводилась бы на экран. В этом случае, необходимо было бы точно устанавливать файлы программы, в то место, где было бы прописано. Далее при помощи процедуры reset(f) открываем файл для чтения.


5.1.2 Вывод информации на экран осуществляется при помощи инструкций readln(f,g1); writeln(g1). В данной инструкции, переменной g1, сначала при помощи readln присваивается строка из файла fhelp1.txt, а затем при помощи writeln выводится на экран содержимое переменной g1.


5.1.3 Закрытие файла, осуществляется при помощи процедуры close (f);


5.2 Раздел Управление.


В данном разделе, пользователю предлагается ознакомиться с клавишами управления.

Раздел реализован при помощи процедуры help. Данная процедура считывает информацию из файла fhelp.txt и выводит считанную информацию на экран для ознакомления пользователю.

Реализована данная процедура, точно таким же способом, как и в разделе 5.1 Описание, за исключением того, что обращение происходит к файлу fhelp.txt, по этому подробно останавливаться на данном разделе не имеет смысла.


5.3 Раздел Игра.


Данный раздел является основным. Именно в этом разделе происходят основные события. Реализован данный алгоритм при помощи процедуры Game15.

Алгоритм данного раздела заключается в следующем:

-        Инициализация графического режима;

-        Заполнение в памяти компьютера табло случайными цифрами;

-        Вывод табло на экран;

-        Ввод направления перехода;

-        Поиск пустого элемента;

-        Перемещение элементов табло;

-        Проверка;

-        Итог;

-        Ввод личных данных.

Схематично, данный алгоритм, показан на схеме 3.


 




                            

 



      

 












      

 


Нет

                                                           Нет


                                                       Да

 


                                 

                               Да

 


      

                                                        Нет




Схема 3 – Раздел Игра.


5.3.1 Инициализация графического режима осуществляется в этой же процедуре Game15, при переходе из Главного меню программы в раздел ИГРА. Переход к графическому режиму осуществляется, при помощи процедуры InitGraph (grDriver, grMode, grPath), где grDriver – это используемы программой драйвер видеоадаптера (VGA), grMode – режим работы видеосистемы (VGAHi), grPath – это место нахождения файла EGAVGA.BGI на диске (как и в случае с файлами, пишем только имя и расширение файла, а не полный путь, для того чтоб в будущем можно было перемещать файлы программы).


5.3.2       Заполнение табло случайными цифрами.

В памяти компьютера создается табло, в котором, в дальнейшем будут производиться перестановки. Табло состоит из шестнадцати клеток (четыре строки и четыре столбца), которое заполняется пятнадцатью, неповторяющимися цифрами от 1 до 15 и одной пустой клеткой.

Данный раздел реализован при помощи процедуры Tablo.  Фактически табло, которое описывается ранее это двумерный массив с цифрами от 1 до 15 и ноль. Но отображение цифр на экране и ноля, вместо пустого элемента, делает табло не красивым. Отсюда следует, что двумерный массив, должен содержать строковые или символьные элементы.

Следующем моментом реализации данной процедуры, является заполнение табло случайными цифрами. Для заполнения табло случайными цифрами используется функция random, которая является генератором случайных цифр, но работает соответственно только с цифрами, а у нас строковый двумерный массив.

Проанализировав выше сказанное, приходим к тому, что необходимо создать два массива. Один одномерный из шестнадцати элементов типа integer, второй двумерный, четыре на четыре, типа string. Сначала одномерный массив, в случайном порядке, заполняется целыми неповторяющимися цифрами от 1 до 16, а затем в зависимости от расположения цифр, заполняется двумерный строковый массив. К примеру, если первый элемент одномерного массива равен цифре 11 тогда первому элементу двумерного массива будет присвоено строка «11».

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



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