那么,我们从哪里开始呢? 当然,因为这是一本写好的书,所以在你阅读时,我早已决定好从哪开始,并将其写了下来。 就让我告诉你吧。在使用编程语言进行编程之前,你首先需要准备必要的软件。 接下来应该做的,是使用专门的编程语言画下方块。这将成为你的第一次编程体验。 但这完全是由我来决定的。只因在我看来,这应该是最理想的顺序了。 因此,在本章中,我们会从“想要做出那个游戏应该怎么办?”这一问题出发,决定具体应该从何处着手。由此你就能够理解为什么要先学习画方块,同时也将了解到学习编程的具体方法。 1.1 想要做出“那个游戏”应该怎么办 就从最初的问题开始吧。想要做出“那个游戏”应该怎么办? 答案似乎显而易见——学习编程即可。这也是本书的目的所在。然而,话虽没错,却也没有任何实际意义。 就拿做咖喱饭的例子来说,“想做咖喱饭只要学习烹饪就好了”这句话没有任何意义。因为现在我们做咖喱饭就是为了学习烹饪。 那么什么是有意义的回答呢? 用咖喱饭的例子来讲,知道“做咖喱饭时应该先干什么”就很有意义。我们至少应该接近这一答案。也就是说,有意义的答案能告诉你“先做这件事”。开始做咖喱饭时,首先应该在炒洋葱前将其切丁。因此,应该是“首先将洋葱切丁”这一步骤。 现在来考虑我们的游戏。在编写那个游戏前,我们应该先做什么呢?回答这个问题之前,我们需要思考这个游戏需要什么。因为我们要通过编程来做出“那个游戏”①,所以我们需要考虑“做那个游戏时需要什么编程技术”。 1.1.1 做那个游戏时需要什么编程技术 然而你还不知道什么是“编程技术”,就连“什么是程序”都知之甚少,甚至于对“那个游戏”也不甚了解。 就仿佛不知道何谓“烹饪技术”,甚至连“什么是烹饪”也不知道,说不定咖喱饭都没吃过几次。而且如果没见过菜刀和锅的话,就算吃过咖喱饭也难以想象它是怎么做成的。你还不知道程序中的“菜刀”和“锅”是什么样的。 因此,你需要知道“程序究竟为何物”。然而在此之前,先尝一尝咖喱饭吧。即便以前吃过,现在的感觉可能也不一样。 ① 不编程也是可以做出游戏的。比如让一个程序员帮忙就行。如果编写游戏是你的目的,而编程只是你的手段的话,那么你需要重新思考一下是否有必要读下去。 1.1.2 那个游戏到底是什么 首先我们玩一玩那个游戏。如果没吃过咖喱饭,是无法做出它的A。 如果玩过原版游戏的话也许不需要重玩。但遗憾的是,我提供的范例程序与原版并不一致,较之原版进行了不少简化。所以如果你能再玩一玩,会更有助于理解,能够明确知道自己到底会做出什么样的游戏。 此外,想要运行我的范例程序,首先需要做好准备工作,让我们赶快将它搞定。 运行范例程序的方法 如前所述,编写程序时需要“编程语言”。“那个游戏”也是用编程语言写成的。 这个语言叫作Sunaba,名字的实际意思就是沙地。在沙地上做不出任何具有实用价值的东西,摔倒了也不会受伤。因为只有沙子,所以没有想象力的话就无法做出任何东西。人在小时候常常会在沙地中玩得流连忘返,但长大之后就会将其忘记。这款编程语言正好符合沙地的概念。 因为种种原因,用Sunaba 写成的程序只能在专用的软件上运行。在这里我们先做好准备工作。 读者可以从网上下载这款软件B。下载下来的是zip 格式的文件,将其提取C 后就会获得里面的内容。可能有读者不明白“zip”和“提取”的意思,所以让我在这里加以详细说明。请确认你使用的是Windows 系统。如果你知道如何进行提取,可跳过下面的内容。 下载与提取 如果使用的是Windows 和默认的IE 浏览器,那么点击下载链接时应该会出现类似于下图的界面。 图 ① 不是说没吃过就绝对做不出来,而是做出来了也无法判断出成品到底是不是咖喱饭。这种情况虽然可悲,却并不少见。 ② 曾考虑过使用光盘,但是书的价格会变贵,而且现在没有光驱的电脑也不少。请读者访问http://www.ituring.com.cn/book/1740,点击“随书下载”下载本软件。 ③ 我们一般称“提取”为“解压缩”。——译者注 点击“保存”按钮。接下来指定保存位置后即可开始下载。如果没有什么特殊原因的话,可以选择直接将其保存于“桌面”,文件名是“Sunaba××××××”这样的形式。因为本文件还存在更新的可能,所以“××××××”的具体内容并不确定。 下载结束后,在文件上单击鼠标右键,在出现的菜单中点击“全部提取” 图 这样一来,你就会看到如下图所示的界面,这时你需要选择将提取出来的文件保存在什么位置。 图 同样,如果没有特殊原因的话,直接点击右下角的“提取”即可。 图 但是,如果能够删去“Sunaba××××××”这部分后再进行“提取”的话(如上图所示),以后操作时会轻松一些。提取完毕后,桌面上会出现一个名为“Sunaba××××××”的文件夹,里面包含了所有我们需要的文件①。 打开文件夹,运行软件 文件夹的内容应该是这样的。 图 其中包含有一个名为“Sunaba”的文件②,对其双击后会出现Sunaba的窗口。 图 ① 不再需要Sunaba 时,只需将其拖至回收站即可。也就是说,没有繁琐的卸载步骤。 ② 根据设置的不同,有可能后面带有“.exe”,即Sunaba.exe。但是能将Windows设置为显示exe 扩展名的读者已经不算是新手了,想必应该知道如何继续操作,所以我会以不包含扩展名为前提进行说明。 Windows8 中的特殊情况 在Windows8 中,可能会出现下图中的特殊情况以致无法运行。 图 此时点击“更多信息”,然后再点击“仍要运行”即可。 此外,还有可能出现下图中的画面。 图 此时选择“下载并安装此功能”即可。下载和安装需要花费一些时间,安装完毕后应该就可以运行了①。 运行范例程序Sunaba 文件夹中包含一个名为“示例”的文件夹,打开后可以看到一个名为“范例”② 的文件,用鼠标将它拖放至Sunaba 的窗口中后游戏 ① 安装结束后,可能还需要重新启动计算机后方可正常运行。——译者注 ② 名字后面的“.txt”被隐藏了。 便开始了。可以按下键盘的左右方向键操纵红色的I 型板块①,按下上方向键时它便会旋转。 图 通过操作键盘使方块填满一行时,这一行就会被消除掉,而上面的方块则会掉落下来。如果方块未能被消除以致堆积到最上方的话,就不能继续操作了。 图 此时如果想再玩一遍,只需要将文件再次拖放至Sunaba 的窗口中即可②。 ① 多个小方块可以组成不同形状的板块。比如大家所熟知的《俄罗斯方块》游戏中就有7 种板块,分别以S、Z、L、J、I、O、T 这7 个字母的形状来命名。——译者注 ② 或者按下Sunaba 窗口中的“重启”按钮。 如果是市售的原版,下落速度会逐步加快,而且还包含了更多的内容。因为现在的这个程序只是个示例,所以无法相提并 论①。 这就是你从今天起需要完成的游戏程序,希望你能在玩的同时思考一下这个游戏是怎么做出来的。 再补充一点,如果按下Sunaba 窗口中的“放大/ 缩小”按钮,画面大小会发生改变。想要调整画面大小时可以试一试。 ① 如果将“范例豪华版”拖放进来的话,可以看到一个制作更加精良的版本。在你完全理解了本书的内容之后,便可以做出“范例豪华版”一般的游戏。 1.1.3 程序是什么 如此一来,就可以运行我的范例程序了。比作咖喱饭的话,这就是试吃阶段,通过试吃可以知道咖喱饭中添加了萝卜和肉,也熟悉了咖喱饭的味道。但是现在得到的信息还不足以回答“如何制作它”的问题,我们需要去厨房一窥究竟。 然而,会编写程序的人终究没有会做饭的人那么多。即便是你运气好,身边正好有这样的人,你也无法只通过观察他们的工作就轻易领悟。由于工具只有电脑,不仔细观察就会觉得和在网上看搞笑段子没有多大区别。 程序是存在于计算机中的无形之物,而且与文章、绘画、音乐不同,你对它非常陌生,就连“编写程序”中的“编写”二字都很难理解,所以不能像烹饪与运动那样从模仿别人开始。 那么,到底怎样才能了解程序是什么呢? “范例”文件是什么样的 刚刚在运行“那个游戏”时,我们将范例文件拖曳进了程序中。那么这个文件到底是什么呢?现在我们就来一探究竟。 范例文件是由我编写的。就像音乐、绘画和文章一样,程序也是文件的形式。所以,编写游戏程序就是编写游戏程序的文件。我们看看文件的内容,也许可以得到一些信息。 要查看文件的内容,双击是最普通的操作。Word 的话可以看到文章内容,图像的话可以看到画面。那么Sunaba 的文件内容是什么样的呢? 双击文件后,记事本软件就会启动①,出现的内容好似一篇奇妙的文章。将其中的一部分列出来就是下面这样子的。 图 ① 如果你启动的是其他软件,那么想必你也不算是计算机新手了,我就不需要再进行其他解释了。 这个奇妙的文章就是程序②。虽然里面有很多文字词汇,但也含有许多类似于“→”这样的符号,所以不是普通的文章。文件中包含了类似于数学算式的内容,每一行开头也参差不齐,空格数量不尽相同,看上去十分奇妙。 然而这就是程序。编写游戏程序时就要写这些奇妙的文章。写下这种奇妙的文章,然后保存下来,就属于“编写程序”了。 那么,这个奇妙的文章到底是什么呢?是基于什么样的规则写成的?又代表着怎样的内容呢? ② 这样的“文章”也称为“源代码”“代码”等。——译者注 1.1.4 这个奇妙的文章到底是什么 如果这个奇妙的文章是程序的话,那么我们就必须知道它的写作规则。这个规则,就是“编程语言”。 程序是依照编程语言的规则写成的。遵照Sunaba 这个编程语言的规则写成的文章,就是Sunaba 程序。同样,遵照C 语言的规则写成的文章,就是C 语言程序。前面给你看的程序是Sunaba 程序,看上去和其他编程语言截然不同③。因为本书中要使用Sunaba,所以需要你在随后的几十个小时内掌握Sunaba 的规则。 于是下一个问题就是:“想要编写那个游戏的话,应该怎么学习Sunaba 的规则呢? ③ 大部分编程语言中不能使用中文。“→”“×”这种符号也不一样。 1.1.5 你的目标有多高 在这里,我想岔开一下话题,谈一谈程序的量。 你需要写下多长的“奇妙文章”呢?如果知道了这个问题的答案,也就明白了距离目标还有多远,这样也会稍微轻松一些吧。 请将刚才的那个范例文件打开,一直浏览到最下方。 图 也许你会突然感到头晕目眩,但为了让你知道具体的程序量,我鼓足勇气将全部内容呈现了出来。你只要有个大概印象就行了,一共不足180 行。一般400 字的稿纸有20 行,如果忽略每行长度的不同,大概10 页左右。用字数来说,比3000 字略多一些。 也就是说,如果你能写出180 行、3000 字的“奇妙文章”,就可以做出这样的游戏。这就是你的目标。 市售软件有多大 顺便告诉你市售软件的规模大小吧。就我所知道的一款运动游戏,有2000 个文件共200 万行左右。而另一款运动游戏稍小一些,有500个文件共50 万行。 前者最多时有20 名程序员参与,开发花费了数年的时间。而后者共有7 名程序员参与,一共用时约一年半。这世上还有些耗费几千万元的大作,开发时大约需要30 人或者50 人参与。而Windows 这种软件,则有数千万行的规模。 这属于开发商业软件时的规模。虽然是多人协作完成的,但每个人至少也要写数万行①。 像范例程序这样只有180 行的程序,一流程序员只需要两个钟头就可以完成。我不算是一流程序员,所以大概花费了半天的时间。如果两天还写不出来的话,在专业程序员中就属于水平很低的了。 也就是说,通过本书的学习,你也只能掌握专业人员花费数小时就可以写就的成果。换个角度来看,只要你能写出数万程序员写下的代码的几百分之一,你就可以做出范例程序那样的游戏。 听了这番话后,到底是一蹶不振还是迎难而上,就要看你自己的了。 ① 180 行的范例程序真的只是包含了最基本的内容,没有任何特色,既没有启动画面也不会显示分数。加上这些功能的话,程序立刻就会达到数千行。