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


Калибровка джойстика - часть 2


§          Понажимать на кнопки.

Затем, программа сохраняет результаты процедуры калибровки в глобальных переменных.

Листинг 3.3. Программа работы с джойстиком (JOY.C).

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

#include <dos.h>

#include <bios.h>

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include <graph.h>

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

#define JOYPORT      0х201 // порт джойстика - 201h

#define BUTTON_1_A   0х10 // джойстик А, кнопка 1

#define BUTTON_1 В   0х20 // джойстик А, кнопка 2

#define BUTTON_2_A   0х40 // джойстик В, кнопка 1

#define BUTTON_2_B   0х80 // джойстик В, кнопка 2

#define JOYSTICK_1_X 0х01 // джойстик А, ось Х

#define JOYSTICK_1_Y 0х02 // джойстик А, ось Y

#define JOYSTICK_2_X 0х04 // джойстик В, ось Х

#define JOYSTICK_2_Y 0х08 // джойстик В, ось Y

#define JOY_1_CAL       1 // команда калибровки джойстика А

#define JOY_2_CAL       2 // команда калибровки джойстика В

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

unsigned int

joy_1_max_x, // глобальные переменные для сохранения

joy_1_max_y, // калибровочных значений

joy_1_min_x,

joy_l_min_y,

joy_1_cx, joy_1_cy,

joy_2_max_x, joy_2_max_y,

joy_2_min_x, joy_2_min_y,

joy_2_cx, joy_2_cy;

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

unsigned char Buttons(unsigned char button)

{

// функция читает статус кнопок джойстика

outp(JOYPORT,0); // получаем запрос на получение статуса кнопок

// инвертируем полученное значение и комбинируем его с маской

return (~inp(JOYPORT) & button);

} //конец функции ///////////////////////////////////////////////////////

unsigned int Joystick(unsigned char stick)

{

// Функция  читает положение счетчика на основании количества

// циклов, прошедших между сбросом и установкой бита в порту

// джойстика. Встроенный ассемблер - прекрасная вещь!

_asm{

cli                      ; запрещаем прерывания




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