大兵,10分钟学会用python写游戏!Python其实很简单!,我的世界手机版

频道:天下足球 日期: 浏览:153

Python现在十分火,语法简略并且功用强大,许多同学都想学Python!所以小的给各位看官们预备了高价值Python学习视频教程,都放在了文章完毕,欢迎前来收取!

转自:头条 作者:菜鸟带你学编程 参阅书本:《Python编程从入门到实践》



装置pygame

自己电脑是windows 10、python3.6,pygame下载地址:https://pypi.python.org/pypi/Pygame/1.9.3

请自行下载对应python版别的pygame

运转以下指令



创立Pygame窗口及呼应用户输入

新建一个文件夹alien_invasion,并在文件夹中新建alien_invasion.py文件,输入如下代码。



运转上述代码,咱们能够得到一个灰色界面的窗口:



创立设置类

为了在写游戏的过程中能快捷地创立一些新功用,下面额定编写一个settings模块,其间包括一个Settings类,用于将一切设置存储在一个当地。

这样在今后项目增大时修正游戏的外观就愈加简略。

咱们首要将alien_invasion.py中的显示屏巨细及显示屏色彩进行修正。

首要在alien_invasion文件夹下新建python文件settings.py,并向其间添加如下代码:



然后再alien_invasion.py中导入Settings类,并运用相关设置,修正如下:



添加飞船图画

接下来,咱们需求将飞船参加游戏中。为了在屏幕上制作玩家的飞船,咱们将加载一幅图画,再运用Pygame()办法blit()制作它。

在游戏中简直能够运用各种类型的图画文件,可是运用位图(.bmp)文件最为简略,这是因为Pygame默许加载位图。

尽管其他类型的图画也能加载,可是需求装置额定的库。

咱们引荐去免费的图片素材网站上去找图画:https://pixabay.com/

咱们在主项目文件夹(alien_invasion)中新建一个文件夹叫images,将如下bmp图片放入其间。



接下来,咱们创立飞船类ship.py:



重构:模块game_functions

在大型项目中,常常需求在添加新代码前重构既有代码。重构的意图是为了简化代码的结构,使其愈加简略扩展。

咱们将完结一个game_functions模块,它将存储很多让游戏Alien invasion运转的函数。经过创立模块game_functions,可防止alien_invasion.py太长,使其逻辑更简略了解。

函数check_events()

首要咱们将办理事情的代码移到一个名为check_events()的函数中,意图是为了阻隔事情循环



然后咱们修正alien_invasion.py代码,导入game_functions模块,并将事情循环替换成对函数check_events()的调用:



函数update_screen()

将更新屏幕的代码移到一个名为update_screen()函数中,并将这个函数放在模块game_functions中:



其间alien_invasion修正如下:



从上面一套流程走下来,咱们发现:在实践的开发过程中,咱们一开端将代码编写得尽可能的简略,并在项目越来越杂乱时进行重构。接下来咱们开端处理游戏的动态方面。

驾驭飞船

这儿咱们要完结的便是使玩家经过左右箭头键来操控飞船的左移与右移。

呼应按键

因为在pygame中,每次按键都被注册为KEYDOWN事情,在check_events()中,咱们经过event.type检测到KEYDOWN事情后还需进一步判别是哪个按键。代码如下:



答应不断移动

玩家按住右箭头不动时,咱们期望飞船能不断地移动,知道玩家松开中止。这儿咱们经过KETUO事情来判别。因而咱们设置一个标志位moving_right来完结继续移动。原理如下:

飞船不动时,标志moving_right将为false。玩家按下右箭头时,咱们将这个标志设置为True;玩家松开时,咱们将标志从头设置成False。

这个移动特点是飞船特点的一种,咱们用ship类来操控,因而咱们给这个类添加一个特点称号叫,moving_right以及一个update()办法来检测标志moving_right的状况。

ship



game_functions



最终在alien_invasion中调用update()办法



左右移动

前面咱们完结了向右移动,接下来完结向左移动,逻辑相似,代码就不贴了。

调整飞船的速度

