返回第十九章 快跑灰太狼(1 / 1)任煦之秋首页

关灯 护眼     字体:

上一章 目录 下一章

在我的期盼中,第二天的课程如约而至,不过在上课之前,老爹在我的电脑上安装了一款叫做Visual studio的软件。

「由于咱们今天是要编写游戏,自然不能再像之前那样使用小黑屏咯,而是要使用图形界面化窗体程序。

而用C语言直接来编写图形化界面有些麻烦,这里咱们就用C语言的加强版C Plus以及微软提供的MFC来实现推箱子这个游戏了。」

「C Plus?那是不是我要重新学习相关的知识啊?」

我苦着脸问道。

「C Plus就是大家口中的C++,它的基础语法和C语言几乎一模一样,增强的地方在于面向对象部分。」

老爹一边安装软件,一边解释道。

「啥?我编个程序还得找个对象来坐我对面么?原来当程序员的福利真么好啊,难怪不得那么人都想当程序员。可是我还这么小,这样做真的好么?」

听到「面向对象」四个字的时候,我不禁一脸懵逼。

「这里的对象不是你想的那个对象,是……算了,我们先别讨论对象的问题,现在只是换一个环境让你使用C语言。你看C++,C++,++在后,说明是先使用C语言,然后再加的。」

老爹捂着额头苦笑道,想要解释却不知道该怎么说。

「这样的么?那当初开发C++的人应该叫它++C才对嘛……」

在和老爹闲聊的时候,软件也安装好了。为了防止我被一些不相关的东西干扰,老爹先将工程搭建好,并且设置好了窗体的相关参数。

「现在我给你演示一遍怎么加载图片,如果记不住就算了,反正我们的目的不在这儿。」

有了老爹这句话,我理所应当的没有学会。

「好了,现在背景图片和灰太狼都已经加载进来了,我们下一步就是获取从键盘上的输入,然后使用switch语句让灰太狼动起来。

在MFC中给我们提供了控件的键盘输入事件,我们只需要到相应的位置获取键盘输入了好了。」

「键盘输入我能够理解,事件是个嘛玩意儿?」

我又被老爹说的新名词给弄迷糊了。

「嗯~,比如说哈,我们现在在这个窗体上点击鼠标,这个时候计算机是能够捕捉到我们这个点击动作的,这个动作被称之为事件源。当计算机捕捉到这个动作的时候,就会去执行对应的一段代码。

而要执行的那段代码,叫做事件响应内容,需要我们给出,因为计算机并不知道捕捉到动作的时候需要做什么事情。

之前一直跟你说过,计算机很笨,我们不能把事件响应内容随意放置,而是要放在一个特定的地方,否则计算机就找不到。而这个特定的位置,就叫做事件,事件里边执行的是事件响应内容。

所以事件的机制是:事件源触发事件,事件执行事件响应内容。

对了对了,我想到一个特别好的例子,我们再来说说谍战风云。」

「好呀好呀!」

「在谍战片里边一般情报人员里边都是单线联系对吧?假设现在你是老爹的上级,老爹是你手下的一个情报人员,但是由于我们是单线联系,你可以直接联系我,但是我不能直接联系你。

这天呢,你联系我,让我要在半个月之内获取到敌人的密码本。老爹我历经千难万险,九死一生,终于从敌人手里拿到了密码本。

密码本是拿到了,但是我要怎么给你呢?我又没有办法主动联系你?

这个时候我就想到你之前说的,一旦拿到敌人的密码本,就立刻藏在某个寺庙的佛龛下面。

老爹将密码本放在佛龛下边后不放心,于是就旁边写上了『此处没有密码本』几个大字。果不其然,敌人很快就找到了老爹藏密码本的佛龛,但是在看到上面的字后信以为然就走了。

半个月的时间到,你就到佛龛下面拿到了密码本,任务完成!」

「哈哈!老爹你这不是骗小孩儿么?敌人怎么可能相信你写的字嘛,这不是此地无银三百两么?」

「这只是老爹编的故事而已,不要较真嘛。

在这个故事里边,半个月的时间就是事件源,当半个月的时间一到,你就要去佛龛拿密码本,所以佛龛就是事件,事件内容就是密码本咯。

同理,当我们按下键盘上某个按键就是事件源,这个时候就要触发键盘输入事件,而我们只需要在事件里面添加我们需要进行的逻辑内容。」

「哦~,原来是这样的哦。」

我若有所思道。

「如果你暂时理解不了也没有关系,我们现在的学习重点并不是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做加法。」

有了老爹的理论支持和技术支持,很快我就将移动灰太狼的逻辑写好了。费了这么大的劲,我肯定要好好玩一下,于是在我的控制下,灰太狼在屏幕中到处乱跑。

『加入书签,方便阅读』

上一章 目录 下一章