我若有所思道。
「如果你暂时理解不了也没有关系,我们现在的学习重点并不是UI的机制。那我们现在分析一下我们在键盘输入事件里面需要添加哪些内容:
首先,我们需要在事件中用一个char类型的变量来获取键盘输入按键的键码,就取名叫做keyCode吧。至于如何获取,MFC已经给我们留好方法了,这个暂且不提。
接下来我们就应该用switch来进行逻辑处理:
switch(keyCode)
{
case 38:/*上*/
灰太狼向上移动
break;
case 40:/*下*/
灰太狼向下移动
break;
case 37:/*左*/
灰太狼向左移动
break;
case 39:/*右*/
灰太狼向右移动
break;
&:/*其他按键*/
什么都不做
break;
}
上下左右的键码分别38、40、37、39,接下来我们要做的就是实现灰太狼的移动逻辑了。」
「嗯~」
我应了一声,在脑中想了一下老爹刚刚说的内容,确认没有什么问题后点了点头。
「还记得第一天我跟你说过,电脑的显示屏其实是一个个排列的点阵吧?应该说是像素点。」
「记得!」
毕竟当时老爹让我亲自动手实现了大写字母「Y」的显示过程,所以我对这个知识点的印象还是很深刻的。
「记得就好,对于每一个像素点来说,它们都有自己的位置,就像是五指棋盘行数用数字表示,列数用字母表示,当我们描述一个格子的位置时,就会A1,B2等来表示第一行第一列和第二行第二列的格子。
同样,像素点也有自己位置的描述方式,它是用x和y来记录,其中x代表列号,y代表行号,它们都是从0开始的,x从左到右依次增大,y从上到下依次增大。
像你房间里这台电脑的显示器分辨率是1920x1080,这代表着台显示器像素点一共有1080行,每一行有1920个像素点。最左上角的那个像素点位置是x=0,y=0,最右上角那个像素点的位置是1920,0。你能告诉老爹最左下角和最右下角的两个点的像素位置么?」
老爹拿着屏幕跟我细细讲道。
「这有什么难的,左下角像素点的位置是x=0,y=1080,右下角的像素点是x=1920,y=1080。」
「不错,正是如此。其实我们在移动灰太狼的时候,本质上就是在改变灰太狼图片在屏幕中的位置。比如说我们要把灰太狼向上移动10个像素,那么只需要让灰太狼的x保持不变,让y减去10;如果要向下移动,就让y加上10。
同理,要向左移动,就是对x做减法,向右则是对x做加法。」
有了老爹的理论支持和技术支持,很快我就将移动灰太狼的逻辑写好了。费了这么大的劲,我肯定要好好玩一下,于是在我的控制下,灰太狼在屏幕中到处乱跑。