当时,每次履行while循环时,飞船最多移动一个像素,咱们能够在Settings中添加ship_speed_factor,用于操控飞船的速度。咱们将依据这个特点决议飞船每次循环时最多移动多少间隔。

Settings:



Ship:



约束飞船的活动范围

假如玩家按住箭头的时刻过长,飞船就会消失,那么怎么使飞船抵达屏幕边际时中止移动?这儿咱们只需求修正Ship类中的update办法,添加一个逻辑判别。

重构

这儿咱们主要讲check_events()函数进行重构,将其间部分代码分红两部分,一部分处理KEYDOWN事情,一部分处理KEYUP事情。

game_functions:



射击

接下来添加射击功用,使玩家按空格键时发射子弹,子弹将在屏幕中向上穿行,抵达屏暗地消失。

添加子弹设置

在Settings类中添加一些子弹的特点,这儿咱们创立一个宽3像素,高15像素的深灰色子弹。子弹的速度比飞船稍低。

创立Bullet类



将子弹存储到group中

前面界说了Bullet类和必要的设置后,就能够编写代码了,在玩家每次按空格键时都会发射一发子弹。

首要,咱们在alien_invasion中创立一个group,用于存储一切的有用子弹。



开战

这儿咱们修正check_keydown_events()函数,来监听玩家按下空格键的事情。这儿还需求修正update_screen()函数,保证屏幕每次更新时,都能重绘每一个子弹。

咱们来看下作用:



删去消失的子弹

在alien_invasion中删去消失的子弹。



约束子弹数量

为了鼓舞玩家有方针的射击,咱们规则屏幕上只能一起存在3颗子弹,咱们只需求在每次创立子弹前查看未消失的子弹数目是否小于3即可。

创立update_bullets()函数

为了使alien_invasion中代码愈加简略,咱们将查看子弹办理的代码,移到game_functions模块中:



创立fire_bullet()函数

这儿咱们将发射子弹的代码移到一个独立的函数中:



添加外星人,并检测磕碰

在咱们完结新的使命之前,咱们先给游戏添加一个完毕游戏的快捷键Q:

创立第一个外星人

这儿和创立飞船的办法相同



创立一群外星人

这儿咱们首要确认一行能包容多少个外星人以及要制作几行。这儿改动代码较多,直接看作用:



移动外星人

前面咱们创立的是静态的外星人,现在咱们需求让外星人动起来。这儿咱们在Settings类中设置外星人移动的速度,然后经过Alien类中的update的办法来完结移动

射杀外星人

要想射杀外星人,就必须先检测两个编组成员之间是否发作磕碰,在游戏中,磕碰便是游戏元素堆叠在一起。

这儿咱们运用sprite.groupcollide()来检测两个编组的成员之间的磕碰。

子弹击中外星人时,需求立马知道,并一起使被磕碰的外星人当即消失,因而咱们需求在更新子弹的方位后当即检测磕碰。

完毕游戏

这儿咱们还需求知道何时该完毕游戏,有以下几种状况:

飞船悉数被炸毁

外星人抵达屏幕底部

实践作用:



计分

最终咱们将给游戏添加一个Play按钮,用于依据需求发动游戏以及在游戏完毕后重启游戏。

咱们还将完结一个计分体系,能够在玩家等级进步时加速节奏。

添加Play按钮

这儿能够先将游戏初始化为非活动状况,当咱们点击了按钮,就开端游戏。

因为Pygame中没有内置的创立按钮的办法。因而咱们能够经过创立一个Button类来创立一个自带标签的实心矩形。

咱们经过检测鼠标发作点击后的坐标是否与咱们制作的按钮发作磕碰与否来判别是否发作了点击事情。

进步等级

为了使玩家将敌人消除洁净后能够进步游戏难度,添加趣味性,这儿咱们能够在Settings类中进行修正,添加静态初始值,和动态初始值。

记分、等级、剩下飞船



打包成exe可履行文件

上面游戏开发完了,那么你需求将其转成文exe的可履行文件。咱们选用pyinstaller,装置过程参阅:

https://github.com/pyinstaller/pyinstaller/

文末福利

重视+私信我“py书本”即可获取!

热门
最新
推荐
标签