TimothyQiu's Blog

keep it simple stupid

Visual C++ 调试模式 F12 中断

最近写毕业设计,遇到个问题:在 Debug 模式运行程序时,一按 F12 就会提示「User breakpoint called from code at 0xXXXXXXXX」,完全无视我对 F12 的按键处理 :(

经过 Google,发现微软表示,这恼人的东西其实还是一项「功能」,方便在需要时立即中断程序。擦,这不坑爹么……

要解决这个「功能」,可以打开注册表编辑器,在 HKLM\Software\Microsoft\Windows NT\CurrentVersion\AeDebug\UserDebuggerHotkey 键设为非零,重启后在调试模式按 F12 就不会再触发中断了。

游戏按键处理?

游戏中,主循环每一帧的一般流程概括起来是这样的:

处理输入 → 更新状态 → 绘制画面

「处理输入」就是获取键盘、鼠标、手柄等等输入设备的当前状态,然后根据这些输入设备的状态改变游戏中相应对象(不管是实体还是虚拟对象)的状态。

这里的处理按键和操作系统本身的按键消息不属于一个系统,有一个比较麻烦的就是键是可以一直按着的。假设游戏有甲乙两个画面,两个画面间可以通过按 Tab 键切换,如果在每个画面的处理输入时写:

input.tab = IsKeyDown(KEY_TAB); // input.tab 是布尔型变量

if (input.tab) {
    SwitchState();
}

那么如果你按着 Tab 键,游戏就会一直在两个画面间切换,which is not what we want(好吧,这个从句用中文说感觉不像中文,那就英文写好了)。

也就是说,事实上我们需要的是边沿触发而不是电平触发(这术语是模电还是数电的来着 = =),如果API只能取得指定键是否按下的话,有一种方法就是自己来:

if (IsKeyDown(KEY_TAB)) {
    input.tab++; // input.tab 是整型变量
} else {
    input.tab = 0;
}

if (input.tab == 1) {
    SwitchState();
}

这就是今天上网看到的一个比较顺眼的方法,虽然比较火星。以上。

于是,又开始写博客了

算起来,最后一次正正经经写博客应该是大一时候的事了吧。那时候万恶的学校不允许自带电脑,跑机房写博客是件很蛋疼的事情,久而久之也就不写了。于是之前写了两年左右的博客也就让它尘封在硬盘吧。

嘛~现在快毕业了,终于想到又重新注册个域名开始写博客了。

话说 VPS 配置神马的真是麻烦呀~折腾了很长时间还是不能折腾出个自己满意的样子(好吧,其实我是没什么功夫看文档)。本来想装个 WordPress 玩玩的,结果好不容易装好 MySQL 内存就占用 80% 以上。优化什么的就算了,想来想去,感觉 MySQL 还是重量级了一点,WordPress 也复杂了点。算了,CentOS + Nginx + PHP + MySQL 什么的果然还是浮云啊。于是干脆暂时纯 HTML 手写页面顶着吧 于是绕了一圈依旧装回了 WordPress,果然自己写还是个漫长的过程,先 WordPress + sqlite 用着吧,过段时间再自己用 PHP 写个简单的纯文本博客程序 :)