Автор: Пользователь скрыл имя, 27 Января 2012 в 09:00, курсовая работа
Целью курсовой работы является разработка программы имитирующей работу обычных стрелочных часов.
Первая глава посвящена анализу технического задания, определяется что нужно создать, какие библиотеки будут использоваться.
Во второй главе будет рассказано о выбранном языке программирования, о его возможностях и особенностях.
В третьей главе будет подробно описано создание требуемых для решения задачи классов.
ВВЕДЕНИЕ 3
1. Анализ технического задания 5
2. Выбор языка программирования 6
3. Конструирование классов 15
4. Описание программы 20
ЗАКЛЮЧЕНИЕ 24
Список литературы 25
Контурные фигуры
Группа линий на плоскости образует контурную фигуру. Типичными представителями контурных фигур можно считать отрезок прямой линии, дугу, окружность, прямоугольник, эллипс и т. д.
Кроме формы одна фигура от другой может отличаться цветом линии (контура), ее толщиной или типом. По умолчанию в графическом режиме существуют следующие настройки: текущий цвет контура – WHITE (белый), толщина – один пиксель, тип – сплошная линия.
Изменить цвет рисования можно, обратившись к функции setcolor() с прототипом
void setcolor(int color);
Остальные параметры контуров устанавливаются функцией
void setlinestyle (int linestyle, unsigned upattern, int thickness);
Здесь linestyle – тип линии, а thickness – ее толщина. Линия может быть пяти типов
|
После
установки параметров контурной
линии можно приступить к изображению
контурных фигур на экране. Для
отображения наиболее часто используемых
фигур можно воспользоваться
функциями, которые уже имеются
в стандартной графической
|
Плоскостные фигуры
Плоскостные фигуры представляют собой фрагменты плоскости экрана, ограниченные замкнутым контуром.
Плоскостные фигуры можно получить из контурных путем закрашивания области внутри или вне замкнутой линии, образующей контур. Линия при этом должна быть сплошной.
Данную операцию можно выполнить при помощи функции
void floodfill(int x, int y, int border);
Здесь x и y – координаты точки, расположенной внутри или вне контура соответственно (для раскрашивания той или иной области), border – цвет линии, образующей контур. При этом цвет всего контура должен быть одинаковым. Раскраска осуществляется цветом color и по шаблону pattern, которые устанавливаются функцией
void setfillstyle (int pattern, int color);
Для наиболее часто встречающихся на практике плоскостных фигур в графической библиотеке так же существуют уже готовые функции.
|
Вывод текста в графическом режиме
Вывод текста в графическом режиме можно осуществить с использованием функции outtextxy().
void outtextxy (int x, int y, char *textstring);
выводит поверх существующего на экране изображения строку текста textstring начиная с позиции (x, y) (координата левого верхнего угла первого символа строки). Сформировать строку textstring необходимо заранее. Для этого удобно использовать функцию sprintf().
Текстовая информация отображается на экране с учетом параметров: цвет, тип шрифта, размер шрифта и направление. Эти параметры настраиваются функциями
void setcolor(int color);
void settextstyle(int font, int direction, int charsize);
Здесь color – цвет текста, font – тип шрифта, direction – направление вывода текстовой информации (0 – горизонтальное, 1 – вертикальное) и charsize – множитель, который влияет на размер выводимых на экран символов.
Размер символов (по вертикали и горизонтали) определяется как произ- ведение стандартного размера (8*8 пикселей) на параметр charsize, то есть, если значение charsize будет равно 3, то каждый символ, отображающийся на экране, будет вписан в квадрат 24*24 пикселя.
Параметр
font, который задает стиль шрифта, подключает
к программе файлы с расширением *.chr
(нестандартные «шрифты»), поэтому необходимо
сделать эти файлы доступными (проще всего
скопировать их в текущую директорию).
Создаем абстрактный класс «стрелка».
Имя класса ARROW.
В классе имеются следующие атрибуты:
Операции класса:
Функция setXY также
является статической.
class ARROW
{
protected:
static int x0,y0;
int color;
double sh;
public:
static void setXY(int,int);
virtual void draw(int)=0;
void rotate(int);
void set_color(int);
};
void ARROW::setXY(int _x, int _y)
{
x0=_x;
y0=_y;
}
void ARROW::set_color(int _color)
{
color=_color;
}
void ARROW::rotate(int pos)
{
sh=-Pi/30*pos;
}
int ARROW::x0;
int ARROW::y0;
Создаем класс для секундной стрелки:
Имя класса arrow_sec
Класс является наследником класса ARROW. Наследуемый доступ public.
В классе переопределяем лишь функцию draw.
class arrow_sec:public ARROW
{
public:
void draw(int);
};
void arrow_sec::draw(int m)
{
int cl;
if (m==1)
{
setcolor(color);
setfillstyle(1,color);
cl=color;
}
else
{
setcolor(0);
setfillstyle(1,0);
cl=0;
}
line(x0+4*cos(sh),y0-4*sin(sh)
line(x0+1+126*cos(1.5+sh),y0+
line(x0+157*cos(1.57295+sh),
line(x0+126*cos(1.64159+sh),
line(x0+4*cos(3.14159+sh),y0-
floodfill(x0+110*cos(1.57295+
setcolor(0);
line(x0+4*cos(0+sh),y0-4*sin(
line(x0+1+126*cos(1.5+sh),y0+
line(x0+157*cos(1.57295+sh),
line(x0+126*cos(1.64159+sh),
line(x0+4*cos(3.14159+sh),y0-
setcolor(cl);
fillellipse(x0,y0,8,8);
setcolor(0);
circle(x0,y0,8);
}
Создаем класс для минутной стрелки:
Имя класса arrow_min
Класс является наследником класса ARROW. Наследуемый доступ public.
В классе переопределяем
лишь функцию draw.
class arrow_min:public ARROW
{
public:
void draw(int);
};
void arrow_min::draw(int m)
{
int cl;
if (m==1)
{
setcolor(color);
setfillstyle(1,color);
cl=color;
}
else
{
setcolor(0);
setfillstyle(1,0);
cl=0;
}
line(x0+7.5*cos(sh),y0-7.5*
line(x0+126.5*cos(1.45+sh),y0-
line(x0+157*cos(1.57+sh),y0-
line(x0+126.5*cos(1.69159+sh),
line(x0+7.5*cos(3.14159+sh),
floodfill(x0+110*cos(1.57+sh),
setcolor(0);
line(x0+7.5*cos(sh),y0-7.5*
line(x0+126.5*cos(1.45+sh),y0-
line(x0+157*cos(1.57+sh),y0-
line(x0+126.5*cos(1.69159+sh),
line(x0+7.5*cos(3.14159+sh),
setcolor(cl);
fillellipse(x0,y0,15,15);
setcolor(0);
circle(x0,y0,15);
}
Создаем класс для часовой стрелки:
Информация о работе Разработка программы имитирующей работу обычных стрелочных часов