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


 

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

77456. Понятие, цель и порядок введения процедуры, применяемой в деле о банкротстве: внешнего управления. Последствия введения внешнего управления 26.88 KB
  Последствия введения внешнего управления. План внешнего управления. Отчет внешнего управляющего и прекращение внешнего управления.
77459. Порядок расчёта с кредиторами 49.5 KB
  В течение двух месяцев со дня публикации объявления о признании должника банкротом кредиторы желающие получить удовлетворение должны включиться в реестр требования кредиторов. Но это не прекращает те требования что не были заявлены за 2 месяца влияет на очередность удовлетворения. Не заявленные в течение 2 месяцев требования могут быть удовлетворены если у должника осталось имущество после расчётов с кредиторами требования которых включены в реестр. Исключение ещё установлено для требований кредиторов первой и второй очереди имеются...
77460. Понятие и порядок заключения мирового соглашения. Форма и содержание мирового соглашения, утверждение мирового соглашения арбитражным судом 17.3 KB
  Форма и содержание мирового соглашения утверждение мирового соглашения арбитражным судом. Расторжение мирового соглашения. Последствия неисполнения мирового соглашения.
77461. Упрощенные процедуры банкротства: банкротство ликвидируемого и отсутствующего должника 16.9 KB
  Особенности подачи заявления о признании отсутствующего должника банкротом. В случаях если гражданин должник или руководитель должника юридического лица фактически прекратившего свою деятельность отсутствует или установить место их нахождения не представляется возможным заявление о признании отсутствующего должника банкротом может быть подано конкурсным кредитором уполномоченным органом независимо от размера кредиторской задолженности. Заявление о признании отсутствующего должника банкротом подается уполномоченным органом только при...
77462. Особенности банкротства физических лиц, индивидуальных предпринимателей и крестьянского (фермерского) хозяйства 18.16 KB
  Основания для признания крестьянского фермерского хозяйства банкротом неспособность удовлетворить требования кредиторов по денежным обязательствам и или исполнить обязанность по уплате обязательных платежей. Особенности порядка признания индивидуального предпринимателя главы крестьянского фермерского хозяйства банкротом Заявление индивидуального предпринимателя главы крестьянского фермерского хозяйства о признании его банкротом может быть подано в арбитражный суд при наличии согласия в письменной форме всех членов крестьянского...
77463. Оспаривание сделок в деле о банкротстве. Подозрительные сделки и сделки предпочтения 16.94 KB
  Сделки совершенные должником или другими лицами за счет должника могут быть признаны недействительными в соответствии с Гражданским кодексом Российской Федерации а также по основаниям и в порядке которые указаны в настоящем Федеральном законе. Оспаривание подозрительных сделок должника...
77464. Антимонопольное законодательство и иные акты о защите конкуренции. Цель и метод правового регулирования, предусмотренного антимонопольным законодательством 18.32 KB
  Понятие конкуренции недобросовестная конкуренция понятие формы. Принцип: регулирование и контроль монополистической деятельности осуществление монополистической деятельности допускается если это не нарушает свободу конкуренции. При обнаружении факти или угроза нарушения конкуренции монополистическая деятельность признается незаконной.