1209
Создание движущегося изображения
Курсовая
Информатика, кибернетика и программирование
Фрагменты программы для MS-DOS. Реализация программы в среде Windows. Анализ задания и выбор алгоритма решения. Реализация программы в среде MS-DOS. Фрагменты исходных текстов программ.
Русский
2013-01-06
52.5 KB
9 чел.
Министерство общего и профессионального образования
Российской Федерации
Южно-Уральский государственный университет
Кафедра ЭВМ
к курсовой работе по курсу
"Компьютерная графика"
на тему:
"Создание движущегося изображения"
Руководитель:
Ярош Е.С.
"___" _________ 2011г.
Автор работы:
студент группы ПС-457
Мерзляков Д. В.
"___" _________ 2011г.
Челябинск
2000
СОДЕРЖАНИЕ
1. Задание ....................................................…………………..
2. Анализ задания и выбор алгоритма решения ....................
3. Реализация программы в среде MS-DOS ........................…
4. Реализация программы в среде Windows .......................…
5. Фрагменты исходных текстов программ ........................…
5.1. Фрагменты программы для MS-DOS .............................…
5.2. Фрагмент программы для Windows .............................…..
6. Литература……...................................................……………..
1. ЗАДАНИЕ
Разработать программу, реализующую цветное движущееся изображение "Мальчик пьет сок". Программа должна быть сделана в двух вариантах: в среде MS-DOS и в среде Windows.
2. АНАЛИЗ ЗАДАНИЯ И ВЫБОР АЛГОРИТМА РЕШЕНИЯ
Изначально рисуется изображение мальчика, стакана и трубочки из эллипсов,
отрезков и прямоугольников. Затем вся задача сводится к реализации изменения уровня сока в стакане, а также движения сока по трубочке.
В реализации для MS-DOS формирование нового кадра изображения
не имеет смысла, то есть нет смысла использовать видеостраницы. Дело в том, что изображение фактически меняет свой вид довольно просто, можно сказать «линейно».
В среде Windows я решил использовать невидимые страницы роль которых,
здесь играет контекст памяти. После того, как изображение будет сформировано в контексте памяти, оно копируется в контекст рабочей области окна. Это позволяет избежать "мельканий" на экране.
3. РЕАЛИЗАЦИЯ ПРОГРАММЫ В СРЕДЕ MS-DOS
В функции “boy()” мы создаем само изображение. В начале программы пользователь вводит скорость, в программе это реализуется за счет использования функции
языка C - delay(pause), где pause - величина задержки в миллисекундах.
Объем сока в стакане меняется за счет прорисовки на поверхности сока линии, цвета фона и так до дна, а длина линий уменьшается с обоих сторон в соответствии с углом наклона стенок стакана. В данном случае длина линии уменьшается на пиксель через две линии.
Управление осуществляется следующим образом.
Скорость задается в начале программы в пределах от10 до100 .
Дальше идет бесконечный цикл (мальчик выпивает сок, сок заново наполняется, мальчик опять его выпивает и т.д.)
По нажатию на любую клавишу - выход из программы.
Запуск программы из командной строки: boy1.exe.
Минимальные системные требования: IBM-совместимый компьютер,
процессор 8086, видеокарта EGA.
Программа защищена от беспорядочного ввода символов.
4. РЕАЛИЗАЦИЯ ПРОГРАММЫ В СРЕДЕ WINDOWS
В программе под Windows, в сущности, используются те же
математические функции для рисования изображения. Отличия в реализации, в основном, связаны с особенностью Windows-приложений (в частности то, что управляются они событиями). В отличие от MS-DOS в среде Windows я решил попробовать реализовать программу при помощи "невидимой страницы" роль которой, здесь играет контекст памяти. После того, как изображение будет сформировано в контексте памяти, оно копируется в контекст рабочей области окна. Это позволяет избежать "мельканий" на экране.
При сворачивании или перекрывании окна происходит перерисовка изображения по приходу по сообщению WM_PAINT. Изменение скорости движения лыжника осуществляется при помощи таймера, посылающего событие WM_TIMER через определенные промежутки времени. Этими промежутками времени и управляет пользователь, изменяя скорость движения - по сути мы уничтожаем старый таймер и создаем новый с другим временным параметром. Пауза реализуется путем установки флага “pause”, с дальнейшей проверкой его при обработки сообщения WM_TIMER, то есть таймер не убивается при паузе.
Управление осуществляется следующим образом.
Клавиши "влево/вправо" - соответственно уменьшение/увеличение
скорости движения человечка.
F1 и правая кнопка мыши - выдача информации об управлении.
Левая кнопка мыши - пауза, прерываемая обратным нажатием левой кнопки.
Выход - стандартно для Windows-приложений: Alt+F4.
Запуск программы из командной строки: boywin.exe.
Минимальные системные требования: IBM-совместимый компьютер,
на котором установлена операционная система Windows 95 и выше.
5. ФРАГМЕНТЫ ИСХОДНЫХ ТЕКСТОВ ПРОГРАММ
5.1. Фрагмент программы для MS-DOS
void boy()
{int stc1=195,stc2=235;
//Функция, собственно рисующая мальчика
cleardevice();
setbkcolor(9); //Установка атрибутов
setfillstyle(1,13);
fillellipse(100,70,30,15);
circle(110,65,4);
line(120,75,125,80);
line(120,75,130,77);
fillellipse(80,68,5,6);
setfillstyle(1,3);
fillellipse(100,120,40,30);
bar(90,150,190,170);
bar(170,150,190,199);
bar(170,195,200,199);
setfillstyle(1,4);
for (int i=1; i<10;i++)
line(100,90+i,200,120);
line(195,110,210,140);
line(235,110,220,140);
line(195,110,235,110);
line(120,75,200,107);
line(200,107,215,140);
bar(70,170,120,173);
bar(90,173,95,197);
bar(75,197,115,199);
bar(200,140,290,143);
bar(243,143,247,197);
bar(210,197,280,199);
outtextxy(20,20,"Для выхода нажмите любую клавишу");
}
int main(void) //Основная часть программы
{
char *k;
int sp=20;
int i,stc1=195, stc2=235;
int gdriver = 3, gmode=0, errorcode;
//EGA, 640x200
do
{
printf("\nвведите скорость (10-100) > ");
gets(k); //Ввод с клавиатуры
sp=atoi(k); //Преобразует строку в десятичное целое число
if ((sp>100)|(sp<10)) sp=0;printf("Ошибка ввода !");
}
while ((sp>100)|(sp<10));
initgraph(&gdriver, &gmode, ""); //Инициализация графического режима
/* read result of initialization */
errorcode = graphresult();
if (errorcode != grOk)
//Проверка успеха инициализации
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
//////////////////
boy();
do
{
setcolor(4);
for (i=1;i<30;i++)//Наливаем сок
{
if (i%2==1)
{stc1= 210-(i%2*(i/2));
stc2= 220+(i%2*(i/2));}
delay(1);
line(stc1,140-i,stc2,140-i);
}
//Заполняем трубочку
setcolor(4);
for (i=107;i>75;i=i-2)
{delay(40);
setcolor(4);
line(2.5*i-67.5,i,200,107);
setcolor(9);
line(195,111,235,111);
}
//¦Пьем сок
for (i=1;i<30;i++)
{
if (i%2==1)
{stc1= 195+(i%2*(i/2));
stc2= 235-(i%2*(i/2));}
delay(2*(110-sp));
setcolor(4);
line(200,107,215,140);
setcolor(15);
line(195,110,stc1,110+i);
line(235,110,stc2,110+i);
setcolor(9);
line(stc1,110+i,stc2,110+i);
}
setcolor(15);
line(120,75,200,107);
line(200,107,214,138);
}
while(!kbhit());//Делать пока не нажата любая клавиша
//////////////////
//printf("Press any key to halt:");
closegraph();
return 0;
}
5.2. Фрагмент программы для Windows
case WM_LBUTTONDOWN:
pause=!pause ; // Установка паузы
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&paintstruct);
BitBlt(hdc,0,0,maxX,maxY,memdc,0,0,SRCCOPY); //Прорисовка изображения
EndPaint(hwnd,&paintstruct);
return 0;
case WM_KEYDOWN:
{
int OEMcode = (int)(((unsigned long)lParam) >> 16) & 0x7F;
switch (OEMcode)
{
case 0x4D: // '->'
{
if(SpD<=1000)
{SpD+=5; /
KillTimer(hwnd,1);//Убиваем таймер
SetTimer(hwnd,1,SpD,NULL);}//Устанавливаем новый таймер
break;
}
case 0x4B: // '<-'
{
if(SpD>=5)
{SpD-=5;
KillTimer(hwnd,1);//Убиваем таймер
SetTimer(hwnd,1,SpD,NULL);}//Устанавливаем новый таймер
break;
}
// F1 - HELP
case 0x3B:
{
MessageBox(hwnd,
"<--/-->: уменьшение/увеличение скорости\n"
"F1 - Помощь \n"
"Левая кнопка мыши - пауза, \n",
"Помощь", MB_OK | MB_ICONINFORMATION);
break;
}
}
return 0;
}
case WM_TIMER: //Обработка сообщения от таймера
if (!pause)//Проверка паузы
{
if(k==30)k=0;
boy1(k) ;
k++;
hdc=GetDC(hwnd);//Получить контекст устройства
BitBlt(hdc,0,0,maxX,maxY,memdc,0,0,SRCCOPY);
ReleaseDC(hwnd,hdc);//Освободить контекст устройства
SendMessage(hwnd,WM_PAINT,0,0);
}
return 0;
6. ЛИТЕРАТУРА
1. Подбельский В.В. Язык С++. - СПб.: Питер, 1999.
2. Фролов А.В., Фролов Г.В. Операционная система MS Windows 3.1.
- М.: Диалог-МИФИ, 1994.
3. Фролов А.В., Фролов Г.В. Графический интерфейс GDI в MS Win-
dows. - М.: Диалог-МИФИ, 1994.
А также другие работы, которые могут Вас заинтересовать | |||
84692. | Прохождение службы в центральном аппарате МИДа и за рубежом. Ротация дипломатических кадров | 14.15 KB | |
Основные элементы системы прохождения дипслужбы можно представить следующим образом: А отбор на службу оценка претендентов с точки зрения их профессиональнокфалификационной психологической и духовнонравственной пригодности к работе в структурах МИД и загранучреждений РФ; Б процедура утверждения в должности замещение госдолжности дипслужбы; В профессиональная адаптация путём испытательного срока стажировок повышения квалификации и других мероприятий; Г оценка служебной деятельности формирование здоровых ценностных установок на... | |||
84693. | Основные черты современного дипломата | 12.27 KB | |
К числу важнейших для дипломата качеств относят: глубокое понимание целей задач и особенностей внешнеполитического курса России способность к стратегическому видению развития событий умение грамотно доходчиво и убедительно выражать свои мысли как в письменной так и в устной форме знание современных информационных технологий проницательность умение увидеть главное и определяющее в информационном потоке стрессоустойчивость способность определять приоритеты организованность ответственность обладание высоким общеобразовательным и... | |||
84694. | Сотрудники других ведомств в Посольстве (Экономические и торговые советники, специализированные атташе) | 13.16 KB | |
Сотрудники других ведомств в Посольстве Экономические и торговые советники специализированные атташе. А военный атташе Б старший помощник военного атташе В помощник военного атташе Г атташе по вопросам науки техники и др. ЕСотрудники других ведомств в посольстве экономические и торговые советники специализированные атташе и др. Особую категорию дипломатических кадров представляют аккредитуемые при посольстве военные военноморские военновоздушные атташе представители военного ведомства назначившей их страны при военном... | |||
84695. | Определение дипломатии и этапы ее развития | 16.33 KB | |
В дипломатическом словаре изданном МИД СССР дается такое определение дипломатии: Дипломатия средство осуществления внешней политики государства представляющее собой совокупность невоенных практических мероприятий приемов и методов применяемых с учетом конкретных условий и характера решаемых задач; официальная деятельность глав государств и правительств министров иностранных дел ведомств иностранных дел дипломатических представительств за рубежом делегаций на международных конференциях по осуществлению целей и задач внешней политики... | |||
84696. | Многосторонняя и конференциальная дипломатия | 16.25 KB | |
Международные конференции классифицируются поразному: двусторонние многосторонние специальные обычные посвященные одному вопросу посвященные многим вопросам со специальным секретариатом без него для обмена информацией для разработки договоров по уровню гласности: открытые со СМИ полузакрытые1 2 закрытые. Повестка дня разрабатывается заранее правила утверждаются в начале конференции. Главы делегаций также имеют верительные грамоты подтверждают что они могут говорить от имени государства Права участников конференции: каждый... | |||
84697. | Универсальный характер нынешней дипломатии как отражение уровня международного общения, укрепление принципа суверенного равенства государств. Правовое закрепление этих реалий в многосторонних международных актах | 16.03 KB | |
Проблема обеспечения европейской безопасности одна из ключевых проблем современности. В этой связи итоги Совещания по безопасности и сотрудничеству в Европе закрепленные в Заключительном акте подписанном 1 августа 1975 г. Хельсинкский Заключительный Акт который вобрал в себя десять основных принципов диалога и сотрудничества между государствами которые принимали участие в Совещании по Безопасности и Сотрудничеству в Европе заложил краеугольный камень большей свободы и безопасности в Европе. Заключительный акт Совещания по... | |||
84698. | Венская конвенция о дипломатических сношениях и ее значение | 16.05 KB | |
Так в соответствии со статьей 3 Конвенции функции дипломатического представительства состоят в частности: в представительстве аккредитующего государства в государстве пребывания; в защите в государстве пребывания интересов аккредитующего государства и его граждан в пределах допускаемых международным правом; в ведении переговоров с правительством государства пребывания; в выяснении всеми законными средствами условий и событий в государстве пребывания и сообщении о них правительству аккредитующего... | |||
84699. | Новые тенденции в развитии современной дипломатии | 17.23 KB | |
Новые тенденции в развитии современной дипломатии. решение международных проблем объективно стало главной функцией дипломатии. разнообразнее стали формы многосторонней дипломатии. Глобализация и взаимозависимость мира привели также к увеличению значимости дипломатии осуществляемой на высоком и высшем уровне. | |||
84700. | Основные участники внешнеполитического процесса с учетом внутреннего законодательства различных государств. Сложившаяся система государственных органов внешних сложений Российской Федерации | 19.14 KB | |
Деятельность органов внешней сношений первой группы носит дипломатический характер второго типа нет и исходит из той сферы какой занимается это представительство. Решающее слово в выработке внешней политики все равно остается за высшими органами управления главы государств и правительств. Во всех государствах с республиканским правлением высшим органом решения основных вопросов внешней политики являются высшие законодательные органы. В задачи функционального департамент информации и печати входит оповещение СМИ о прошедших или... | |||