Игра Что?Где?Когда? на Паскале

                                 Содержание
      ВВЕДЕНИЕ    3
       1    Вариант задания. 5
       2    Описание задачи  6
       3    Структуры данных 8
       4    Описание программы.    10
        4.1 Общие сведения.  10
        4.2 Функциональное назначение.  10
        4.3 Описание логической структуры программы.     10
       5    Разработка алгоритмов программы.  11
       6    Описание работы основного модуля программы   18
       7    Руководство пользователя.   20
       8    Руководство системного программиста.   21
       9    Результаты отладки программы.     22
      Заключение  23
      Литература  24


                                  ВВЕДЕНИЕ

      Любая программа должна взаимодействовать с периферийными  устройствами
персонального компьютера,  в  частности  с  дисплеем.  Такое  взаимодействие
осуществляется  на  трех   уровнях,   влияющих   на   производительность   и
мобильность программ на уровне операционной системы программа  обращается  к
устройству  через  системное   обслуживания.   Такой   способ   обеспечивает
максимальную  мобильность  программы,   но   приводит   к   ее   минимальной
производительности.  Кроме  того,  операционная  система  MS  DOS  не  имеет
графического интерфейса.
      Программа может взаимодействовать с устройствами  графического  вывода
информации с помощью базовой системы  ввода  /  вывода.  Этот  способ  имеет
достаточно  высокую  мобильность  и  приемлемую  производительность.  Однако
графические возможности базовой системы ввода / вывода ограничены.
      В  персональных  компьютерах  фирмы  IBM  программистам  предоставлена
возможность и прямого управления устройством через  их  регистры.  В  рамках
данной  курсовой  работы  все  операции  с  графическим  интерфейсом   будем
проводить с помощью  графического  пакета  языка  программирования  Turbo  -
Pascal. Операторы позволяют определять характеристики  драйвера,  режим  его
работы и соответственно настроить графический  пакет,  команды  перехода  от
графического режима к текстовому и  наоборот.  Основная  группа  графических
операторов,  непосредственно  осуществляющих  вывод  графических  примитивов
(точек, линий, ломаных, окружностей) на экран  графического  дисплея.  Также
имеются   операторы,   позволяющие   устанавливать   параметры    прорисовки
графических примитивов (цвет, толщина, тип  линии).  Имеются  операторы  для
определения  параметров   графических   примитивов,   которые   могут   быть
установлены по умолчанию. Один и тот  же  графический  приметив  может  быть
нарисован на экране с использованием различных установок: цвет,  тип  линии,
тип штриховки. Внесенные в  палитру  изменения  немедленно  отображаются  на
экране.
      Также имеются процедуры для вывода текстовой информации и установления
параметров текстового вывода.
      В графическом  режиме  программа  оперирует  цветом  каждого  пиксела.
Благородя  этому,  появляются  возможности  построения  на  экране   сложных
изображений, раскраски различных областей  экрана,  формирование  движущихся
объектов.
      Однако  эти  возможности  значительно  усложняют  программирование   и
снижают    производительность    персонального    компьютера.    Об     этом
свидетельствует простое сравнение объемов информации, с которыми  приходится
работать в текстовом и графическом режимах.  Так  например  в  случае  16-ти
цветного графического режима с  разрешающей  способностью  640*350  пикселов
требуемый объем видеобуфера увеличивается до 112000 байт.
        Целью  курсового  проектирования   является   разработка   программы
имитирующий  игру  «Что?Где?Когда?».  В  процессе   проектирования   следует
рассмотреть   существующие   графические   примитивы,   изучить   работу   с
графическими  модулями.  Основной  целью  использования  программы  является
разработка ее в качестве тренажера.

1 Вариант задания.

      Составить программу, моделирующую  игру  «Что?Где?Когда?».  Для  этого
