基于位运算插值的,easyX多按键检测<类>
2017-04-14 11:10
204 查看
如果有需要用easyX库写小游戏的朋友可以试试.
特点是把一个size_t作为一个长bool数组.
通过监视者模式检测按键行为
友情链接:easyX官网
特点是把一个size_t作为一个长bool数组.
通过监视者模式检测按键行为
//Inputer.h #pragma once #include <map> #include <windows.h>//引入API函数GetAsyncKeyState() #include <initializer_list> class Inputer { public: Inputer(const std::initializer_list<char>&); ~Inputer() = default; bool get_keyboard(char c); bool empty() { return (keycmd == 0); } void updata(); private: size_t keycmd = 0;//缓冲区 std::map<char, size_t> key; };
//Inputer.cpp #include "Inputer.h" Inputer::Inputer(const std::initializer_list<char>&li)//构造函数,接受一个列表,列表里存储需要检测的按键(虚拟键值) { for (auto &a : li) { key.insert({ a,1UL << key.size() });//通过左移无符号值1,为每个需要检测的键生成唯一的位 } } bool Inputer::get_keyboard(char c) { return ((keycmd&key[c]) == 0) ? false : true;//值是否插入? } void Inputer::updata()//在每帧开始前调用 { keycmd = 0;//清空缓冲区 for (auto &a : key) { if (GetAsyncKeyState(a.first) & 0x8000) { keycmd |= a.second;//若API函数返回真,则将对应的值插入 } } }
友情链接:easyX官网
相关文章推荐
- <<一种基于δ函数的图象边缘检测算法>>一文算法的实现。
- <cocos2d-x for wp7>使用cocos2d-x制作基于Tile地图的游戏:碰撞检测和收集物品(二)
- <<一种基于δ函数的图象边缘检测算法>>一文算法的实现。
- System.Web.HttpRequestValidationException: 从客户端(txtName="<fd>")中检测到有潜在危险的 Request.Form 值。
- <cocos2d-x for wp7>使用cocos2d-x制作基于Tile地图的游戏:加入敌人和战斗(三)
- 检测远程URL是否存在的三种方法<转>
- 基于easyX的<颜色侵略>小游戏
- Maatkit工具使用<二>之mysql重复索引检测工具
- 笑死俺了!!!!! &lt;基于sinox操作系统公厕收费系统&gt;可行性报告
- System.Web.HttpRequestValidationException: 从客户端(txtName="<fd>")中检测到有潜在危险的 Request.Form 值
- <开源> 基于Android的SIP电话-----Speex 回音消除 在android 平台
- 基于X的GNOME、GTK、GDK、GLib<Xlib>Xt,Xm,Motif-等之间的关系
- 转载:老问题再次发生 “从客户端(userName="<hr />")中检测到有潜在危险的 Request.Form 值” 解决方案
- <四>基于淘宝Fourinone实现集群管理demo
- <三>基于淘宝Fourinone实现统一配置管理指南和demo
- <一>基于Fourinone实现分布式计算上手指南和demo
- SQL SERVER性能分析--死锁检测数据库阻塞语句<转>
- <cocos2d-x for wp7>使用cocos2d-x制作基于Tile地图的游戏:不一样的战斗(回合制战斗)(四)
- <七>基于淘宝Fourinone实现MQ指南和demo
- <cocos2d-x for wp7>使用box2d来做碰撞检测(且仅用来做碰撞检测)