1.4.3 输入处理

游戏编程的一个特点是编写的程序需要和用户交互。用户的输入包含各种各样的信息,例如键盘按键信息、鼠标移动或单击信息,甚至游戏手柄的按键信息等。这些信息通常是通过事件队列存放的,在每次运行游戏主循环中的代码时,程序都需要从事件队列中取出需要的信息进行处理。

举个例子,你是一位在战场上统领大军的将军,你需要关注敌方部队有没有发生移动。于是你每个小时开始时都会派出一队侦察兵,让他们分散在战场四周获取情报,侦察兵会在每个小时结束时将情报传回你的手中。有的情报是关于天气变化的,有的情报是关于敌人动向的,有的情报是关于粮草供应的。每份情报都被写在一张纸上,按顺序叠放在桌上。你的参谋会每小时看一次情报,检查这些情报中是否有关于敌人动向的信息。当参谋发现这一类情报后,你会基于相关情报来调动部队出击。

游戏编程中的输入处理与此类似。每一帧里,程序都会收到各种输入事件,并将它们按顺序存放在一个事件队列中。程序会不停地检查这个队列,当程序“关注”的事件发生时,例如玩家按下了空格键,程序就会运行相应的代码来发射炮弹。