Фрактальные рельефы

Задание.

Написать на языке Си++ c использованием объектно-ориентированного программирования  и отладить в интерактивном режиме игровую программу TETRIS.

Оглавление.

1. Техническое задание .......................................................................... стр. 3.

3. Практическая часть .

3.1. Пояснительная записка (технический проект) .......................... стр. 6.

3.2. Руководство оператора (пользователя) ..................................... стр. 10.

3.3. Руководство (системного) программиста ................................... стр. 11.

3.4. Описание программы ...................................................................... стр. 13.

4. Заключение ........................................................................................... стр. 14.

5. Литература ........................................................................................... стр. 15.

6. Приложения.

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

6.2. Текст программы .............................................................................. стр. 28 .

Техническое задание (ГОСТ 19.201-78).

1.Введение.

Наименование программы - "MAI-TETRIS". Применение программы - в области игровых программ.

2. Основание для разработки.

Выполнение курсовой работы по кафедре 806.

3. Назначение разработки.

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

4. Требования к программе.

4.1. Требования к функциональным характеристикам.

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

Входные данные -  коды нажимаемых клавиш.

Выходные данные - графическая информация, выводимая на экран.

В работе программы временные характеристики несущественны.

4.2. Требования к надежности.

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

4.3. Требования к составу и параметрам технических средств ЭВМ, внешние устройства, их характеристики.

Для функционирования программы требуется персональная ЭВМ с процессором 8086/8088, от 640 килобайт оперативной памяти, видеоадаптер VGA/EGA и соответствующий монитор. Прочие внешние устройства для работы программы не требуются.

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

Для функционирования программы требуется ОС MS-DOS версии 3.30 или выше, от 32 килобайт свободной оперативной памяти. Программа разработана в интегрирированной среде Borland C++ версии 3.1.

4.5. Специальные требования.

Специальные требования отсутствуют.

5. Требования к программной документации.

Требования к программной документации отсутствуют.

6. Технико-экономические показатели. Ориентировочная экономическая эффективность, преимущества по сравнению с аналогами.

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

7. Стадии и этапы разработки.

Стадии и этапы работ

Сдержание работ

Сроки

Исполнители

ТЗ

Постановка задачи, определение требований, структуры данных, метода решения и т.д.

24.10

Чередников М.А.

Техниче-ский проект

Разработка алгоритма, определение формы представления данных, структуры программы.

Пояснительная записка.

17.11

Чередников М.А.

Рабочий проект

Программирование. Разработка документации. Испытание программы.

6.12

Чередников М.А.

Пояснительная записка (ГОСТ 19.404-79)

1. Введение

Наименование программы - "MAI-TETRIS", основание разработки - выполнение курсовой работы по курсу "Алгоритмические языки и программирование".

2. Назначение и область применения программы.

Назначение программы - развлечение играющих, совершенствование их координации и логического мышления. Программа может применяться в качестве игровой на разных типах персональных компьютеров.

3. Технические характеристики.

3.1. Постановка задачи на разработку, описание методов решения.

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

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

3.2. Описание алгоритма и/или функционирования программы

        3.3. Описание и обоснование выбора метода организации данных.

Данные

Метод организации

Фигура

Двумерный массив-наиболее естественное представление, например:

        

Ящик

Двумерный массив, элемент которого-целое число - соответствует свободной или занятой ячейке.

Каталог фигур

Массив из приведенных выше матриц.

Ширина, высота ящика,количество цветов и фигур; флаги наложения, достижения дна ящика, свободной ячейки и др.

Константы

В соответствии с принципами объектно-ориентированного программирования в программе данные организованы в несколько объектов:

- ящик:

class Glass  {

            int        iAttribute;                                          // переменные, используемые

            int        iRange;                                               // для описания движения фигуры,

            int        x,y;                                                     // а также её вида и цвета

            char     pbyMask[100];                                   //

            char     abyGlass                                            // двумерные массивы,

[CONST_WIDTH+4][CONST_HEIGTH+4];         // изображающие ящик

            char     abyTemp                                            // и используемые в процессе

[CONST_WIDTH+4][CONST_HEIGTH+4];         // всей игры

            char     abyOldGlass                                      //

[CONST_WIDTH+4][CONST_HEIGTH+4];         //

            int        iStatus;                                               //

            void     Figure();                                             // функции генерации случайной

            void     Turn();                                    // фигуры, её перемещения,

            int        Check(int op);                        // поворота,

public:

            Glass();                                                          // проверки наложения

            int  Next();                                                     //

            void Show();                                                  //

            void DoLeft();                                               //

            void DoRight();                                             //

            void DoTurn();                                              //

            void QuickFall();                                           //

            virtual void PutArea(int,int,int);                    //

            virtual int  Randomize();                               //

- собсственно тетрис - класс, являющийся потомком ящика и перекрывший 2 виртуальные функции: PutArea() и Randomize().

3.4. Описание и обоснование выбора состава технических и программных средств.

Для написания программы был выбран язык C, т.к. в последнее время он мною использовался намного больше, чем Паскаль. Отказ от библиотеки Turbo Vision был продиктован невозможностью работы с этой библиотекой в графическом режиме.

4. Ожидаемые технико-экономические показатели.

Ожидаемая разработка будет отличаться низкими требованиями к аппаратной части ЭВМ.

5. Источники, используемые при разработке.

При разработке используется статья "Новый мотор для старой идеи" из журнала "Монитор" № 3 за 1994 год.

