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


Пример обработчика прерывания № 2 - Ловим нажатия клавиш! - часть 3


6.       Сбросить состояние контроллера прерываний 8259. (Без этого можно и обойтись, однако лучше подстраховаться). Для этого следует записать в порт 20h число 20h. Забавное совпадение, не правда ли?

7.       Выйти из обработчика прерывания.

Листинг 12.7 содержит текст программы обработчика клавиатурного прерывания, позволяющего отслеживать состояние клавиш со стрелками. При работе этой программы вы можете использовать курсорные клавиши или их комбинации для перемещения маленькой точки в любом направлении по экрану.

Листинг 12.7. Киберточка (CYBER.C)._____________________

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

#include

<dos.h>

#include <bios.h>

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include <graph.h>

// ОПРЕДЕЛЕНИЯ //////////////////////////////////////////

#define KEYBOARD_INT    0х09

#define KEY_BUFFER      0х60

#define KEY_CONTROL     0х61

#define INT_CONTROL     0х20

// коды нажатия и отпускания для клавиш со стрелками

#define MAKE_RIGHT      77

#define MAKE_LEFT       75

#define MAKE_UP         72                                        

#define MAKE_DOWN       80

#define BREAK__RIGHT     205

#define BREAK_LEFT     203

#define BREAK_UP        200

#define BREAK_DOWN      208

// индексы в таблице состояния клавиш со стрелками

#define INDEX_UP        0

#define INDEX_DOWN      1

#define INDEX_RIGHT     2

#define INDEX_LEFT      3

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

void (_interrupt _far *01d_Isr)(void);

// хранит старый обработчик прерывания

unsigned char far *video_buffer = (char far *)0xA0000000L;

// указатель на видеобуфер

int raw_key;    // необработанные данные от клавиатуры

int key_table[4] = {0,0,0,0};

// таблица состояний клавиш со стрелками

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

void Plot_Pixel_Fast(int x,int y,unsigned char color)

{

// эта функция рисует точку заданного цвета несколько быстрее,




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



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