> Свободная база знаний SFML > Уроки SFML > Разработка 2D Игр > Уроки от legozaur > Приложение 1. Основные классы > Keyboard
Краткое описание:
Мой класс Keyboard (на базе sf::Keyboard).
Назначение: отслеживает 4 состояния клавиши, предоставленной SFML
(sf::Keyboard перехватывает только состояния нажатой и не нажатой клавиши)
Как пользоваться:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include "Keyboard.h" int main() { //... Keyboard* k; //... switch(k->getEventButton(sf::Keyboard::A)) { case 1: cout << "Keyboard: pressed A" << endl; break; // Нажатие клавиши case 3: cout << "Keyboard: released A" << endl; break; // Отжатие клавиши } //... return 0; } |
0 – Клавиша не нажата
1 – Нажатие клавиши (pressed)
2 – Клавиша нажата
3 – Отжатие клавиши (released)
Исходный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//Keyboard.h #include "stdafx.h" // Created by Kildushov Oleg // Создатель - Кильдюшов Олег // vk.com/legozaur // kychka-pc.ru - nikname: legozaur // v16.12.2015 14:57 #ifndef DSL_KEYBOARD_H #define DSL_KEYBOARD_H class Keyboard { private: bool mass[101]; void data(); public: Keyboard(); ~Keyboard(); // Данная функция возвращает событие, // которое произошло с принимаемой клавишей, // в текущий момент времени // 0 - нет событий (многократно) // 1 - нажатие клавиши (единожды) // 2 - удерживание клавиши (многократно) // 3 - отпускание клавиши (единожды) int getEventButton(sf::Keyboard::Key key); }; #endif DSL_KEYBOARD_H |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
//Keyboard.cpp #include "Keyboard.h" // Created by Kildushov Oleg // Создатель - Кильдюшов Олег // vk.com/legozaur // kychka-pc.ru - nikname: legozaur // v16.12.2015 14:57 Keyboard::Keyboard() { data(); } Keyboard::~Keyboard(){} void Keyboard::data() { for(int i = 0; i<101; i++) mass[i] = false; } int Keyboard::getEventButton(sf::Keyboard::Key key) { bool isPressed = sf::Keyboard::isKeyPressed(key); // Нажата ли принимаемая клавиша? bool isPressed2 = mass[key]; // Была ли до этого нажата данная клавиша? if(isPressed2 != isPressed) { // Если состояние клавиш различны if(isPressed2 == true) { // Кнопка была нажата, теперь не нажата mass[key] = false; return 3; // 3 если была отпущена } else { // Кнопка была не нажата, теперь нажата mass[key] = true; return 1; // 1 если была нажата } } else { // Состояние не менялось if(isPressed2 == true) // Если кнопка была нажата return 2; // 2 если кнопка зажата else return 0; // 0 если кнопка не нажата } } |
…