программа должна  отобразить на экране  игровое  поле  рулетки  с  указанием
цифр секторов и цветов, а также  величины  ставок для каждого  сектора.  Для
каждого сектора из банка вопросов   случайным  образом  выбирается   вопрос,
сложность которого пропорциональна ставке.
      В ходе игры случайным образом выбирается  номер  сектора,  и  выдается
текст соответствующего вопроса. При этом вопрос формулируется так,  что   на
него предусмотрен четкий  и  ясный  ответ.   В  процессе   игры  фиксируется
суммы  верных и неверных ответов  и суммы выигрышей.

2 Описание задачи

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

1 построения БД с вопросами и их случайным  выбором и чередованием;


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

      Для построения графических примитивов  следует  определить  координаты
центра графического экрана и его максимальные координаты по  оси  абсцисс  и
по оси ординат.
                                    [pic]
                      Рисунок 1 Графические координаты.
      Следовательно координаты центра экрана и  центра  любого  графического
окна можно найти по формуле:
                                    [pic]
      Для организации игрового поля следует определить следующие координаты:
1. [pic] - координаты прямоугольника- графического экрана;
2. [pic] - координаты центра круглого игрового стола
3. [pic] - радиус окружности, описанной из  центра  примитива  и  проходящей
   через координаты прямоугольника.
4. 0,0,X0,Y0 – рамка со счетом игры.
      В этом случае игровое поле примет вид:
      [pic]
                                  Рисунок 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 Описание программы.


1 Общие сведения.

      Для решения поставленной задачи, ее наиболее трудоемкой части –ввод  и
хранения   списка вопросов  тестов. Его реализуем на  языке  Borland  Pascal
7.0 под  операционную  систему  MS-DOS.  Данная  ОС  наиболее  подходит  для
решения  подобных  задач  и  создания  программного  обеспечения  способного
решать задачи по работе со структурами данных и записи их в файл.

2  Функциональное назначение.

      Программа  предназначена  для  решения  конкретной  задачи,  описанной
ранее. В ней применяются оптимальные  методы  хранения  данных  в  файлах  в
двоичном  виде.  С  ее  помощью  можно  решать  задачи  достаточно   большой
размерности  –  хранить  длинные  списки  вопросов.  Хранения   вопросов   в
текстовом  виде,  а не в двоичном формате  дает дополнительную   возможность
 по редактированию списка вопросов.
       Программа  должна поддерживать работу  в  2 режимах:
ввод данных;
выдача результатов по  указанным запросам.


3  Описание логической структуры программы.

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



5 Разработка алгоритмов программы.

      Разделим задачу на  несколько  подзадач.  Выделим  следующие  основные
подзадачи:
построение главного меню;
организацию ввода файла с базой вопросов;
проведение игры;
работу с пользователями (игроками), их идентификацию.
      Подзадачу проведение игры разделим на следующие подзадачи:
загрузку 12 вопросов из списка;
построение игрового поля;
проведение до 12 раундов игры;
подсчет очков.
      Рассмотрим задачу проведения раунда игры  подробнее.  Она  состоит  из
      подзадач:

1 выбора вопроса из 12 вопросов случайным образом;


2 вывод содержимого вопроса на экран;


3 ввод ответа.


      Каждую   задачу   реализуем   в   качестве   отдельной,    независимой
подпрограммы, в качестве параметров которой будем передавать необходимые  ей
данные или использовать для этого глобальные переменные.
      Далее рассмотрим алгоритм работы основного меню:
      [pic]
                                  Рисунок 3
      Затем рассмотрим алгоритм ввода новых вопросов:
      [pic]
                                  Рисунок 4
      Рассмотри алгоритм ввода строки вопроса или ответа на него подробнее:
      [pic]
      Рассмотрим ввод пароля:

      [pic]
                                  Рисунок 5
Как видно алгоритм ввода строки  с  информацией  и  ввод  пароля  отличается
только то, что вместо введенного символа отображается  «*».   Эти  алгоритмы
можно  реализовать  одной  подпрограммой,  введя  признак  вводимой   строки
(пароль /данные).
      Рассмотрим алгоритм игры подробнее:
      [pic]
                                  Рисунок 6
      Рассмотрим алгоритм регистрации подробнее:
      [pic]



