编程语言应用

首页 » 常识 » 问答 » 教孩子写游戏计算机语言那么多,为何3D游
TUhjnbcbe - 2023/6/15 21:44:00
白癜风治疗那里好 http://www.zbxusheng.com/

“学”的内容:

在充分理解了计算机是个什么玩意儿之后,不用我说你都知道,想要写程序,就要用到计算机语言。通过上节课我们可以知道,电脑是有非常多强大功能的,可是,电脑自己并不会用它自己的强大功能,需要我们通过一定的方式告诉电脑,你应该如何使用。而我们告诉电脑如何使用自己强大功能的过程,就是编程的过程。

编程两个字怎么理解呢?

比方说,在前辈们的努力下,电脑已经有个单独的强大功能了(只是打个比方,事实上,电脑估计已经有好几百亿个单独功能了),可是电脑自己并不知道怎么样才能用。然后,我们打算用电脑来播放一个视频(假设还没有视频播放软件),那么,我们需要经历这么一个过程:

(1)把播放视频的任务分解,看看已知的个单独功能中有没有已经解决的,把已经解决的功能单独挑出来,比方说是功能组A;

(2)然后把还没有实现的功能归类,比方说是功能组B;

(3)接下来通过数学知识,来逐一解决功能组B中的问题(相当于给电脑创造新功能);

(4)最后把功能组A和功能组B通过一定的方式连起来,这个视频软件的代码就写完了。

我们可以发现,这个问题解决的过程,就和写一本书类似:刚开始构思大纲,然后通过文字的方式表达出来。

而上面的过程,开始是分解问题,然后是通过计算机语言把问题的解决方法写出来。写书的时候我们用的是“编写”两个字,所以,写程序的时候我们也用“编写”这两个字。

而且,程序完成后,展现在电脑面前的,是一系列的功能调用步骤。比方说上面的例子完成后,会有一系列的功能调用过程,假设是从1到的功能调用过程。那么,电脑在执行这个程序的时候,就会按照从1到的顺序逐一调用已经有的功能。所以,程序就是一堆有顺序的功能调用过程。

把两个结合起来,我们做的这个事情就叫做“编写一堆有顺序的功能调用过程”。这个名字太长了,把中间的内容全部去掉,所以就有了“编程”这个词。

计算机发展到现在,计算机语言是非常多的,几乎发展到了一个小学科一个编程语言的境地。在众多的编程语言中,C++语言算得上是比较难的一门语言了,很多人会有疑问,小孩子真的能学会这门语言吗?

我的观点是:我们不需要完全学会C++。

我们只是用C++这个语言来写游戏而已,而且,用到的C++知识不是特别多,我们只要让小孩子懂得如何用就行,并不需要让他们理解用的背后那复杂的真谛。相对于很多语言来讲,C++的语法并不是很难,只要不深入,问题不是很大。

额外提一句,我们完全可以把C++语言理解成是C语言的优化版本。C++语言把C语言中非常“飘”的内容去掉了,还给C语言扩充了“类”的功能。为什么要提这一句呢?因为C语言在计算机界的地位就和泰山北斗一样不可撼动。举个例子说明一下:微软公司失败的WindowsVista系统制作过程。

由于C语言非常强大,所以,Windows基本上都是用C语言写的。C语言非常灵活,它能和汇编语言能非常融洽地结合在一起,能够非常轻松地处理系统底层的诸如CPU调配、内存调配等等问题,而且兼容性非常好。正是因为如此,C语言编写的Windows系统才能风靡全球。

一个公司强大了之后,总是想自己创造一门语言,微软公司也不例外。他们在C语言的基础上,创造了自己的C#语言。C#语言的好处,是非常切合Windows,完全就是为了Windows而打造的一款编程语言。慢慢的,微软公司就自负了起来,觉得自己创造的C#语言也很强大。

所以,当他们准备开发WindowsXP下一代产品的时候,非常大胆地选择了C#语言作为主要编程语言。可是,C#语言并不擅长系统底层方面的问题处理,到了开发的末期,问题的堆积量已经达到了不可解救的地步。随着时间的逼近,开发团队没办法,直接放弃了C#,重头用C语言开始写。可是,时间已经浪费了很多,虽然最后用C语言写出了WindowsVista,可这也是Windows第一次被大量用户吐槽的一个版本。

说这个例子的目的是:C语言是非常强大的,而C++和C#不一样,C#是新语言,而C++只是C语言的优化,也就是说,C++有着C语言大部分的强大能力。

这也是结论一:C++语言有强大能力。

然后再说一说游戏。在前面我们提过一句,说游戏是非常复杂的编程。那么,游戏到底复杂在哪里呢?我们这个课程要写一个3D的游戏示例小程序,那就以3D游戏来说明一下。

(1)我们的电脑屏幕只是2D的,我们并不能直接在屏幕上展现3D的内容,所以,首先我们要创建一个虚拟的3D世界。

(2)在3D世界中,我们要处理非常多的内容,包括各种各样的自然现象。像表象的东西要用到物理学,而内在的东西就要用到数学。比方说,我们要在3D世界中模拟下雨。雨滴(或者是雨线)的下落规律是物理学方面的内容;而下落的后台计算就是数学方面的内容了。

(3)3D世界牵扯到超巨量的数学计算,所以,3D游戏编程都需要和显卡打交道。

(4)我们还要处理键盘输入啊、声音播放啊、3D音效啊等等内容。

你看,我们只是粗略地分析了一个简单的3D游戏,就发现要用到这么多的知识,实在是非常复杂。如果说,你要开发的是更加复杂的现实模拟类游戏,你要考虑的内容就更多了。我们再反观其他应用软件,基本上都是单功能的。比方说听歌的软件,它仅处理声音播放的任务。

这样,我们就能得到第二个结论:3D游戏编程非常复杂。

我们也可以用很多其他编程语言来写游戏,可是,其他语言本身能力不够强大,再来处理这个异常复杂的游戏编程,可能导致原本就复杂的游戏编程变得更加复杂。而用C++这个强大语言的话,游戏编程的复杂性就能得到一定的简化。

其实,用C++语言写游戏的最根本原因,是C++代码编译而成的可执行程序的执行速度非常快。因为C++语言比较早,当时计算机性能不行,如果编译器不优化的话,编程语言是没法用的。而现在的很多编程语言,就是以牺牲执行速度为代价来提供更加复杂的编程功能。比方说很出名的Python,牺牲了大量的执行效率,目的是让新手能快速掌握编程。要不是当今社会计算机性能优异,Python语言是没有生存空间的。

总而言之,3D游戏编程非常复杂,需要C++这样强大的语言才能驾驭住。顺带提一句,很多强大的3D游戏引擎使用的是C#语言。为什么呢?因为C#语言的语法结构非常好,可控性非常高,所以,那些强大的游戏引擎才会选择C#为脚本语言。看清楚,是脚本语言,就是利用C#语言来调用游戏引擎中的强大功能。而这些游戏引擎的核心,都是用C++或者是C语言写的,某些瓶颈代码甚至会用汇编语言来完成。(这一段没看懂没关系)

“习”的内容:

1.充分理解上面所讲的内容。

2.推荐使用微软公司的VisualC++编译器来写程序,毕竟我们是在Windows下写程序,用他们的C++编译器要好一些。你可以去网上下载最新版本的VisualStudio,因为最新的版本已经是免费的了。如果要用前面的版本,建议用(包括)往上的版本。在进行下节课前,请一定要把这个软件安装好。

1
查看完整版本: 教孩子写游戏计算机语言那么多,为何3D游