1. 首页
  2. Python

别说你不会python了,教你十分钟学会用python做游戏

“u003Cdivu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fdfic-imagehandleru002Ffd284eb7-f6b2-42ca-8fff-ed41eff12b59″ img_width=”663″ img_height=”157″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E安装pygameu003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E本人电脑是windows 10、python3.6,pygame下载地址:u003Cu002Fpu003Eu003Cpu003Ehttps:u002Fu002Fpypi.python.orgu002Fpypiu002FPygameu002F1.9.3u003Cu002Fpu003Eu003Cpu003E请自行下载对应python版本的u003Cu002Fpu003Eu003Cpu003Epygameu003Cu002Fpu003Eu003Cpu003E运行以下命令u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F09d71042977a44ffabee2a5766ff8559″ img_width=”675″ img_height=”51″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E创建Pygame窗口及响应用户输入u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E新建一个文件夹alien_invasion,并在文件夹中新建alien_invasion.py文件,输入如下代码。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F31afbe954f0546fcacb82ccb085a7526″ img_width=”670″ img_height=”392″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E运行上述代码,我们可以得到一个灰色界面的窗口:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F7ebbc2a5e2d7416a9f4e9914934d4476″ img_width=”675″ img_height=”199″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E创建设置类u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E为了在写游戏的过程中能便捷地创建一些新功能,下面额外编写一个settings模块,其中包含一个Settings类,用于将所有设置存储在一个地方。u003Cu002Fpu003Eu003Cpu003E这样在以后项目增大时修改游戏的外观就更加容易。u003Cu002Fpu003Eu003Cpu003E我们首先将alien_invasion.py中的显示屏大小及显示屏颜色进行修改。u003Cu002Fpu003Eu003Cpu003E首先在alien_invasion文件夹下新建python文件settings.py,并向其中添加如下代码:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F112bd849a61047158da543eb382b7933″ img_width=”672″ img_height=”175″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E然后再alien_invasion.py中导入Settings类,并使用相关设置,修改如下:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fc7948567e33a4f8681102207bb0d08f9″ img_width=”672″ img_height=”426″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E添加飞船图像u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E接下来,我们需要将飞船加入游戏中。为了在屏幕上绘制玩家的飞船,我们将加载一幅图像,再使用Pygame()方法blit()绘制它。u003Cu002Fpu003Eu003Cpu003E在游戏中几乎可以使用各种类型的图像文件,但是使用位图(.bmp)文件最为简单,这是因为Pygame默认加载位图。u003Cu002Fpu003Eu003Cpu003E虽然其他类型的图像也能加载,但是需要安装额外的库。u003Cu002Fpu003Eu003Cpu003E我们推荐去免费的图片素材网站上去找图像:u003Cu002Fpu003Eu003Cpu003Ehttps:u002Fu002Fpixabay.comu002Fu003Cu002Fpu003Eu003Cpu003E我们在主项目文件夹(alien_invasion)中新建一个文件夹叫images,将如下bmp图片放入其中。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F7b1dedbeb32441649e0ee2f7733a236c” img_width=”672″ img_height=”523″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E接下来,我们创建飞船类ship.py:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002F08107f6f47694258a0da3a656e530e24″ img_width=”674″ img_height=”355″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E重构:模块game_functionsu003Cu002Fpu003Eu003Cpu003E在大型项目中,经常需要在添加新代码前重构既有代码。重构的目的是为了简化代码的结构,使其更加容易扩展。u003Cu002Fpu003Eu003Cpu003E我们将实现一个game_functions模块,它将存储大量让游戏Alien invasion运行的函数。通过创建模块game_functions,可避免alien_invasion.py太长,使其逻辑更容易理解。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E函数check_events()u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E首先我们将管理事件的代码移到一个名为check_events()的函数中,目的是为了隔离事件循环u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F11ef518b9e8b4d0a94ce02e5d7cc8cd0″ img_width=”674″ img_height=”158″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E然后我们修改alien_invasion.py代码,导入game_functions模块,并将事件循环替换成对函数check_events()的调用:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F3705cb37f56744d2852e9f50ffcc6402″ img_width=”675″ img_height=”463″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E函数update_screen()u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E将更新屏幕的代码移到一个名为update_screen()函数中,并将这个函数放在模块game_functions中:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F8f72572ca6f8400c84426ba3e2d03100″ img_width=”673″ img_height=”121″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E其中alien_invasion修改如下:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F0286e071667b448d9fe82bca6dde1919″ img_width=”674″ img_height=”391″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E从上面一套流程走下来,我们发现:在实际的开发过程中,我们一开始将代码编写得尽可能的简单,并在项目越来越复杂时进行重构。接下来我们开始处理游戏的动态方面。u003Cu002Fpu003Eu003Cpu003E驾驶飞船u003Cu002Fpu003Eu003Cpu003E这里我们要实现的就是使玩家通过左右箭头键来控制飞船的左移与右移。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E响应按键u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E因为在pygame中,每次按键都被注册为KEYDOWN事件,在check_events()中,我们通过event.type检测到KEYDOWN事件后还需进一步判断是哪个按键。代码如下:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F2e4e102ffc7a4c9fa21a4953657f4c06″ img_width=”673″ img_height=”176″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E允许不断移动u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E玩家按住右箭头不动时,我们希望飞船能不断地移动,知道玩家松开为止。这里我们通过KETUO事件来判断。因此我们设置一个标志位moving_right来实现持续移动。原理如下:u003Cu002Fpu003Eu003Cpu003E飞船不动时,标志moving_right将为false。玩家按下右箭头时,我们将这个标志设置为True;玩家松开时,我们将标志重新设置成False。u003Cu002Fpu003Eu003Cpu003E这个移动属性是飞船属性的一种,我们用ship类来控制,因此我们给这个类增加一个属性名称叫,moving_right以及一个update()方法来检测标志moving_right的状态。u003Cu002Fpu003Eu003Cpu003Eshipu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F0a182c1da6374d7e8c9be9c4a750abf5″ img_width=”672″ img_height=”89″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Egame_functionsu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F35dfce457ca74b77b9ba5e42f1baef45″ img_width=”673″ img_height=”140″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E最后在alien_invasion中调用update()方法u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002Ff27dc7307d0142a183c8da780d224eee” img_width=”673″ img_height=”87″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E左右移动u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E前面我们实现了向右移动,接下来实现向左移动,逻辑类似,代码就不贴了。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E调整飞船的速度u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E当前,每次执行while循环时,飞船最多移动一个像素,我们可以在Settings中添加ship_speed_factor,用于控制飞船的速度。我们将根据这个属性决定飞船每次循环时最多移动多少距离。u003Cu002Fpu003Eu003Cpu003ESettings:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F80c2cda648da46a8be12ae5b55761308″ img_width=”673″ img_height=”195″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003EShip:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F12d46cef1ec54fcd8ed8266d9cca5d31″ img_width=”675″ img_height=”121″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E限制飞船的活动范围u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E如果玩家按住箭头的时间过长,飞船就会消失,那么如何使飞船抵达屏幕边缘时停止移动?这里我们只需要修改Ship类中的update方法,增加一个逻辑判断。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E重构u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E这里我们主要讲check_events()函数进行重构,将其中部分代码分成两部分,一部分处理KEYDOWN事件,一部分处理KEYUP事件。u003Cu002Fpu003Eu003Cpu003Egame_functions:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F0cd47c98adb84cac8010c755c11c363e” img_width=”673″ img_height=”411″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E射击u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E接下来添加射击功能,使玩家按空格键时发射子弹,子弹将在屏幕中向上穿行,抵达屏幕后消失。u003Cu002Fpu003Eu003Cpu003E添加子弹设置u003Cu002Fpu003Eu003Cpu003E在Settings类中增加一些子弹的属性,这里我们创建一个宽3像素,高15像素的深灰色子弹。子弹的速度比飞船稍低。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E创建Bullet类u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F36db42cc9821412ab408afc37329068b” img_width=”671″ img_height=”607″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E将子弹存储到group中u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E前面定义了Bullet类和必要的设置后,就可以编写代码了,在玩家每次按空格键时都会发射一发子弹。u003Cu002Fpu003Eu003Cpu003E首先,我们在alien_invasion中创建一个group,用于存储所有的有效子弹。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F9b53987162624ab18377645b76a2b146″ img_width=”673″ img_height=”336″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E开火u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E这里我们修改check_keydown_events()函数,来监听玩家按下空格键的事件。这里还需要修改update_screen()函数,确保屏幕每次更新时,都能重绘每一个子弹。u003Cu002Fpu003Eu003Cpu003E我们来看下效果:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fa116508ce79d49a3b2a0409cfb21c65c” img_width=”678″ img_height=”472″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E删除消失的子弹u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E在alien_invasion中删除消失的子弹。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F9b61a6b79e27441c885d8b6bce5d4ecf” img_width=”675″ img_height=”517″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E限制子弹数量u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E为了鼓励玩家有目标的射击,我们规定屏幕上只能同时存在3颗子弹,我们只需要在每次创建子弹前检查未消失的子弹数目是否小于3即可。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E创建update_bullets()函数u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E为了使alien_invasion中代码更加简单,我们将检查子弹管理的代码,移到game_functions模块中:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F874a6663b6e84d9c8b880ac9faeec399″ img_width=”673″ img_height=”104″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E创建fire_bullet()函数u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E这里我们将发射子弹的代码移到一个独立的函数中:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F83b6f2121abb41a1829302d4a9b0feca” img_width=”671″ img_height=”86″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003E添加外星人,并检测碰撞u003Cu002Fpu003Eu003Cpu003E在我们完成新的任务之前,我们先给游戏添加一个结束游戏的快捷键Q:u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E创建第一个外星人u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E这里和创建飞船的方法一样u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fbf71c65798cf43098d9aae072721d592″ img_width=”674″ img_height=”410″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E创建一群外星人u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E这里我们首先确定一行能容纳多少个外星人以及要绘制几行。这里改动代码较多,直接看效果:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F63127b87b335462c812fb8ccff4bb571″ img_width=”677″ img_height=”469″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E移动外星人u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E前面我们创建的是静态的外星人,现在我们需要让外星人动起来。这里我们在Settings类中设置外星人移动的速度,然后通过Alien类中的update的方法来实现移动u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E射杀外星人u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E要想射杀外星人,就必须先检测两个编组成员之间是否发生碰撞,在游戏中,碰撞就是游戏元素重叠在一起。u003Cu002Fpu003Eu003Cpu003E这里我们使用sprite.groupcollide()来检测两个编组的成员之间的碰撞。u003Cu002Fpu003Eu003Cpu003E子弹击中外星人时,需要立马知道,并同时使被碰撞的外星人立即消失,因此我们需要在更新子弹的位置后立即检测碰撞。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E结束游戏u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E这里我们还需要知道何时该结束游戏,有以下几种情况:u003Cu002Fpu003Eu003Cpu003E飞船全部被摧毁u003Cu002Fpu003Eu003Cpu003E外星人到达屏幕底部u003Cu002Fpu003Eu003Cpu003E实际效果:u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Feb461d89fbb14129b3a4b767b73ef633″ img_width=”679″ img_height=”467″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cstrongu003E计分u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E最后我们将给游戏添加一个Play按钮,用于根据需要启动游戏以及在游戏结束后重启游戏。u003Cu002Fpu003Eu003Cpu003E我们还将实现一个计分系统,能够在玩家等级提高时加快节奏。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E添加Play按钮u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E这里可以先将游戏初始化为非活动状态,当我们点击了按钮,就开始游戏。u003Cu002Fpu003Eu003Cpu003E由于Pygame中没有内置的创建按钮的方法。因此我们可以通过创建一个Button类来创建一个自带标签的实心矩形。u003Cu002Fpu003Eu003Cpu003E我们通过检测鼠标发生点击后的坐标是否与我们绘制的按钮发生碰撞与否来判断是否发生了点击事件。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E提高等级u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E为了使玩家将敌人消灭干净后能够提高游戏难度,增加趣味性,这里我们可以在Settings类中进行修改,增加静态初始值,和动态初始值。u003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E记分、等级、剩余飞船u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Faf289beeb0dd4ac4b8b73d1541b80146″ img_width=”672″ img_height=”474″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cpu003Eu003Cstrongu003E打包成exe可执行文件u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E上面游戏开发完了,那么你需要将其转成文exe的可执行文件。我们采用pyinstaller,安装步骤参考:u003Cu002Fpu003Eu003Cpu003Ehttps:u002Fu002Fgithub.comu002Fpyinstalleru002Fpyinstalleru002Fu003Cu002Fpu003Eu003Cpu003Eu003Cstrongu003E最后:如果你正在学习Python的路上,或者准备打算学习Python、那么小编这套学习教程免费赠送给你喔!绝对零套路 零收费!u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cpu003E你正好需要、我正好有、就是这么完美的事情u003Cu002Fpu003Eu003Ch1u003Eu003Cstrongu003E你只需转发本文,然后私信小编“资料”即可马上领取400python学习教程!!u003Cu002Fstrongu003Eu003Cu002Fh1u003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F6cbf3e8e1b234491b04bdbc53e07158d” img_width=”481″ img_height=”761″ alt=”别说你不会python了,教你十分钟学会用python做游戏” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cu002Fdivu003E”

原文始发于:别说你不会python了,教你十分钟学会用python做游戏

主题测试文章,只做测试使用。发布者:醒百年,转转请注明出处:http://www.cxybcw.com/13610.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code