1210

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

Курсовая

Информатика, кибернетика и программирование

Разработать программу, реализующую цветное движущееся изображение: фейерверк. В двух вариантах: для DOS и Win9x. Графический вывод в программе для Win9x был реализован через DirectDraw.

Русский

2013-01-06

42 KB

13 чел.

Министерство общего и профессионального

образования Российской Федерации

Южно-Уральский государственный университет

Кафедра ЭВМ

Пояснительная записка к курсовому проекту

по курсу "Компьютерная графика"

Руководитель

_______________ Ярош Е.С.

"___" ______________2001г

Автор работы:

студент группы ПС-357

____________Муратов И.И.

"___" _____________ 2010г

Челябинск

2010

СОДЕРЖАНИЕ

  1.  Задание
  2.  Анализ задания
  3.  Руководство программиста
    1.  Критические участки
    2.  Особенности исполнения
    3.  Текст программы
  4.  Руководство пользователя

4.1 Системные требования.

5. Литература
1. Задание

Разработать программу, реализующую цветное движущееся изображение: фейерверк. В двух вариантах: для DOS и Win9x.


2. Анализ задания

Графический вывод в программе для Win9x был реализован через DirectDraw, т.к. данный метод позволяет добиться наиболее рационального использования ресурсов, а так же осуществляет поддержку аппаратной реализации большинства из предоставляемых функций.

3. Руководство программиста

  1.  Особенности исполнения.

Для Win9x:

Программа при запуске устанавливает разрешение 800x600x16, создаёт экранный (первичный) и внеэкранный (вторичный) буфера (primary и back buffers), располагая их в видеопамяти. Все спрайты так же загружаются в видеопамять. Построение изображения путём копирования спрайтов во вторичный буфер, и генерация ландшафта в нём же. Затем функцией Flip() происходит обмен указателей на первичный и вторичный буфера синхронно с обратным ходом луча.   

Для DOS:

При запуске устанавливается разрешение 640x350x8, работа ведётся с двумя видеостраницами, переключение происходит при обратном ходе луча.

3.2 Критические участки

При отсутствии сообщений вызываются две основных функции:

– MoveFrame();

– ShowFrame();

MoveFrame() – в этой функции происходит расчёт всех необходимых параметров.

ShowFrame() производит генерацию изображения и вывод его на экран.

  1.  Текст программы

Т.к. текст программы занимает значительный объём, то имеет смысл привести только наиболее значимые участки:

Для Win9x:

Основной цикл WinMain:

...

while( msg.message != WM_QUIT )

   {

       if(PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ))

       {

                       TranslateMessage( &msg );

                       DispatchMessage( &msg );

       }

       else if(g_bReady)

               {

                       if(timeGetTime()-oldTime > g_time)

                       {

                               oldTime=timeGetTime();

                               MoveFrame();

                               ShowFrame(1);

                       }

       }

   }

...

Функция для расчёта взрывов:

VOID MoveSnow(SNOW *Snow)

{

Snow->x+=cos(Snow->tau)*Snow->speed;

Snow->y+=sin(Snow->tau)*Snow->speed;

Snow->y+=Snow->r/80;

Snow->r=sqrt((Snow->x-Snow->u)*(Snow->x-Snow->u)+(Snow->y-Snow->v)*(Snow->y-Snow->v));

Snow->t++;

Snow->type++;

if (Snow->type>Snow->change) {Snow->color=(int)(RandDouble*6); Snow->type=0;}

if (Snow->t>Snow->live)

{

 Snow->death=true;//ChangeSnow(Snow);

 CurN--;

}

}

Функция вывода на экран:

HRESULT ShowFrame(int k)

{

   if( lpPrimary == NULL) return E_FAIL;

// Очистка буфера

       DDBLTFX ddbltfx;

       ddbltfx.dwSize = sizeof(ddbltfx);

       ddbltfx.dwFillColor = 0x0000ff;

       lpBack->Blt(NULL,NULL,NULL,DDBLT_COLORFILL | DDBLT_WAIT,&ddbltfx);

// Копирование фейерверков

int stp=1, x1, x2, y1, y2, a, b, u1, u2, v1, v2;

for (i=0; i<SnowN; i++)

 if (!Snow[i].death)

 {

  x1=Snow[i].x;

  y1=Snow[i].y;

  snowrect.left=((int)(Snow[i].r/Snow[i].live*4))*10;

  snowrect.right=snowrect.left+10;

  snowrect.top=Snow[i].color*10;

  snowrect.bottom=snowrect.top+10;

  lpBack->BltFast(x1, y1, lpSnow, &snowrect,  DDBLTFAST_SRCCOLORKEY | DDBLTFAST_WAIT);

 }

// Обмен буферов

      lpPrimary->Flip( NULL, DDFLIP_WAIT );

      return DD_OK;

}

