Uploaded by Егор Следников

Отчет4 1

advertisement
МИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра САПР
ОТЧЕТ
по лабораторной работе №1
по дисциплине «Программирование»
Тема: «Знакомство с библиотекой SFML.
Создание геометрических фигур с помощью методов библиотеки SFML»
Студент гр. 1322
Следников Е.С.
Преподаватель
Кузьмин С.А.
Санкт-Петербург
2023
1. Постановка задачи
Цель работы
 знакомство с модулями и методами библиотеки SFML;
 изучение процедуры установки библиотеки SFML и её настройки в
среде разработки;
 создание (и настройка) проекта программы на основе библиотеки
SFML в среде разработки;
 получение практических навыков рисования простых и составных
геометрических объектов (фигур) в оконном приложении на основе
библиотеки SFML.
Формулировка задания
Изучите учебно-методические материалы по библиотеке SFML на сайте
https://www.sfml-dev.org/. Скачайте версию библиотеки SFML, совместимую с
Вашей средой разработки. Выполните процедуру установки SFML на свой
компьютер. Создайте и сконфигурируйте проект SFML в среде разработки.
Изучите работу программы по рисованию простой фигуры на учебном примере.
Модернизируйте код программы для рисования фигуры согласно Вашему
варианту задания.
Вариант №5: Нарисуйте треугольник (произвольной формы).
Указания по выполнению
Дистрибутив библиотеки SFML (под нужную среду разработки) можно
скачать здесь: https://www.sfml-dev.org/download/sfml/2.5.1/.
2
Инструкцию по установке библиотеки SFML и её настройке в среде
Microsoft
Visual
Studio
можно
найти
здесь:
https://www.sfml-
dev.org/tutorials/2.5/start-vc.php.
Инструкцию по установке библиотеки SFML и её настройке в среде
Code::Blocks (с поддержкой MinGW) можно найти здесь: https://www.sfmldev.org/tutorials/2.5/start-cb.php.
Инструкцию по установке библиотеки SFML и её настройке в среде XCode
можно найти здесь: https://www.sfml-dev.org/tutorials/2.5/start-osx.php.
Руководство по созданию оконного приложения на основе библиотеки
SFML приведено здесь: https://www.sfml-dev.org/tutorials/2.5/window-window.php.
Пример кода программы с рисованием простейшей 2D-фигуры приведён в
данной странице: https://www.sfml-dev.org/tutorials/2.5/graphics-draw.php.
Фрагменты кода по рисованию некоторых видов геометрических фигур
можно найти здесь: https://www.sfml-dev.org/tutorials/2.5/graphics-shape.php.
3
2. Описание программы
Алгоритм работы программы
1) После запуска программы создается окно, в котором будет нарисован
треугольник:
const int windowX = 640;
const int windowY = 480;
RenderWindow window(VideoMode(windowX, windowY), L"Простые фигуры");
2) Далее создается фигура triangle, которая будет иметь три вершины:
ConvexShape triangle;
triangle.setPointCount(3);
3) У пользователя просят ввести координаты, каждой из вершин треугольника,
выполняется проверка на правильность ввода, а также к треугольнику triangle
прикрепляется очередная вершина:
do
{
cout << "Введите кординаты " << k + 1 << " вершины треугольника (через пробел) : ";
cin >> x >> y;
if ((x < 0) || (x > windowX) || (y < 0) || (y > windowY))
{
cout << "Координаты введены неверно!" << endl;
}
else
{
triangle.setPoint(k, Vector2f(x, y));
k++;
}
} while (k < 3);
4) Далее программа рисует треугольник в окне:
while (window.isOpen())
{
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
}
window.clear();
window.draw(triangle);
window.display();
}
5) Команда, приведенная ниже, нужна для обработки событий
window.pollEvent(event)
4
6) Команда, приведенная ниже, очищает все окно перед рендерингом нового
полотна:
window.clear();
7) Команда, приведенная ниже, рисует треугольник на полотне, вершины
которого находятся в координатах, заданных ранее:
window.draw(triangle);
8) Команда, приведенная ниже, отображает содержимое полотна в окне
программы:
window.display();
Полный код программы приведён в Приложение 1. Листинг программного
кода.
5
3. Руководство пользователя
Примеры выполнения программы
Пример №1
Пример входных данных представлен на рисунке 1.
Рисунок 1. Входные данные по примеру №1
Результат работы программы представлен на рисунке 2.
Рисунок 2. Результат работы программы по примеру №1
Пример №2
Пример входных данных представлен на рисунке 3.
Рисунок 3. Входные данные по примеру №2
Результат работы программы представлен на рисунке 4.
6
Рисунок 4. Результат работы программы по примеру №2
Пример №3
Если введенные пользователем координаты выходят за размер окна,
программа уведомляет об этом и просит ввести координаты еще раз (рисунок 5).
Рисунок 5. Результат работы программы по примеру №3
7
Выводы
В результате выполнения данной лабораторной работы я познакомился с
модулями и методами библиотеки SFML, изучил процедуры её установки и
настройки в среде разработки. Получил практические навыки рисования простых
и составных геометрических объектов (фигур) в оконном приложении на основе
библиотеки SFML.
Реализованная
программа
соответствует
выполняет свою работу.
8
поставленным
задачам
и
Приложение 1. Листинг программного кода
Main.cpp
#include <SFML/Graphics.hpp>
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
using namespace sf;
int main()
{
setlocale(LC_CTYPE, "Russian");
SetConsoleCP(65001);
SetConsoleOutputCP(65001);
const int windowX = 640;
const int windowY = 480;
RenderWindow window(VideoMode(windowX, windowY), L"Простые фигуры");
ConvexShape triangle;
triangle.setPointCount(3);
int x, y;
int k = 0;
do
{
cout << "Введите координаты " << k + 1 << " вершины треугольника (через пробел) : ";
cin >> x >> y;
if ((x < 0) || (x > windowX) || (y < 0) || (y > windowY))
{
cout << "Координаты введены неверно!" << endl;
}
else
{
triangle.setPoint(k, Vector2f(x, y));
k++;
}
} while (k < 3);
triangle.setFillColor(Color::Green);
while (window.isOpen())
{
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
}
window.clear();
window.draw(triangle);
window.display();
}
std::cout << "Введите любую клавишу для завершения программы ... ";
_getch();
return 0;
}
9
10
Download