Содержание
.4.2 Функциональное назначение. 10
.4.3 Описание логической структуры программы. 10
5 Разработка алгоритмов программы. 11
6 Описание работы основного модуля программы 18
7 Руководство пользователя. 20
8 Руководство системного программиста. 21
9 Результаты отладки программы. 22
ВВЕДЕНИЕ
Любая программа должна взаимодействовать с периферийными устройствами персонального компьютера, в частности с дисплеем. Такое взаимодействие осуществляется на трех уровнях, влияющих на производительность и мобильность программ на уровне операционной системы программа обращается к устройству через системное обслуживания. Такой способ обеспечивает максимальную мобильность программы, но приводит к ее минимальной производительности. Кроме того, операционная система MS DOS не имеет графического интерфейса.
Программа может взаимодействовать с устройствами графического вывода информации с помощью базовой системы ввода / вывода. Этот способ имеет достаточно высокую мобильность и приемлемую производительность. Однако графические возможности базовой системы ввода / вывода ограничены.
В персональных компьютерах фирмы IBM программистам предоставлена возможность и прямого управления устройством через их регистры. В рамках данной курсовой работы все операции с графическим интерфейсом будем проводить с помощью графического пакета языка программирования Turbo - Pascal. Операторы позволяют определять характеристики драйвера, режим его работы и соответственно настроить графический пакет, команды перехода от графического режима к текстовому и наоборот. Основная группа графических операторов, непосредственно осуществляющих вывод графических примитивов (точек, линий, ломаных, окружностей) на экран графического дисплея. Также имеются операторы, позволяющие устанавливать параметры прорисовки графических примитивов (цвет, толщина, тип линии). Имеются операторы для определения параметров графических примитивов, которые могут быть установлены по умолчанию. Один и тот же графический приметив может быть нарисован на экране с использованием различных установок: цвет, тип линии, тип штриховки. Внесенные в палитру изменения немедленно отображаются на экране.
Также имеются процедуры для вывода текстовой информации и установления параметров текстового вывода.
В графическом режиме программа оперирует цветом каждого пиксела. Благородя этому, появляются возможности построения на экране сложных изображений, раскраски различных областей экрана, формирование движущихся объектов.
Однако эти возможности значительно усложняют программирование и снижают производительность персонального компьютера. Об этом свидетельствует простое сравнение объемов информации, с которыми приходится работать в текстовом и графическом режимах. Так например в случае 16-ти цветного графического режима с разрешающей способностью 640*350 пикселов требуемый объем видеобуфера увеличивается до 112000 байт.
Целью курсового проектирования является разработка программы имитирующий игру «Что?Где?Когда?». В процессе проектирования следует рассмотреть существующие графические примитивы, изучить работу с графическими модулями. Основной целью использования программы является разработка ее в качестве тренажера.
1Вариант задания.
Составить программу, моделирующую игру «Что?Где?Когда?». Для этого программа должна отобразить на экране игровое поле рулетки с указанием цифр секторов и цветов, а также величины ставок для каждого сектора. Для каждого сектора из банка вопросов случайным образом выбирается вопрос, сложность которого пропорциональна ставке.
В ходе игры случайным образом выбирается номер сектора, и выдается текст соответствующего вопроса. При этом вопрос формулируется так, что на него предусмотрен четкий и ясный ответ. В процессе игры фиксируется суммы верных и неверных ответов и суммы выигрышей.
2Описание задачи
Следует отметить, что построения данной задачи творческое, и формализация его достаточно затруднительна. Сначала разделим задачу построения данных графических примитивов на 2 подзадачи, в соответствии с трактовкой сходного задания:
-построения БД с вопросами и их случайным выбором и чередованием;
-заполнение графического экрана геометрическими фигурами различной формы и циклического вращение их по кругу, имитируя вращения трубки калейдоскопа и перемещения в ней разноцветных геометрических элементов.
Для построения графических примитивов следует определить координаты центра графического экрана и его максимальные координаты по оси абсцисс и по оси ординат.
Рисунок 1 Графические координаты.
Следовательно координаты центра экрана и центра любого графического окна можно найти по формуле:
Для организации игрового поля следует определить следующие координаты:
- координаты прямоугольника- графического экрана; - координаты центра круглого игрового стола - радиус окружности, описанной из центра примитива и проходящей через координаты прямоугольника.0,0,X0,Y0 – рамка со счетом игры.
В этом случае игровое поле примет вид:
Рисунок 2
3Структуры данных
Для хранения описанной ранее информации следует отметить разнородность данных, которые необходимо хранить. Для работы программы следует разработать унифицированную для всех тестов структуру хранения информации.
Наиболее удобной формой хранения разнородных данных является тип структура (запись). В языке Borland Pascal 7.0 она обозначается так
<ИМЯ> : record
<ИМЯ ПОЛЯ1> : <ТИП ПОЛЯ1>;
<ИМЯ ПОЛЯ2> : <ТИП ПОЛЯ2>;
---------------------------------------------
<ИМЯ ПОЛЯ M> : <ТИП ПОЛЯ M>;
end;
Для хранения данных в программе используем следующие структуры данных:
Trec_TST = record
use : integer;
name : string; {_наименование вопроса}
ans : string; {_наименование ответа}
end;
Trec_YN = record
use : integer;
name : string; {_наименование вопроса}
ans_int : integer; { ответ Y/N}
end;
Trec_USR = record
name : string; {_наименование вопроса}
psw : string; {_наименование ответа}
ans_am : integer; {_наименование ответа}
end;
Как следует из [1], поля могут быть разного типа, и все они группируются под именем записи. В качестве <ТИП ПОЛЯ M> любой скалярный тип.
Для ввода таких полей как «Наименование» достаточно 255 символов. Следовательно будем использовать тип String. На основании имеющейся информации составим структуру данных:
Название поля | Примечание |
Name | Вопрос |
Ans | Ответ |
Ans_RTIME | Ответ по типу да/нет |
Таблица 1
4Описание программы. .4.1Общие сведения.
Для решения поставленной задачи, ее наиболее трудоемкой части –ввод и хранения списка вопросов тестов. Его реализуем на языке Borland Pascal 7.0 под операционную систему MS-DOS. Данная ОС наиболее подходит для решения подобных задач и создания программного обеспечения способного решать задачи по работе со структурами данных и записи их в файл.
.4.2 Функциональное назначение.
Программа предназначена для решения конкретной задачи, описанной ранее. В ней применяются оптимальные методы хранения данных в файлах в двоичном виде. С ее помощью можно решать задачи достаточно большой размерности – хранить длинные списки вопросов. Хранения вопросов в текстовом виде, а не в двоичном формате дает дополнительную возможность по редактированию списка вопросов.
Программа должна поддерживать работу в 2 режимах:
ввод данных;
выдача результатов по указанным запросам.
.4.3 Описание логической структуры программы.
Написание программы будем вести нисходящим методом, постепенно уточняя задачу. Для этого разобьем задачу написания программы на несколько подзадач. Затем разработаем их алгоритмы и реализуем их в виде отдельных подпрограмм (процедур или функций). В основном теле программы организуем прорисовку меню, в котором перечисляются возможные действия и по их коду вызываются соответствующие им подпрограммы.
5Разработка алгоритмов программы.
Разделим задачу на несколько подзадач. Выделим следующие основные подзадачи:
построение главного меню;
организацию ввода файла с базой вопросов;
проведение игры;
работу с пользователями (игроками), их идентификацию.
Подзадачу проведение игры разделим на следующие подзадачи:
загрузку 12 вопросов из списка;
построение игрового поля;
проведение до 12 раундов игры;
подсчет очков.
Рассмотрим задачу проведения раунда игры подробнее. Она состоит из подзадач:
-выбора вопроса из 12 вопросов случайным образом;
-вывод содержимого вопроса на экран;
-ввод ответа.
Каждую задачу реализуем в качестве отдельной, независимой подпрограммы, в качестве параметров которой будем передавать необходимые ей данные или использовать для этого глобальные переменные.