6 Описание работы основного модуля программы

      Основным модулем  программы  является  модуль  <  CGK.EXE  >.  Сначала
вызываются подпограмма построения основного меню.
      При помощи нажатия пользователем клавиши можно выбрать:

1 ввод и дополнение списка вопросов;


2 просмотр заставки с правилами игры;


3 проведения игры;


4 регистрация нового пользователя.

      При выборе пункта «Проведения игры»:

5  экран обновляется;


6 выбираются из файла 12 вопросов по  1  на  каждый  игровой  сектор.  После
этого случайным образом выбирается любой из этих вопросов и выводится  внизу
      экрана;


7 после ввода и сравнения с правильным ответом, происходит обновление  счета
      и задание нового вопроса. Так продолжается до тех пор,  пока  счет  не
достигнет 6 очков со стороны игрока или «Телезрителя».

      При выборе пункта «Ввод и дополнение списка вопросов»:

8 программа запросит содержание запроса;


9 программа запросит правильный ответ на него;


10 программа запросит тип вопроса, является ли он интерактивным и  ответ  на
интерактивный вопрос.

      Ввод  продолжается  до  тех  пор,   пока   пользователь   подтверждает
необходимость продолжать ввод данных, которые добавляются в основной файл.
      При  выборе  пункта  «Регистрация   нового   пользователя»   программа
запросит:

11 имя нового пользователя;


12 пароль пользователя (вводимые символы на экране не отображаются).

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

13 имя нового пользователя – следует ввести  “1”;


14 пароль пользователя - следует ввести  “1”.

      После этого выводится основное меню приложения.


7 Руководство пользователя.

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

1 Дождаться появления подсказки операционной системы MS DOS следующего  вида
      <Имя диска>:\<Каталог1>\. . . <Каталог N>\.


2  Набрать  имя  исполняемого  модуля  <  CGK.EXE  >  и  запустить  его   на
выполнение. Если операционная система выдала  сообщение  об  ошибке  запуска
графической системы, следует проверить наличие в  рабочем  каталоге  наличие
файла EGAVGA.BGI. Без него работа программы невозможна. Начинается работа  с
      заставки, после  прохождения  которой  программа  запросит  инициативу
пользователя.  После  это  необходимо   зарегистрироваться.   Первоначальная
регистрация — 1,1. Дальнейшие действия  кратко  описаны  в  пункте  главного
меню <Краткая справка>.


3 В программе предусмотрены приоритеты доступа к пункту главного меню  <Ввод
      данных>: Имя регистрации: admin


                                            Пароль: OpenAll — полный доступ;


      Соответственно для guest, guest или 1,1 —  доступ  закрыт;  при  вводе
имени и пароля  содержащихся  в  файле  регистрации  Usr.ps  будет  запрошен
пароль доступа OpenAll.



8 Руководство системного программиста.

      При  установке  и  эксплуатации  данной  программы   требуется   иметь
следующее аппаратное и системное программное обеспечение.

1 IBM PC XT/AT совместимый компьютер;


2 Операционную систему MS DOS v 6.22 или Windows 95 OEM;


3 ОЗУ 640 Кбайт.

      Программа состоит из файлов:

4 K16.EXE - содержит исполняемый модуль программы;


5 K16.PAS - содержит основной модуль программы;

      - Zast_uni.tpu – модуль заставки;
      - CGK_uni.tpu – модуль содержащий  процедуры  вывода  главного  меню,
        подменю ввода вопросов,  регистрации,  справки,  и  непосредственно
        самой игры;

6 Usr.ps – файл со списком  зарегистрированных пользователей;


7 Vopr[1..11].ps – файлы со списком   вопросов соответственной цены;


8 Vopryn.ps -– файл со списком  интерактивных вопросов;

      EGAVGA.BGI - файл, необходимый для инициализации графической системы.
      Файл EGAVGA.BGI должен находиться в рабочем  каталоге,  наличие  файла
