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с.


 

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

80956. Теоретичний матеріал в історичних курсах 34.9 KB
  Пояснюючий виклад історичних даних теоретичного характеру орієнтує учнів на репродуктивний спосіб роботи на просте відтворення їх з допомогою прийомів якими при викладенні користувався вчитель. Перші навчають учнів засвоювати і відтворювати в образній формі зовнішні ознаки історичних подій. Другі сприяють формуванню уміння осмислювати сутність фактичного матеріалу засвоювати теоретичні дані у вигляді історичних понять різної складності.
80957. Проведення тематичного оцінювання знань учнів з історії України 35.46 KB
  Тема на вибір студента Основною навчальною метою уроку є проведення тематичного оцінювання рівня знаньумінь і навичок. При цьому оцінювані доцільно використовувати такі форми оцінюванняякі не вимагають від пятикласників довгих розгорнутих відповідей. Тематичне оцінювання розглядають як підсумкову роботу кожного учня.
80958. Емпіричний і теоретичний рівні засвоєння учнями навчального історичного матеріалу 35.82 KB
  Емпіричний (від гр. еmреіrіа – досвід) рівень знання – це знання, отримане безпосередньо з досвіду з деякою раціональною обробкою властивостей і відношень обєкта, що пізнається. На емпіричному рівні школярі працюють з фактами, представленими в підручниках
80959. Методика написання плану-конспекту з історії 36.2 KB
  Молоді вчителі у конспекті зазначають: способи прийоми актуалізації опорних знаньосновних понять визначень висновків формул які учні засвоїли раніше і застосовують у практичній діяльності необхідних для сприймання учнями нового змісту; Після підготовчого етапу в конспекті описують зміст активного навчання шляхом взаємодії вчителя та учнів: виділяють логічно повязані етапи організації спільної навчально пізнавальної діяльності вчителя та учнів; зазначають нові факти положення уміння та навички якими повинні оволодіти школярі;...
80960. Поняття про вміння в методиці навчання історії 36.44 KB
  Пізнавальні вміння в методиці навчання історії визначають як підготовленість до свідомих і точних дій розумових і практичних і здатність учня послідовно застосовувати всю сукупність навчальних і розумових дій. Ознакою сформованого вміння є здатність учнів переносити відомі їм навчальні або розумові дії прийом в нову ситуацію вибирати і використовувати адекватні прийоми для розвязання оригінальних задач. У будьякому випадку вміння завжди буде свідомою дією адекватною цілям її застосування і змісту навчального історичного матеріалу.
80961. Складіть календарний план з історії України (Вступ до історії України, 5 клас) 36.37 KB
  Вступ до історії у 5 класі Головною метою курсу є підготовка учнів до успішного опанування систематичних курсів історії України та всесвітньої історії прищеплення інтересу до історії отримання знань у наступних класах через формування в них початкових уявлень про історію як науку та про історію України як складову світової історії елементарних вмінь з історії; поглиблення загальних дидактичних вмінь необхідних для успішного засвоєння історичної інформації в подальшому; прагнення викликати захоплення минулим України. Зміст курсу...
80962. Види пізнавальних умінь, що формуються у шкільних курсах історії 37.59 KB
  Більш складною є класифікація пізнавальних умінь за змістом. До спеціальних умінь належать ті що потрібні у навчанні конкретного предмета споріднених навчальних дисциплін. Загальновизнаною і стабільною групою спеціальних пізнавальних умінь у навчанні історії є хронологічні і картографічні вміння.
80963. Складіть запитання для усного обговорення документа: «Договір про ненапад між Німеччиною та СРСР від 23 серпня 1939 року.» 33.04 KB
  СРСР почав переговори з Англією і Францією з метою підписання договору про відвернення агресії з боку Німеччини. Однак СРСР не довіряв західним державам що посилювало взаємну невпевненість. у Москві між СРСР і Німеччиною було підписано пакт про ненапад.