美文网首页
计算机编程入门之三

计算机编程入门之三

作者: 叮当2018 | 来源:发表于2018-03-30 20:36 被阅读0次

从这篇文章开始,就开始编写这个小游戏了,可能有人会问,作为面向零基础的人的入门文章,刚开始就编写游戏是不是太着急了,是不是先讲一些加减乘除,顺序结构、选择结构、循环结构之类的东西(基础知识),然后再编写游戏比较好。

我是这样计划的,就是在解释游戏代码的过程中,遇到什么基础知识,就停下来讲什么基础知识,这样这些基础知识就显得不那么枯燥。不管怎么说,我觉得零基础的人应该是能看懂接下来的内容的,不妨试试。

顺便说一句,这个游戏的代码,是我从Python Crash Course这本书里看来的。

好,正式开始写游戏的程序了,我们在C:\Users\Administrator\下面新建一个文件夹,取名叫做“chengxudaima”(程序代码-_-b),然后使用Sublime新建一个文件,保存在这个文件夹中,文件名叫做youxi.py。在这个程序文件中,敲进以下这些代码:

一共有15行,代码其实一共就9行。

图片不好的地方是没办法复制粘贴代码,访问这里(这个网站叫做Github)有一个可以复制粘贴的版本。

顺便说两句Github,Github其实就相当于百度网盘,嗯,好吧,高级百度网盘。Github还有一个和它关系最密切的软件,叫做git,我计划在之后写一些介绍git的文章。

哦,对了,为了让程序可以顺利运行,还需要在 chengxudaima 这个文件夹下面放一个名字叫做“jiantou.bmp”的图片,图片的内容就是一个箭头-_-b,是拿来做飞船用的:

可以自己用Windows自带的画图软件画一个就OK了,注意不能画太大,拖动画布大小,设定成120乘100左右比较好。注意下图的红色方框,显示的就是画布的大小,也就是保存出来的图片的大小:

如果直接运行现在这个程序的话(py youxi.py),屏幕上会出现这样一个窗口一闪而过:

也就是说这个窗口闪现一下,然后自己又立刻关闭了。后面会讲怎么不让这个窗口关掉(还会讲怎么控制这个“飞船”移动,怎么让飞船发射子弹,等等)。

接下来我们就来从头解释一下前面的9行程序都是什么意思。

第一行

import pygame

就是说要引入pygame这个东西(import是导入的意思),类似于“计算机编程入门之一”里面最后那一段说的那样,你想要使用变量a,就要先敲一下 a = 1,如果没有这么做,比如直接敲字母c,那么python会告诉你c还没有定义呢,如下图:

就像上图中的一样,直接输入c然后回车,会提示“name 'c' is not defined”,意思就是c还没有定义过。

同样的,如果上来直接就使用pygame这个名称的话,程序也会报错,说pygame这个名字还没有定义呢。需要先有这个第一行,把pygame这个名称引入进来,然后后面才能正常使用这个名称。你可以试着删除掉这个第一行“import pygame”,然后运行一下程序(py youxi.py),看一下报的错。

其实也可以我们自己定义一些名称,然后把它import(引入)进来,后面会讲到怎么做这件事。

好,接下来是第二行,

pygame.init()

这里立刻就用到了刚才引入的pygame这个东西,后面加了.init(),注意那个点,我们来仔细解释一下它。

现代的主流编程语言基本都有这个东西,就是一个名称(一个“东西”)是可以“点”的,比如说假设我有一个名称(一个“东西”)叫做liudehua(刘德华-_-b),那么liudehua.height得到的结果就是刘德华的身高,liudehua.birthday得到的就是刘德华的生日,liudehua.company得到的就是刘德华所在的公司。

再比方说刘德华的妻子叫做朱丽倩,那么liudehua.wife就是朱丽倩,liudehua.wife.birthday得到的就是朱丽倩的生日,等等。

再比方说刘德华可以唱歌,我们请刘德华唱一首“忘情水”把,那么就是liudehua.sing("wangqingshui"),这句运行之后,(比方说)屏幕上就可以打印出忘情水的歌词。

“点”后面可以接的东西一共有两种,一种是不带括号的,一种是带括号的,不带括号的叫做变量,带括号的叫做函数,变量返回的是某个值(比如刘德华的身高,体重,生日等等),而函数是去做某一件事,比如唱歌。

带了括号,就可以往括号里面写东西了,比如我不想听忘情水了,我想听另一首叫做“中国人”的歌,好,那就liudehua.sing("zhongguoren"),这样(比方说)屏幕上就打印出中国人的歌词。

后面会讲到怎么来生成属于你自己的可以“点”的东西。

回到刚才的这一行:

pygame.init()

这个.init()就是一个函数,init是初始化的意思,这句的意思就是我要开始运行游戏了,pygame你先准备一下,检查一下你所在的这台电脑。当然好像网上也有人说即使不写这句,后面的代码其实也能正常运行,不过还是强烈建议把这句写上。

下一行:

screen = pygame.display.set_mode((1000, 400))

这行的意思就是造出一个1000乘400的显示窗口出来,未来游戏就会在这个显示窗口里面出现,pygame.display.set_mode就类似于前面的liudehua.wife.birthday。当然set_mode是一个函数,参数是(1000, 400)。

下一行:

feichuan_image = pygame.image.load('jiantou.bmp')

就是把刚才画好的箭头图片'jiantou.bmp'读进来,放到变量feichuan_image(飞船图像)里面(假设这个箭头就是一艘飞船,以后还会发射子弹),

接下来:

feichuan_rect = feichuan_image.get_rect()

rect是长方形的意思,get_rect()就获得了这个“飞船图像”的“长方形”,储存在等号左边的feichuan_rect里面,这个长方形有什么用呢,看下面几行就知道了:

feichuan_rect.centerx = 270

这是把这个“长方形”的centerx(也就是中心点的x值)定为270,前面说了,窗口是1000乘400,所以总的x是1000,270也就是1000的27%,就是在中间偏左一点的位置。就像下面这幅图表示的:

图1

下一句:

print(feichuan_rect)

是在控制台(黑色的框)里打出一些数据,我们先不管它,看下一句:

screen.blit(feichuan_image, feichuan_rect)

blit()这个函数带了2个参数,用逗号分开,feichuan_image在第7行定义了,就是飞船的图片,feichuan_rect在第8行定义了,又在第9行做了一点修改,就是飞船的“长方形”。

所以screen.blit(feichuan_image, feichuan_rect)这句的意思就是把飞船的图片“画到”飞船的长方形所定义的那个位置上去,飞船长方形的x值已经被你定义成270了,所以飞船就被画到了前面图1所在的位置。

最后一句:

pygame.display.flip()

是必须写的,写了这一句,前面所有的你“画”的东西才能被显示出来。

现在不好的地方是运行这个程序的时候窗口就出现了大概1秒钟,然后立刻就关掉了,下一篇文章我们讲怎么让窗口能不关掉。

相关文章

网友评论

      本文标题:计算机编程入门之三

      本文链接:https://www.haomeiwen.com/subject/qzfwcftx.html