Для DOS

...

// Переключение страниц

    wait_direct();

    setvisualpage(1-frame);

    setactivepage(frame);

    frame=1-frame;

    wait_vertic();                     // ждем обратный ход луча

...

    

// отрисовка

...

4. Руководство пользователя

Для Win9x

При запуске программа переходит в полноэкранный режим. По нажатию клавиши «пробел» и левой кнопки мыши вызывается пауза. Скорость регулируется клавишами и . Выход из программы осуществляется по нажатию клавиши «ESC» или правой кнопки мыши.

Для DOS

Изменение скорости производится клавишами и . По нажатию клавиши «пробел» вызывается пауза. Выход из программы осуществляется по нажатию клавиши «ESC».

4.1 Минимальные системные требования:

Для DOS:

  •  процессор не ниже Intel 80286
  •  видеоадаптер EGA c 512кб памяти
  •  минимальный объем оперативной памяти 87 кБ

Для Win9x

  •  процессор не ниже Pentium Celeron 400MHz
  •  видеоадаптер SVGA c 4Mb памяти
  •  MS Windows 9x
  •  DirectX 6.0 или выше.

5. Литература

  1.  Нейбауер А. Програмирование на С++/Перевод с англ. – СПб: Питер, 1995. – 168с.
  2.  Шикин Е.В., Боресков А.В. Компьютерная графика. Динамика, реалистические изображения. – М.:Диалог – МИФИ, 1995.-288с.


 

А также другие работы, которые могут Вас заинтересовать

61074. Поняття про мову розмітки гіпертексту – мову НТМL. НТМL-файл. Коди (теги) мови. Засоби створення НТМL-документів. Оформлення тексту в HTML-документі 272.5 KB
  Оформлення тексту в HTML документі. Теги управління зовнішнім виглядом HTMLдокументу. Використовувані матеріали: презентація карточки додаткові електронні матеріали файли...
61075. Павутина життя. Контрольна робота 54 KB
  There is a show on tonight. I’d like to see it. (which) 2) Angela wants to talk to you. Her brother is a member of a rock band. (whose) 3) I told you about the hotel. We stayed there last summer. (where)
61076. Додаткове читання. Й. Ґете. Вибрані поезії 78.5 KB
  Мета: поглибити знання про поетичний талант Ґете; розвивати творчі здібності учнів виховувати повагу до виявів чужих почуттів; працювати над виразним читанням віршів. Актуалізація опорних знань...
61077. ПИСЬМОВИЙ СТИСЛИЙ ПЕРЕКАЗ РОЗПОВІДНОГО ТЕКСТУ З ЕЛЕМЕНТАМИ ОПИСУ МІСЦЕВОСТІ В ХУДОЖНЬОМУ СТИЛІ 45.5 KB
  Школярі знайомляться з цілісним висловлюванням. Робота за змістом і структурою тексту Довести належність висловлювання до художнього стилю наводячи приклади з тексту. Якою ви уявили місцевість описану письменником...
61078. Контрольний твір за творчістю Й. В. Ґете 31.5 KB
  Мета: розвивати письмове звязне мовлення та творчі здібності учнів; виховувати інтерес до аналізу літературних творів; учити аргументувати власну точку зору; провести контроль знань з теми Життя та творчість...
61079. І. Котляревський. «Енеїда». Історія створення. Національний колорит. Проблеми і мотиви твору. Характеристика героїв, що уособлюють самодержавство, панів, чиновників, духовенство 132 KB
  Венера Афродита богиня кохання побічна дочка Зевса мати Енея. Анхіз цар Трої батько Енея. Початок подорожі Енея. Відвідини Енея із Сівіллою.
61080. Складнопідрядне речення, його будова і засоби зв’язку в ньому 48 KB
  Мета: ознайомити девятикласників з поняттям про складнопідрядне речення його будову і засоби звязку в ньому; розвивати організаційноконтрольні вміння оцінювати роль складнопідрядних речень у текстах...
61081. Виды линий 36 KB
  Луч выходит из точки бесконечен в одну сторону. Нарисовать в тетради 2 точки и провести через них прямую. Как вы думаете можно ли провести ещё одну прямую через эти две точки А луч А отрезок Сколько лучей и отрезков можно провести через 2 точки бесконечное количество Пробуем. Как вы думаете почему через две точки можно провести только одну прямую и бесконечно много лучей и отрезков Попробуйте объяснить.
61082. Рисуем Сосну 298.5 KB
  Сначала рисуем ствол. Прямой ствол как мачта и корявый. Наш ствол приобретает конусную форму. Теперь ствол и ветки.