零基础游戏编程游戏在计算机上是如何运行的

由于面向的是零基础的朋友们,直接讲解代码就不合适了,一些基础的内容还是要明白的。为了尽可能的通俗化,我把很多不必要的内容剔除掉了,只捡重要的说。想要真正懂得游戏编程,脑海里必须有一个完整的概念,游戏是如何在计算机上运行的?一、如何理解计算机?有一句话非常关键:电脑就是一个笨蛋。现在0基础就开始重视这句话,对以后编程思路的理解是有很大好处的。电脑已经成为工作生活的一部分了,你会觉得,电脑的功能非常强大,很多我们做不了的事情电脑都能做,为什么说电脑是个笨蛋呢?不要看电脑功能很多,又能玩游戏又能看电影的,这一切的基础,都是人编写的程序在工作,不是电脑厉害,而是人编写的程序厉害。我们想要学会游戏编程,电脑的结构可以不用了解,但必须了解电脑的工作原理。不要看电脑结构很复杂,它的作用其实很简单:计算二进制加法。什么是二进制?日常生活中用的是十进制,就是用0~9来表示所有的数字。我们可以看一看十进制的特点,由于最大是10,所以,每一位(就是个位、十位、百位等等)上的数字最大是9。比如,十进制,个位是4,十位是3,百位是2,千位是1,所以,十进制就是1个+2个+3个10+4个1,结果就是。那么二进制呢?和十进制类似,每一位(就是个位、二位、四位、八位等等)上的数字最大是1。比如二进制,个位是0,2位是1,4位是0,8位是1,所以,二进制就是1个8+0个4+1个2+0个1,结果就是十进制的10。懂得了二进制之后,八进制、十六进制就可以理解了。特别说一下十六进制,它的每一位上最大的数字是15,但是10以上不好表示,于是就用A、B、C、D、E、F分别来表示10、11、12、13、14、15。比如FEDC,就是F个+E个+D个16+C个1,结果就是+++12=。再回到对计算机的理解,它为什么是笨蛋呢?因为计算机只会计算二进制的加法,除了这个功能以外,它不能做其他任何事情。你可能会问了,只可以计算加法,那为什么计算机有如此多的功能呢?原因很简单:计算机的计算速度很快。比方说现在随便购买一台性能普通的电脑,就是4核心3.0GHz。GHz的意思是每秒钟的计算10亿次,3.0GHz就是30亿次,4核心的话,每秒就能计算亿次。就是说,我们普普通通的一台计算机,每秒钟就能计算亿次的二进制加法。加法是基础,通过一定的方法,然后减法啊、除法啊、乘法啊都能计算出来。不仅仅如此,复杂的开根号啊、三角函数啊等等,都是可以逐步分解成加法的。你可能又问了,有了这些数学计算功能有什么用呢?你看,我们之所以能使用电脑,就是因为它有个显示屏,能把我们希望的东西显示出来,而显示这些东西的背后,就是这些复杂的数学计算而已。稍微总结一下:计算机是个笨蛋,只会计算二进制的加法,但是,计算机的计算速度很快,每秒都是几十到上百亿的次数;而电脑屏幕的显示,归根结底也是数学计算。由于计算机计算速度快,它能非常实时地把我们想要的内容显示在屏幕上。由于计算机是笨蛋,我们必须告诉它要显示什么,它才能显示什么,而告诉计算机显示什么的过程,就是编程的过程。二、编程语言是如何发展的?说白了,我们写的程序就是一系列的指令,这些指令告诉计算机,你下一步要计算哪些东西。你可能还是不明白,电脑显示在屏幕上的,是一些文字和图像,而计算机只会计算加法,难道程序员要把图像和文字变成数学计算吗?我相信,你们都有这样的疑问。在计算机刚刚问世的时候(上世纪50年代的样子),程序员就是要把图像啊、文字啊变成数学计算,然后告诉计算机如何做。从这个角度看,程序员就是普通人和电脑之间的翻译,相当于把普通人的语言翻译成计算机能听懂的语言,所以,编程语言的概念从那个时候就已经有了。而这个时候,程序员必须懂得计算机能听懂的语言才能写程序,由于计算机只懂得二进制,所以,那个时候的编程语言全部是二进制,放眼望去,全是一堆1和一堆0,不是专业的人,完全是看天书,即使是专业的人,有时候也会犯迷糊。而这个一堆1加一堆0的编程语言,计算机是可以直接读懂的,也就是所谓的机器语言。机器语言太难读懂了,一堆1加一堆0,稍微错了一个地方,找起来都很麻烦。于是,程序员们就把特定的东西用字母和符号来表示,一下子就加快了编程速度。比方说,用ADD来表示加法,用MOV表示数据的移动。这些用符号来编程的语言,叫做汇编语言。汇编语言方便了程序员,但是计算机看不懂汇编语言啊!所以,程序员们一起,用机器语言做出了一个翻译程序,目的就是把汇编语言翻译成机器语言。由于汇编语言和机器语言是一一对应的关系,所以,这两个语言写出的程序速度是一样快的。程序员一直都想偷懒,毕竟汇编语言功能简单,想要实现一些复杂的东西,需要很多很多代码。程序员发现,很多功能都是可以重复利用的,而且汇编语言有点繁琐,为什么不搞一个和自然语言差不多的编程语言呢?于是乎,现在我们使用的高级语言就出现了。高级语言比如说C语言(大学的必修课),就非常接近自然语言。高级语言大大降低了程序员的入行门槛,不过计算机依旧看不懂啊。所以,程序员们用汇编语言写了翻译程序,先把高级语言的内容翻译成汇编语言,然后再翻译成机器语言,这样计算机就能看懂了。由于高级语言的很多功能太复杂,翻译程序为了尽可能完成工作,会添加很多冗余的代码,这就导致,高级语言翻译成的机器语言,运行速度就会慢许多。不过,计算机的计算速度快,慢这么一些也无关紧要。三、游戏是如何运行的?看懂了上面的,游戏程序就能说明白了。往简单了说,游戏程序就是把图像、音乐、视频等等按照一定的逻辑组合起来,然后显示在屏幕上,玩家通过键盘或者鼠标,甚至是外接输入设备(比如赛车方向盘和踏板)把自己的操作传递给游戏程序,游戏程序接收到玩家输入后,就会做出响应,把响应结果重新显示在屏幕上。比方说我们这一次的俄罗斯方块,说白了就是几张图片和几个声音文件而已。我们的编程目的,是把图片和声音有规律地组合在一起,然后按照俄罗斯方块的样子显示在屏幕上,在接收到玩家的操作控制后,再做出相应的调整。这样的过程,就是游戏程序运行的过程。我应该说清楚了吧?四、电脑游戏是基于Windows系统运行的计算机的系统非常多,不过最普及的就是Windows了,所以,我们的游戏编程就是在Windows基础上运行的。其实,各种操作系统上的编程语言都差不多,只要学会了一个,想学其他的也容易。虽然Windows系统并不是最适合游戏运行的系统,不过这个系统的用户多,程序员们只能绞尽脑汁优化自己的游戏程序。像我们马上要写的俄罗斯方块完全就是小游戏,不存在优化的问题。这一节的重点,是理解游戏是怎么在计算机上运行的,说白了,就是让你理解,计算机仅仅是靠着二进制的加法运算,就实现了复杂的屏幕显示问题,就实现了复杂的游戏逻辑问题。


转载请注明:http://www.fanypuan.com/yjbtzy/11053.html