Автор: Пользователь скрыл имя, 25 Ноября 2011 в 19:01, курсовая работа
Составить программу для управления размерами окружности и ее положением на экране. Исходная окружность имеет центр в точке (100,100) и радиус r=20. Управление выполняется клавишами:
“>” увеличивает радиус окружности на 5 точек (по достижении границ экрана дальнейшее увеличение радиуса прекращается),
“<” уменьшает радиус окружности на 5 точек (по достижении радиусом значение 1 пиксель дальнейшее уменьшение радиуса прекращается),
клавиши управления курсором вызывают перемещение окружности в соответствующем направлении, “Enter” завершает работу программы. Границы окружности, ни при каких условиях, не должны выходить за границы экрана.
ЗАДАНИЕ 3
КРАТКОЕ ОПИСАНИЕ МЕТОДА РЕШЕНИЯ 4
ПОДРОБНЫЙ АЛГОРИТМ РАБОТЫ ПРОГРАММЫ 5
БЛОК-СХЕМА 9
ЛИСТИНГ ПРОГРАММЫ 12
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ 19
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
КАЗАНСКИЙ
ГОСУДАРСТВЕННЫЙ
КАФЕДРА
АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ ОБРАБОТКИ
И УПРАВЛЕНИЯ
Курсовая работа по дисциплине:
«Программирование
на языке высокого уровня»
Выполнил: студент гр.8181-22
Нигематзянов И.Х.
Проверил:
доцент Герке А.Р.
Казань, 2010
Оглавление
Составить программу для управления размерами окружности и ее положением на экране. Исходная окружность имеет центр в точке (100,100) и радиус r=20. Управление выполняется клавишами:
“>” увеличивает радиус окружности на 5 точек (по достижении границ экрана дальнейшее увеличение радиуса прекращается),
“<” уменьшает радиус окружности на 5 точек (по достижении радиусом значение 1 пиксель дальнейшее уменьшение радиуса прекращается),
клавиши управления курсором вызывают перемещение окружности в соответствующем направлении, “Enter” завершает работу программы. Границы окружности, ни при каких условиях, не должны выходить за границы экрана.
В данной курсовой работе было продемонстрировано управление размером окружности и ее позицией на экранных координатах в графическом режиме MS-DOS.
Основным циклом, обеспечивающим непрерывную работу программы, был цикл while. Данных цикл выполняется до тех пор, пока переменная key не равна 27, что соответствует ASSCII-коду клавиши Enter. Внутри цикла реализована серия условий, отвечающих за непосредственное управление окружностью. Истинность данных условий приводит к изменению размера и местоположения окружности относительно экранных координат. Условиями являются наличие нажатия определенных клавиш. Рассмотрим их поподробнее:
Для удобства в программе добавлена строка состояния, на которой отображаются текущие координаты и радиус окружности. Так же в ней предусмотрено, чтобы окружность не выходила за пределы клиентской области. За проверку соблюдения данного условия отвечает функция check(…). В случае если условия соблюдены функция возвращает 1, в противном случае 0.
Прорисовку всей графической части выполняет функция draw(…). Вызывается она в случае, когда функция check(…) возвращает 1. Функцией draw(…) не прорисовывается линия, разделяющая клиентскую область и строку состояния, т.к. линия является статическим элементом.
Минимальный радиус окружности равен 1.
Программа начинается с подключения библиотек:
Объявление
глобальной переменной-массива
char old_string[20];
Программа состоит из трех функций:
Теперь
рассмотрим каждую функцию в отдельности.
Функция draw(…)
Устанавливаем значение цвета ЧЕРНЫЙ, чтобы зарисовать предыдущую окружность и ее центр (окружность с радиусом 1):
setcolor(BLACK);
circle(old_x,old_
circle(old_x,old_
Устанавливаем значение цвета ЖЕЛТЫЙ и рисуем центр окружности (окружность с радиусом 1):
setcolor(YELLOW);
circle(x,y,1);
Устанавливаем значение цвета КРАСНЫЙ и рисуем окружность:
setcolor(RED);
circle(x,y,r);
Объявляем
переменные-массивы
char sx[4], sy[4], sr[4], string[20];
Переводим значения числового целого типа в символьный(текстовой) тип:
itoa(x,sx,10);
itoa(y,sy,10);
itoa(r,sr,10);
Формируем стоку состояния из отдельных символьных массивов (текстовой вариант значений X,Y,R):
strcpy(string,"x="
strcat(string,sx);
strcat(string," y=");
strcat(string,sy);
strcat(string," R=");
strcat(string,sr);
Устанавливаем значение цвета ЧЕРНЫЙ и зарисовываем предыдущую строку состояния:
setcolor(BLACK);
outtextxy(10,465,
Устанавливаем значение цвета БЕЛЫЙ и выводим новую строку состояния:
setcolor(WHITE);
outtextxy(10,465,
Копируем новую строку состояния в старую:
strcpy(old_string,
Функция check(…)
Если окружность не выходит за пределы контекста отображения либо радиус окружности неменьше нуля, то функция возвращает значение 1:
if((x-r>=left)&& (x+r<=right)&& (y-r>=top)&& (y+r<=bottom)&& (r>=0))
return 1;
В противном случае функция возвращает значение 0:
return 0;
Функция main()
Сначала идет объявление переменных:
int gdriver=VGA;
int gmode=VGAHI;
int errorcode;/
int x=100;
int y=100;
int r= 20;
int old_x=x;
int old_y=y;
int old_r=r;.
int left =0;
int right =640;
int top =0;
int bottom=460;.
const int step=5;
char key=0;
Инициализация графики:
initgraph(&
Возвращение результата инициализация графики:
errorcode = graphresult();
Если инициализация неудачна, выводим сообщение об ошибке и завершаем работу программы.
Устанавливаем значение цвета БЕЛЫЙ и рисуем линию, ограничивающую клиентскую область от строки состояния.
Вызываем функцию прорисовки draw(…).
Далее следует цикл while, условием которого является нажатие клавиши Enter. Внутри цикла каждый раз вызывается функция kbhit(). Если она возвращает значение 1, то вызывается функция getch(), возвращающая ASCII-код нажатой клавиши и присваивается переменной key.
Значение переменной key сравнивается с клавишами, которыми производятся манипуляции над окружностью. Если совпадение имеется, то выполняется предусмотренное для нее действие.
После выхода из цикла while() завершаем работу с графикой, вызывая функцию closegraph().
На этом происходит завершение работы программы.
#include <graphics.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
char old_string[20];//Содержит
предыдущую строку состояния.
void draw(int x,int y, int r,int old_x,int old_y,int old_r)
{
setcolor(BLACK);
circle(old_x,old_y,1);
circle(old_x,old_y,old_
setcolor(YELLOW);//
circle(x,y,1); //и рисуем центр окружности(окружность с радиусом 1).
setcolor(RED);//
circle(x,y,r);//и
рисуем окружность.
char sx[4],//Значение X в символьном виде.
sy[4],//Значение Y в символьном виде.
sr[4],//Значение R в символьном виде.
string[20];//
itoa(x,sx,10);//
itoa(y,sy,10);//
itoa(r,sr,10);//в
символьный(текстовой) тип.
strcpy(string,"x="); //Формируем стоку
strcat(string,sx); //состояния из
strcat(string," y=");//отдельных символьных
strcat(string,sy); //массивов(текстовой
strcat(string," R=");//вариант значений
Информация о работе Программирование на языках высокого уровня