 Приложения отсутствуют.

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

(ГОСТ 19.504-79).

1. Назначение и условие применения программы.

Назначение программы - развлечение играющих, совершенствование их координации и логического мышления. Программа может применяться в качестве игровой на разных типах персональных компьютеров и распространяется на условиях freeware.

2. Характристики программы.

Программа запускается под управлением операционной системы MS-DOS версии 3.30 и выше из каталога, в котором содержится драйвер видеоадаптера egavga.bgi и файл со шрифтом litt.chr. Для её работы требуется от 32 килобайтов свободной оперативной памяти, видеоадаптер EGA/VGA и процессор 8086/8088 и выше.

3. Обращение к программе.

Обращение к программе осуществляется командой tetris.

4. Входные и выходные данные.

Входные данные - коды нажатых в режиме реального времени клавиш. Выходные данные - графическая информация на дисплее.

5. Сообщения (сообщения системному программисту).

Для нормальной (без замедления) работы программы на ЭВМ AT 286 или ЭВМ

PC XT рекомендуется уменьшить значение, присваиваемое переменной stop, в 2-3

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

программы на ЭВМ AT 486  и PENTIUM. После этого программу рекомендуется

перекомпилировать.

6. Структура программы.

Исходный текст программы хранится в 3-х файлах: tetris.cpp, glass.cpp, tetris.h.

Название файла

Содержимое

tetris.cpp

функция main и 2 функции класса tetris - PutArea и Randomize - перекрывшие виртуальные функции класс Glass

glass.cpp

реализация классов Glass и Tetris

tetris.h

определения констант, описание используемых структур данных, интерфейс классов Tetris и Glass

Компиляция в турбо-среде осуществляется с использованием файла проекта tetris.prj, в который записываются компоненты glass.cpp и  tetris.cpp.

7. Настройка программы.

Программа готова к работе, настройки не требует.

8. Проверка программы.

Проверка работоспособности программы осуществляется в следующих случаях:

- независание фигуры при падении;

- падение фигуры до дна ящика;

- невыход фигуры за границы ящика;

- сдвиг фигуры и поворот её на расстоянии от стенок;

- сдвиг фигуры вблизи стенки и поворот её (при этом не должно происходить                   наложение фигуры на границу ящика);

- неналожение фигуры при достижении лежащих на дне ящика других фигур;

- изъятие слоя, не содержащего пустых ячеек (все ячейки заполнены квадратами фигур);

- "оседание" слоев при изъятии  слоя, не содержащего пустых ячеек;

- окончание игры при заполнении ящика или по команде игрока.

9. Дополнительные возможности.

Возможность выбора скорости игры при её начале (выбор одной из трех скоростей игры).

Приложения отсутствуют.

               Описание программы (ГОСТ 19.402-78)

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

Программа называется "MAI-TETRIS", является классической версией отечественной игры ТЕТРИС. Программа написана на языке Си++ в интегрированной среде Borland C++ v3.1. Для её выполнения требуется транслятор с этого языка и ОС. Техническая документация написана с использованием программных продуктов Microsoft Word for Windows 2.0 и Meta Design 4.0.

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

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

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

Описание логической структуры приведено на схемах, находящихся в приложении ( № 3.1a)

4. Используемые технические средства.

Программа была написана и откомпилирована на ЭВМ AT 386/387 DX-40/4/210/SVGA.28, оснащенной устройством печати EPSON LX-800.

5. Вызов и загрузка.

Программа хранится в файлах tetris.cpp, glass.cpp и tetris.h в каталоге d:orlandcwork; программа вызывается на выполнение командой tetris.

6. Входные данные.

1) одна из трех цифр:1, 2 или 3 - введенная в при выборе скорости игры;

2) клавиши: "RIGHT", "LEFT", "UP", "SPACE" или "ESC" - вводимые в процессе игры в режиме реального времени. Организованы в виде символьных переменных.

7. Выходные данные.

Информация, выводимая на экран в графическом режиме: рисунок ящика, падающие и лежащие на дне фигуры. Организованы в виде двумерных массивов.

Приложение содержит листинг программы на языке C++.

Выводы по задаче.

В результате использованггия бета-версии программы не было получено жалоб об отклонениях в правилах игры по сравнению с общепринятыми стандартами, наложенными многочисленными версиями игры TETRIS. Это позволяет сделать вывод о соответствии алгоритма постановке задачи. Выдача информации наглядна : на экране постоянно отображена игровая ситуация. Текст программы удобочитаем, т.к. содержит комментарии, поясняющие суть той или иной ситуации. Текст программы ( № 3.1b ) содержится в приложении на странице   .

Заключение.

В ходе курсовой работы мною были изучены некоторые аспекты объектно-ориентированного программирования на языке Си++ ( организация данных в структуре класс, обеспечение доступа к ним, наследование классов, переопределение функций). При оформлении курсовой работы был получены навыки оформления программной документации в соответствии с Единой Системой Программной Документации, а также большой практический опыт работы в Borland C++ v3.1, Microsoft Word for Windows, Meta Design v4.0, Microsoft Excel v5.0 ( хотя освоение этих программных продуктов не было целью курсовой работы, данные навыки нельзя считать бесполезными ). Теоретические сведения были закреплены практическими занятиями.

Литература.

1. Б. Страуструп. Язык программирования Си++. М.: Радио и связь. 1991.

2. С. Бочков. Д. Субботин. Язык программирования Си для персонального компьютера. М.: Радио и связь. 1990.

3. П. Гусак и др. Справочник по функциям Borland C++ 3.1/4.0. Киев: Диалектика. 1994.

4. Р. Виземан. Word for Windows 2.0 (программы для персональных компьютеров). М.: Текст. 1994.

5. Excel 5.0 - английская и русская версии. СПб: BHV-Санкт-Петербург. 1994.