游戏设计手札06

今天遇到的问题:

  • 因为是全屏游戏,为了方便地图的显示,进入游戏时修改了系统分辨率,可是之后发现,这样一来第一个显示的页面闪一下后会被黑屏覆盖掉,之后要通过键盘触发相应的消息响应才能继续之后的显示。
  • 有时候按一下回车会产生连续按两下的效果。

解决的方法是:

  • 修改系统分辨率的代码需要放在窗口注册以后,否则会编译出错;并且要放在窗口创建之前,否则会出现上面提到的问题。
  • 在消息响应时添加了一个定时器,添加了一个全局变量waittime,初始时waittime = 0,收到按键的消息时,判断waittime的值是否为0。如果是,就执行相应处理函数,并启动定时器,设waittime值为1;如果不为0,则直接break返回。当收到定时器消息WM_TIMER时,销毁定时器,并置waittime为0,这样便能防止连续按键盘,我设置的定时器时间为500ms。其实跟单片机处理键盘的方法大同小异。
posted @ 2012-01-29 00:22 cybersword 阅读(47) 评论(2) 编辑 收藏

 回复 引用 查看   
#1楼2012-01-30 10:10 | 独孤残云      
用DC起步可以较大限度的接触游戏编程的本质,同时巩固C++基础。
LZ坚持的话,可以先试着找一些DC的2D编程框架,看看别人的架子是怎么搭起来的,同时留意一下相应的绘制函数应该怎么来封装。
DDraw虽然最接近2D的本质,但自身毕竟存在了太多的局限性,Direct3D和OpenGL会是之后的必然趋势。LZ如果感觉这两者有难度,也可以考虑先试着从Xna入手。

 回复 引用 查看   
#2楼[楼主]2012-02-01 13:03 | cybersword      
@独孤残云
多谢指点,原本是想把这个游戏用最简单的GDI做完,然后再学习Direct3D和OpenGL,慢慢向主流技术靠拢,这几天下来,核心模块差不多成型了,但是架构一塌糊涂,感觉还是好多消息响应之类的东西不是很理解,比如GetAsyncKeyState()检测键盘的状态,这个函数试过几次都没能使用成功,也不知道是不是跟我原来的消息循环冲突了。
请问有没有游戏编程的必读书籍,或者案例什么的。