Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пояснилка.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
230.21 Кб
Скачать

1.Анализ технического задания

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

  • Отрисовка игровой области

  • Отрисовка фигур

  • Падение фигур

  • Поврот фигур

Игровая область представляет собой прямоугольник размером 160х400 пискселей. В игровую область сверху будут опускаться фигуры разных типов. По мере выполнения программы игровая область будет наполняться фигурами.

Прямоугольники в библиотеке graphics.h реализуются при помощи функций bar().

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

-квадрат. Фигура квадрат представляет собой прямоугольник размером 40х40 пикселей. Данная фигура рисуется функцией bar(), которой необходимо передать координаты левого верхнего и правого нижнего узлов.

-линия. Фигура квадрат представляет собой прямоугольник размером

80х10 пикселей. Рисование данной фигуры идентично рисованию

квадрата.

Z.Данная фигура представляет собой 2 прямоугольника с

С размерами 40х20 пикселей.

Прямоугольники в библиотеке graphics.h реализуются при помощи функций bar(). Сущность фигура будет иметь способности появления, передвижения вниз, направо, налево и поворота. Фигуры двигаются до тех пор пока они н достигнут конца игровой области или не столкнуться с препятствием(другая фигура).

Падение фигур реализуется следующим образом:

1-фигура заливается цветом фона;

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

3- фигура рисуется своим цветом.

Фигура перемещается направо или налево если нажата клавиша “d” и“a” соответственно. При нажатии клавиши “d” фигура заливается цветом фона, затем увеличивается координата Х(перемещение вправо) и фигура заливается своим цветом. Перемещение фигуры влево подобно перемещению вправо, за исключением изменения координаты Х(уменьшается).

Для поворота фигуры необходимо залить фигуру цветом фона, рассчитать изменения координат Х и У и залить его снова своим цветом

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

Инициализация и изменения координат будет производиться в отдельном классе и для рисования каждой фигуры будет использоваться отдельный класс.

2. Конструирование классов

На основе анализа технического задания было выявлено, что точкой привязкой будет класс Tetris, который — инициализирует начальные значения координат фигур и описывает методы изменения координат фигур ;

В программе также будут использованы следующие классы

1. класс Kvadrat— описывает свойства и методы, соответствующие объекту фигура-квадрат;

2. класс Liniya - описывает свойства и методы, соответствующие объекту фигура-линия;

3. класс KV - описывает свойства и методы, соответствующие объекту фигура-z;

4. класс Vedro - описывает свойства и методы, соответствующие объекту игровая область;

Класс - это основной элемент инкапсуляции в языке C++. Класс определяется с помощью ключевого слова class. Ниже показан общий формат объявления класса в языке С++:

class имя класса [:<список наследования>] {

[private:]

//Закрытые члены

protected:

//Члены, которые могут быть унаследованы

public:

//Открытые члены

} [<список_объектов>];

Здесь имя класса — это имя нового типа. После компиляции объявление класса <имя класса> становиться именем нового типа данных, который можно использовать для объявления объектов класса. Список объектов — это список объектов типа <имя класса>, разделяемых запятыми. Такой список необязателен. Список наследования указывает наследуемые классы. Если в таковых нет необходимости, он опускается.

Конструктор- функция которая создает объекты и которая может инициировать объекты начальными значениями. Конструктор имеет имя как у названия клааса.

В качестве примера приведем класс Tetris

class Tetris

{

public: //открытый доступ к членам класса

int x,y,x2,y2;

Tetris() //конструктор инициализирующий праметры х,у,х2 и у2 нач.значе-

{ x=180;y=0;x2=200;y2=20; } ниями

void setx(int i)

{ x+=i; }

void sety(int i)

{ y+=i; }

void setx2(int i)

{ x2+=i; }

void sety2(int i)

{ y2+=i; }

};

В состав класса Tetris включены следующие члены данные:

1. координаты позиций объектов – x,y , x2,y2.

X и x2 определяют верхнюю левую координату по оси абсцисс;

У и y2 определяют нижнюю левую координату по оси ординат;

2. конструктор. Конструктор Tetris() служит для инициализации начальными значениями элементов члена класса, то есть x,х2,y,у2

3. Включены в состав класса также свойства получения и установления значений элементов члена класса (x,y ,х2,у2) чтобы продемонстрировать возможности инкапсуляции :

setх(int), setу(int), setх2(int), setу2(int),

В состав класса Kvadrat включена функция член класса:

1.функция рисовая, стирания и опускания фигуры квадрат void risov().

В состав класса Liniya включена функция void risov() обеспечивающая рисование, стирание, опускания и передвижения фигуры – линия.

В состав класса Kv включена функция void risov() – обеспечивающая рисование, стирание, опускания и передвижения фигуры – Z.

В состав класса risovvedro включены следующие функции члены класса:

1.void risov() – обеспечивающая рисование игровой области и выбор фигуры(случайным образом).

2.void sozdanie()- обеспечивающая резервирование памяти для фигур и вызов функции рисования выбранной фигуры.

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

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

Class <имя потомка>:[<спецификатор доступа>]<имя родителя> {…};

В данной программе классы Tetris,Liniya и Kv являются наследниками класса Tetris.

Для визуализации механизма наследования используем язык UML.

UML- язык графического описания для объектного моделирования в области разработки ПО. Ниже приведена диаграмма UML для данной программы.

Рис.1. UML диаграмма классов.