EGAVGA.BGI проверяется при запуске  программы.  Без  него  работа  программы
невозможна.

9 Результаты отладки программы.

      В процессе написания и отладки были обнаружены следующие ошибки:
      - отсутствие «;» после операторов (наиболее частая ошибка);
      - лишняя или недостающая операторная скобка «end»;
      - при работе в графическом режиме очень  долго  не  работала  клавиша
        «Backspace» из- за неправильного указания координат стирания буквы;
      - из-за несогласования  глобальных  переменных  не  работало  главное
        меню;
      - при установке синего  цвета  фона  при  закрашивании  фигур  черным
        цветом они приобретали цвет фона (была исправлена  путем  изменения
        темно-серого цвета палитры на черный и закрашивании этим цветом);
      - происходило зацикливание программы из-за отсутствия условия  выхода
        из цикла;
      В результате отладки все ошибки были исправлены.  В  процессе  отладки
использовались все возможные методы но наиболее часто применялись  пошаговый
запуск программы (на  начальных  стадиях  разработки)  и  расстановка  точек
останова в «сомнительных местах» и просмотр текущего  значения  используемых
переменных;

                                 Заключение

      Программа написана в стиле нисходящего проектирования, основные задачи
были разделены на отдельные  подзадачи  и  объединены  в  отдельный  модуль,
который при линковке объединяется с основным модулем и образует  исполняемый
модуль программы.
      К достоинствам данной программы можно отнести:
      - программа  визуально  полностью  выполнена  в  графическом  режиме,
        поэтому предстает перед пользователем в достаточно  благопристойном
        виде;
      - предусмотрена полная защита от  ввода  лишних,  неразумнодлинных  и
        т.п. данных;
      - в процессе игры пользователю предоставляется  шанс  проверить  свои
        знания по различным областям знания;
      - реализован интуитивно-понятный интерфейс в меню и в процессе  ввода
        данных;
      - популярность программы обеспечивает высокий спрос на подобного вида
        программы;
      - возможность прямо из программы дополнять список  вопросов  (если  у
        вас есть доступ к этому пункту меню);
      - привлекающе для  пользователя  реализована  заставка  (единственная
        доступная функция при отсутствии у пользователя имени и пароля);
      - программа выполнена в одном стиле, в результате  чего  пользователь
        не устает от переизбытка сменяющих друг друга палитр;
      -
      К недостаткам данной программы можно отнести следующее:

1 низкая скорость работы;


2 ограниченный набор графических примитивов;


3 использование стандартного видеорежима VGA ,  с  разрешением  640  на  480
пикселов и палитрой в 16 цветов, вместо более  высоких  разрешений  (800  на
600 пикселов) и палитры в 256 цветов.



                                 Литература

      1.  Лукач  Ю.  С.,Сибиряков  А.  Е.  Программно-технические   средства
персональных ЭВМ семейства  IBM  PC.  Сведловск:Инженерно-техническое  бюро.
1990
      2. Нортон П. Персональный компьютер фирмы IBM и  операционная  система
MS-DOS. М. :Радио и связь. 1992
      3. Нортон П. Программно-аппаратная организация IBM  PC.  М.  :Радио  и
связь. 1992
      4. Фаронов В. В. Турбо Паскаль. М. «Нолидж» 2001
      5. В.С. Новичков, Н.И. Парфилова, А.Н. Пылькин, Алгоритмические  языки
в техникуме: Паскаль, М. «Высшая школа» 1994
      6. В.С. Новичков,  О.Г.  Швечкова  Методические  указания  к  курсовой
работе: «Конструирование программ», №2133, Рязань 1993
      7. В.С. Новичков,  О.Г.  Швечкова,  Н.И.  Парфилова,  А.Н.  Пылькин  ,
Методические указания к лабораторным работам №6-10: «Реализация  циклических
алгоритмов на Турбо Паскале», Рязань, 1998