Программирование игр для Windows. Советы профессионала


Первый шаг - часть 4


void RestoreVideo(void);

int InitBitmaps(void); void FreeMem(void);

void DrawLayers(void);

void AnimLoop(void);

void Initialize(void);

void CleanUp (void) ;

void OpaqueBIt (char*, int, int, int) ;

void TransparentBit(char *,int,int,int) ;

#ifdef __cplusplus

} #endif

Программа из Листинга 17.2 (PARAL.C) демонстрирует повторяемое смещающееся изображение. Движущаяся картинка показывает облачное небо под солнцем. Хотя изображение и выглядит непрерывно меняющимся, но на самом деле оно неподвижно.

Наиболее важной частью программы является функция OpaqueBIt(). Она выводит левую и правую части изображения в буфер системной памяти, основываясь на значении LeftHalf. Когда построение закончено, содержимое буфера копируется на экран.

Запустив оттранслированную программу, используйте курсорные клавиши «влево» и «вправо» для изменения направления скроллинга. Для выхода из программы нажмите Esc. При этом она вычислит и покажет скорость анимации кадра. На машине с процессором 386SX/25 скорость выполнения составила около 35 кадров в секунду при размерах демонстрационного окна 320х100 Пикселей.

Листинг 17.2 Демонстрационная программа повторяемого смещения.

#include <stdio.h>

#include<stdlib.h>

#include<string.h>

#include <time.h>

#include<dos.h>

#include "paral.h"

char *MemBuf,            // указатель на буфер памяти

*BackGroundBmp,     // указатель на скрытую битовую карту

*VideoRam;          // указатель на память VGA

PcxFile pcx;             // структура PCX-файла

int volatile KeyScan;    // изменения клавиатурного обработчика

int frames=0,            // количество нарисованных кадров

PrevMode;            // сохраняет исходный видеорежим

int background;

void _interrupt (*OldInt9)(void); // указатель на клавиатурный

// обработчик BIOS

// Данная процедура загружает 256-цветный PCX-файл

int ReadPcxFile(char *filename,PcxFile *pcx)

{

long i;

int mode=NORMAL,nbytes;

char abyte,*p;

FILE *f;

f=fopen(filename,"rb") ;




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



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