登陆注册
77391200000019

第19章 快跑灰太狼

在我的期盼中,第二天的课程如约而至,不过在上课之前,老爹在我的电脑上安装了一款叫做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;

default:/*其他按键*/

什么都不做

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做加法。」

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

同类推荐
  • 余生未曾指教

    余生未曾指教

    有的人会陪自己一路,有的人只能陪你半途,还没有走到终点,看过的欢笑又有多少能算是残留。
  • 韶华这一生

    韶华这一生

    一个平凡的女人的平凡又不平凡的一生。平凡是真的平凡,就连经历都是别人身上的都发生过的,至于不平凡……该文祝愿所有的女性都能平安顺遂的过完自己幸福的一生。
  • 虎叔的猫

    虎叔的猫

    哇,做梦都想当一只慵懒的猫,每天除了睡就是闯祸,让铲屎官来擦屁股
  • 当男孩变成男人

    当男孩变成男人

    当一个人有了目标,他就会为之不断坚持、不懈奋斗,再艰难困苦也不会放弃,那些早早儿就放弃了的,也会有其他的目标促使其不断前行。即便永远不能达到目标,一直走在路上,意志坚韧,恪守本心,便是成长。即便不慎走上了错误的道路,能悬崖勒马、浪子回头,也是成长。人之成长,就是向一个方向不断靠近。当一个男孩变成男人,并不是他年龄达到了某一既定标准,而应该是这个人怀揣着希望、肩负着责任,恪守本心,走在了自己该走的路上,能给身后的人以依靠,能给身边的人以信心,能给自己以骄傲,能给社会以价值。
  • 故寻

    故寻

    年年月月的时光辗转,留恋彷徨的人觉得累了,回到记忆中熟悉的街巷,熟不知,在渐渐错过的年华,那里已经改变了曾经刻骨的模样。岁月变迁,沧海桑田。回首,是陌生的风景,还是梦里的故人。再遇见——原来,我回来,你还在。
热门推荐
  • 穿越:天才捣蛋妃

    穿越:天才捣蛋妃

    一招穿越,什么?嫁人,还是代嫁,好吧,看到爱自己的古代爹娘,答应了。但是洗澡的时候被偷看了,什么鬼。莫名其妙,让我记住你叫荆墨离,我能忘了吗?见到你一定干死你丫的。刚嫁过去,北冥辰你个王八蛋就欺负我,还好后边你改过自新了,要不然就休了你。啥,要给他纳侧妃。老娘允许了吗?咦,怎么没有了捏。你个杀千刀的怎么惹了这么多烂桃花,老娘的命差点没了!!!等她爱上他以后,他那兄弟又给他送女人,这还了得。没爱上他就算了,爱上他了,就不允许。你送女人来,好啊。去,擦地。去,打扫院子,打扫不完不许睡觉。小玉小月,这个树真难看,给它把叶子全给我弄下来。
  • 静静和她男神的故事

    静静和她男神的故事

    呐尼?重生?校花?美女?偏偏还是爱惹来帅哥的人精,一朝重生,从此开启她燕子风华绝代的人生!!!
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 年华景逸

    年华景逸

    《年华景逸》我不负景色,你不负年华!取景年为此物,希望永生永世不分离!如要分离,冬天下雪冬天开花结果,夏天闭花不开!
  • 光门后的世界

    光门后的世界

    梦幻之力,真实具现,造假能力?哼!我搓手指怎么不让具现,明明可以具现金属,却不让具现小可爱...差评!
  • 邪女至尊

    邪女至尊

    一句等一下、让她在婚礼上穿越;父母受人追杀、生出自己移花接木;婴儿成为十八岁少女、引出一段风华;世界变成伪网游、不怕有着母亲前世记忆作为外挂阴谋成伦、爱恨情仇这是一个苦逼女主在伪网游的世界里,成为霸主收下众多美男的故事
  • 婚后夜少把我宠成祖宗

    婚后夜少把我宠成祖宗

    佳人涅槃,绝代风华,沈书柔面对有钱有势,貌比潘安的老公,真想一巴掌拍死自己,居然呕心沥血想离婚跑路。重生前一世,沈书柔听信谗言,受心机婊蒙蔽,被各路牛鬼蛇神蛊惑,害人害己,落得众叛亲离。佳人倾城归来,沈书柔决定让他们见识见识什么叫最毒妇人心
  • tfboys之冰火情仇

    tfboys之冰火情仇

    突然飞机场响起一群排山倒海般的尖叫和吼叫,一点也不亚于,若熙她们的妈妈生气大叫的样子。:“小凯,千千,二源!我爱你!!!”三宫主被这排山倒海般的吼叫吓到了,马上,立刻准备走。这是我的第二部小说,请大家多多支持(⊙o⊙)哦!
  • 我的联盟系统不一样

    我的联盟系统不一样

    江言幸运的获得一个英雄联盟的系统,就当他正准备好成为英雄联盟第一人的时候,江言发现事情好像有点不对劲。一年超魔王?两年总冠军?三年建王朝?江言悲哀的发现,这些都没有。帮助河蟹在打野的手下生存超过三十秒是什么鬼?替可怜巴巴的人机报仇打玩家又是什么情况?……江言要哭了,为什么我的联盟系统和别人的不一样?
  • 兽世改造计划

    兽世改造计划

    洛星瞳一觉醒来后,竟然发现自己穿越了。行!穿越就穿越,还有个科技系统总催我用科技改变世界。于是乎,洛星瞳便开始在这个原始世界大放异彩。可是总有个男人妨碍自己怎么办?(本文1v1,甜宠,无虐)