Секреты программирования игр


Демонстрация смены экрана


Гаснущие, исчезающие и растворяющиеся изображения — все они выглядят неплохо. Здесь приведена программа, которая позволяет увидеть эти эффекты в действии.

Листинг 7.9. Эффекты экрана (SCREENFX.C).

// ВКЛЮЧАЕМЫЕ ФАЙЛЫ ////////////////////////////////////////

#include <io.h>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

#include <bios.h>

#include <fcntl.h>

#include <memory.h>

#include <malloc.h>

#include <math.h>

#include <string.h>

#include "graph0.h" // включаем нашу графическую библиотеку

// СТРУКТУРА.///////////////////////////////////////////////

typedef struct worm_typ

{

int у;       // текущая Y-координата "червячка"

int color;   // цвет "червячка"

int speed;   // скорость "червячка"

int counter; // счетчик

}, worm, *worm_ptr;

// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ ///////////////////////////////////

unsigned int far *clock = (unsigned int far *)0x0000046C;

// указатель на внутренний таймер 18.2 "тик"/с

pcx_picture screen_fx; // наш тестовый экран

worm worms[320]; // используется при оплывании экрана              

//ФУНКЦИИ /////////////////////////////////////////////////      

void Timer(int clicks)

{

// эта функция использует внутренний таймер с частотой 18.2 "тик"/с

// 32-битовое значение этого таймера имеет адрес 0000:046Ch

unsigned int now;

// получим текущее время

now = *clock;

// Ожидаем до истечения указанного периода времени.

// Заметьте, что каждый "тик" имеет длительность примерно в 55 мс

while(abs(*clock - now) < clicks){}

} // конец Timer ////////////////////////////////////////////////////////////

void Fade_Lights (void)

{ // эта функция гасит свет, медленно уменьшая значения цветов

// во всех цветовых регистрах

int index,pal_reg;

RGB_color color,color_1,color_2,color_3;

for (index=0; index<30; index++)

{

for (pal_reg=l; pal_reg<255; pal_reg++)




Начало  Назад  Вперед



Книжный магазин