Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Листинг 17.1. Файл заголовка демонстрационной программы циклического скроллинга (PARAL.H)





//

//Paral.h - данный заголовок определяет константы и структуры

//данных, используемые в демонстрационной программе

// параллакса

#define KEYBOARD 0х09 //

//Коды клавиатуры для прерывания INT 9h

#define RIGHT_ARROW_PRESSED 77

#define RIGHT_arrow_rel 205

#define LEFT_ARROW_PRESSED 75

#define LEFT_ARROW_REL 203

#define ESC_PRESSED 129

#define UP_ARROW_PRESSED 72

#define UP_ARROW_REL 200

#define DOWN_ARROW_PRESSED 80

#define down_arrow_rel 208

#define VIEW_WIDTH 320

#define VIEW_HEIGHT 150

#define MEMBLK VIEW_WIDTH*VIEW HEIGHT

#define TRANSPARENT 0 // цветовые коды

#define TOTAL_SCROLL 320

enum (NORMAL, RLE},;

enum (FALSE,TRUE};

typedef struct

{

char manufacturer; /* Всегда 0 */

char version; /* Всегда 5 для 256-цветных файлов */

char encoding; /* Всегда 1 */

char bits_per_pixel;

/* Должно быть равно 8 для 256-цветных файлов */

int xmin, ymin; /* Координаты левого верхнего угла */

int xmax,ymax; /* Высота и ширина образа */

int hres; /* Горизонтальное разрешение образа */

int vres; /* Вертикальное разрешение образа */

char palettel6[48];

/* палитра EGA; не используется для 256-цветных файлов */

char reserved; /* зарезервировано */

char color planes; /* цветовые планы */

int bytes_per_line;

/* количество байт в каждой строке пикселей */

int palette_type;

/* Должно быть равно 2 для цветовой палитры */

char filler[58]; /* Не используется */

} PcxHeader;

typedef struct

{

PcxHeader hdr;

char *bitmap;

char pal[768];

unsigned imagebytes,width,height;

} PcxFile;

#define PCX_MAX_SIZE 64000L enum {PCX_OK,PCX_NOMEM,PCX_TOOBIG,PCX_NOFILE};

#ifdef __cplusplus

extern "C" {

#endif

int ReadPcxFile(char *filename,PcxFile *pcx);

void _interrupt NewInt9(void);

void RestoreKeyboard(void);

void InitKeyboard(void);

void SetAllRgbPalette(char *pal);

void InitVideo (void);

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 Пикселей.

Date: 2015-09-18; view: 338; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию