БАЛТИЙСКАЯ ГОСУДАРСТВЕННАЯ АКАДЕМИЯ РЫБОПРОМЫСЛОВОГО ФЛОТА
Кафедра «Автоматизированные системы обработки информации и управления»
Лабораторная работа №3
По дисциплине «Технологии программирования»
На тему «Создание игры «Сапер» на языке Turbo pascal 7.0»
Выполнил:
Студент гр.Ас-41
Беляев Д.А.
Проверил:
Захаров В.В.
Калининград
2012
Автоматная задача
Ограничения на совместимость:
- Совместимость с изделиями-предшественниками:
В состав программного продукта входит модуль драйвера мыши “Mouse.pas”, служащий для инициализации и работы в операционной системе Dos манипулятора «мышь». В программе использованы некоторые процедуры и функции данного модуля, написанные на языке assembler. Ограничений на совместимость нет.
Также для работы с графикой был использован драйвер EGAVGA.BGI, совместимый без ограничений с программным обеспечением и операционной системой Dos 6.22.
- Совместимость с изделиями-компаньонами:
Операционная система Dos 6.22 однозадачна, что не позволяет одновременное выполнение программы с программами-компаньонами.
Аппаратные ограничения:
Процессор 8086, 80386 или новее RAM 512 KB HDD 5 MB Video CGA, EGA, VGA или лучше
Программные ограничения:
- Операционная система Dos 6.22 (либо интерпретатор команд Cmd.exe или аналогичный)
- Файл EGAVGA.BGI в каталоге с программой для корректного отображения графики
Архитектура функций:
FieldSize - изменяет ширину и высоту игрового поля. Значения вводятся пользователем
AddMines – выставляет некоторые значения массива игрового поля в значение «10» согласно алгоритму, что эквивалентно «мине» в визуальном представлении. На входе и выходе – массив ИП
AddNums – просчитывает и расставляет цифры вместо нулевых значений в массиве ИП. Каждая из цифр отображает количество мин в смежных ячейках ИП
Step(xx,yy) – на вход процедуре подается пара чисел (индекс ячейки из массива ИП). Если значение соответствующей ячейки равно «9», то в визуальном представлении ИП отображается «0»; если значение ячейки равно 10, то «мина»; если другая цифра, то эта цифра и отобразится
Open(xx,yy) – открывает значение ячейки (или группы ячеек) ИП. На входе пара чисел (индекс ячейки из массива ИП).
Вызывается процедура «step». Если значение элемента массива ИП с заданными индексами равно «0», то проверяются смежные элементы. Если значение смежного элемента больше нуля, то вызывается процедура «step» с индексами этого элемента в качестве параметров. Если значение смежного элемента равно нулю то рекурсивно вызывается функция «Open» с индексами этого элемента в качестве параметров. Если хоть одно значение элемента равно «10», то появляется надпись «Game over» и инициируется событие нажатия клавиши «Enter» (для завершения игры)
Спецификация функций
5.1) FieldSize
5.1.1) Действующее программное ограничение
Dos 6.22
5.1.2) Результаты
Переменным HField и WField присваиваются значения, введенные пользователем
-
Переменные
Тип данных
Диапазон значений
Описание
HField
Байт
1-20
Высота ИП (в ячейках)
WField
Байт
1-30
Ширина ИП (в ячейках)
5.1.3) Семантика
При вводе некорректных символов, либо чисел не входящих в допустимый диапазон значений, на экране отобразится сообщение «Ошибка! Повторите ввод» и процедура перезапустится
5.1.4) Входы процедуры
Переменные HField и WField
5.1.5) Надежность
Процедура прерывается при некорректном вводе данных, но выдает сообщение об ошибке и перезапускается. При ошибке не влияет на работу других частей программного обеспечения.
5.1.6) Рабочие характеристики
Время выполнения около 1мс. На хранение переменных отводится 2 байта памяти
5.1.7) Внутренние ограничения
В аналогичной игре «Сапер», входящей в состав операционной системы Windows, максимально задаваемая высота равна 24
5.2) AddMines
5.2.1) Действующее программное ограничение
Dos 6.22
5.2.2) Результаты
Массив ИП заполняется минами. Во внутреннем представлении массив будет выглядеть как матрица, состоящая из «0» и «10»
-
Переменные
Тип данных
Диапазон значений
Описание
Field[i,j]
Байт
0,10
Массив с расставленными минами
5.2.3) Семантика
Если при генерации очередной «мины» ее координаты совпадают с уже созданной, то текущая итерация создания «мины» повторяется
5.2.4) Входы процедуры
Обнуленный массив игрового поля Field[i,j]
5.2.5) Надежность
При малых значениях высоты и ширины ИП возможна длительная по времени генерация мин, даже приводящая к зависанию программы. Не рекомендуется использовать значения ширины и высоты меньше, чем 10.
5.2.6) Рабочие характеристики
Время выполнения варьируется от 1мс до 1сек
5.2.7) Внутренние ограничения
В аналогичной игре «Сапер», входящей в состав операционной системы Windows, расстановка мин ведется по другому алгоритму, а также не может приводить к зависанию программы
5.3) Step (xx, yy)
5.3.1) Действующее программное ограничение
Dos 6.22
EGAVGA.BGI
5.3.2) Результаты
После выполнения процедуры в визуальном представлении поля отобразится ячейка с координатами (xx,yy)
5.3.3) Семантика
Ошибка может произойти только при передаче некорректных параметров в процедуру, что контролируется при написании основного тела программы
5.3.4) Входы процедуры
Массив игрового поля Field[i,j], координаты xx и yy ячейки ИП, над которой будут производиться операции
5.3.5) Надежность
Для предотвращения выхода за пределы массива ИП при вызове процедуры на максимальных и минимальных значениях xx и yy, введены ограничения, не позволяющие производить операции визуализации данных
5.3.6) Рабочие характеристики
Время выполнения 1мс
5.3.7) Внутренние ограничения
В аналогичной игре «Сапер», входящей в состав операционной системы Windows, мина более похожа на реально существующую морскую мину, а в этой интерпретации игры она выглядит как «*»
5.4) AddNums
5.4.1) Действующее программное ограничение
Dos 6.22
5.4.2) Результаты
Массив ИП заполняется цифрами. Во внутреннем представлении массив будет выглядеть как матрица, состоящая из цифр от 0 до 10
-
Переменные
Тип данных
Диапазон значений
Описание
Field[i,j]
Байт
0-10
Массив ИП
5.4.3) Семантика
Потенциальных условий возникновения ошибок не выявлено
5.4.4) Входы процедуры
Массив игрового поля Field[i,j] с расставленными минами
5.4.5) Надежность
Процедура надежно защищена от сбоев
5.4.6) Рабочие характеристики
Время выполнения от 1мс до 3мс
5.4.7) Внутренние ограничения
В аналогичной игре «Сапер», входящей в состав операционной системы Windows, ячейки, рядом с которыми отсутствуют мины обозначаются серым цветом, а в этой интерпретации нулем.
5.5) Open(xx, yy)
5.5.1) Действующее программное ограничение
Dos 6.22
EGAVGA.BGI
5.5.2) Результаты
Результатом работы процедуры является открытие одной или нескольких (при нажатии пользователем на клетку, не содержащую рядом мину) ячеек игрового поля
-
Переменные
Тип данных
Диапазон значений
Описание
Field[i,j]
Байт
0-10
Массив ИП
5.5.3) Семантика
Потенциальных условий возникновения ошибок не выявлено
Возможные варианты завершения процедуры:
Если значение элемента массива ИП с заданными индексами равно «0», то проверяются смежные элементы. Если значение смежного элемента больше нуля, то вызывается процедура «step» с индексами этого элемента в качестве параметров. Если значение смежного элемента равно нулю то рекурсивно вызывается функция «Open» с индексами этого элемента в качестве параметров. Если хоть одно значение элемента равно «10», то появляется надпись «Game over» и инициируется событие нажатия клавиши «Enter» (для завершения игры)
5.5.4) Входы процедуры
Массив игрового поля Field[i,j]; координаты xx и yy ячейки ИП, над которой будут производиться операции
5.5.5) Надежность
Процедура незащищена из-за с процедурой step(xx, yy). При её некорректной работе, данная процедура также будет вести аварийный характер
5.5.6) Рабочие характеристики
Время выполнения от 1мс до 10мс
5.5.7) Внутренние ограничения
В аналогичной игре «Сапер», входящей в состав операционной системы Windows, об окончании игрового процесса пользователя информирует картинка-«смайл», в данной интерпретации – надпись «Game over»
5.5) Open(xx, yy)
5.5.1) Действующее программное ограничение
Dos 6.22
EGAVGA.BGI
5.5.2) Результаты
Результатом работы процедуры является открытие одной или нескольких (при нажатии пользователем на клетку, не содержащую рядом мину) ячеек игрового поля
-
Переменные
Тип данных
Диапазон значений
Описание
Field[i,j]
Байт
0-10
Массив ИП
5.5.3.1) Семантика
Потенциальных условий возникновения ошибок не выявлено
Возможные варианты завершения процедуры:
Если значение элемента массива ИП с заданными индексами равно «0», то проверяются смежные элементы. Если значение смежного элемента больше нуля, то вызывается процедура «step» с индексами этого элемента в качестве параметров. Если значение смежного элемента равно нулю то рекурсивно вызывается функция «Open» с индексами этого элемента в качестве параметров. Если хоть одно значение элемента равно «10», то появляется надпись «Game over» и инициируется событие нажатия клавиши «Enter» (для завершения игры)
5.5.3.2) Блок-схема
xx, yy
Step (xx,yy)
нет
Field(xx,yy)=0
да
нет
Field(xx+-1,yy+-1)=0
да
Open(xx+-1,yy+-1)
нет
Open(xx+-1,yy+-1)>0
да
Step(xx+-1,yy+-1)
Field(xx,yy)=10
нет
Game over
да
к
к
5.5.4) Входы процедуры
Массив игрового поля Field[i,j]; координаты xx и yy ячейки ИП, над которой будут производиться операции
5.5.5) Надежность
Процедура незащищена из-за с процедурой step(xx, yy). При её некорректной работе, данная процедура также будет вести аварийный характер
5.5.6) Рабочие характеристики
Время выполнения от 1мс до 10мс
5.5.7) Внутренние ограничения
В аналогичной игре «Сапер», входящей в состав операционной системы Windows, об окончании игрового процесса пользователя информирует картинка-«смайл», в данной интерпретации – надпись «Game over»