手把手教你用Python写一个小游戏(用python做一个小游戏)

网友投稿 5291 2022-08-18

手把手教你用Python写一个小游戏(用python做一个小游戏)

手把手教你用Python写一个小游戏(用python做一个小游戏)

最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏、后台等方面,python也大放异彩,本篇博文将按照正规的项目开发流程,手把手教大家写个python小游戏,来感受下其中的有趣之处。本次开发的游戏叫做alien invasion。

安装pygame并创建能左右移动的飞船

安装pygame

本人电脑是windows 10、python3.6

请自行-对应python版本的pygame 运行以下命令

$ pip install wheel

$ pip install pygame‑1.9.3‑cp36‑cp36m‑win_amd64.whl

创建Pygame窗口及响应用户输入

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

importsys

importpygame

defrun_game():

#initialize game and create a dispaly object

pygame.init()

screen=pygame.display.set_mode((1200,800))

pygame.display.set_caption("Alien Invasion")

# set backgroud color

bg_color=(230,230,230)

# game loop

whileTrue:

# supervise keyboard and mouse item

foreventinpygame.event.get():

ifevent.type==pygame.QUIT:

sys.exit()

# fill color

screen.fill(bg_color)

# visualiaze the window

pygame.display.flip()

run_game()

运行上述代码,我们可以得到一个灰色界面的窗口:

$ python alien_invasion.py

创建设置类

为了在写游戏的过程中能便捷地创建一些新功能,下面额外编写一个settings模块,其中包含一个Settings类,用于将所有设置存储在一个地方。这样在以后项目增大时修改游戏的外观就更加容易。 我们首先将alien_invasion.py中的显示屏大小及显示屏颜色进行修改。 首先在alien_invasion文件夹下新建python文件settings.py,并向其中添加如下代码:

classSettings(object):

"""docstring for Settings"""

def__init__(self):

# initialize setting of game

# screen setting

self.screen_width=1200

self.screen_height=800

self.bg_color=(230,230,230)

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

importsys

importpygame

fromsettingsimportSettings

defrun_game():

#initialize game and create a dispaly object

pygame.init()

ai_settings=Settings()

screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))

pygame.display.set_caption("Alien Invasion")

# set backgroud color

bg_color=(230,230,230)

# game loop

whileTrue:

# supervise keyboard and mouse item

foreventinpygame.event.get():

ifevent.type==pygame.QUIT:

sys.exit()

# fill color

screen.fill(ai_settings.bg_color)

# visualiaze the window

pygame.display.flip()

run_game()

添加飞船图像

接下来,我们需要将飞船加入游戏中。为了在屏幕上绘制玩家的飞船,我们将加载一幅图像,再使用Pygame()方法blit()绘制它。 在游戏中几乎可以使用各种类型的图像文件,但是使用位图(.bmp)文件最为简单,这是因为Pygame默认加载位图。虽然其他类型的图像也能加载,但是需要安装额外的库。我们推荐去免费的图片素材网站上去找图像: 传送门 。我们在主项目文件夹(alien_invasion)中新建一个文件夹叫images,将如下bmp图片放入其中。

接下来,我们创建飞船类ship.py:

importpygame

classShip():

def__init__(self,screen):

#initialize spaceship and its location

self.screen=screen

# load bmp image and get rectangle

self.image=pygame.image.load('image/ship.bmp')

self.rect=self.image.get_rect()

self.screen_rect=screen.get_rect()

#put spaceship on the bottom of window

self.rect.centerx=self.screen_rect.centerx

self.rect.bottom=self.screen_rect.bottom

defblitme(self):

#buld the spaceship at the specific location

self.screen.blit(self.image,self.rect)

最后我们在屏幕上绘制飞船,即在alien_invasion.py文件中调用blitme方法:

importsys

importpygame

fromsettingsimportSettings

fromshipimportSettings

defrun_game():

#initialize game and create a dispaly object

pygame.init()

ai_settings=Settings()

screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))

ship=Ship(screen)

pygame.display.set_caption("Alien Invasion")

# set backgroud color

bg_color=(230,230,230)

# game loop

whileTrue:

# supervise keyboard and mouse item

foreventinpygame.event.get():

ifevent.type==pygame.QUIT:

sys.exit()

# fill color

screen.fill(ai_settings.bg_color)

ship.blitme()

# visualiaze the window

pygame.display.flip()

run_game()

重构:模块game_functions

在大型项目中,经常需要在添加新代码前重构既有代码。重构的目的是为了简化代码的结构,使其更加容易扩展。我们将实现一个game_functions模块,它将存储大量让游戏Alien invasion运行的函数。通过创建模块game_functions,可避免alien_invasion.py太长,使其逻辑更容易理解。

函数check_events()

首先我们将管理事件的代码移到一个名为check_events()的函数中,目的是为了隔离事件循环

importsys

importpygame

defcheck_events():

#respond to keyboard and mouse item

foreventinpygame.event.get():

ifevent.type==pygame.QUIT:

sys.exit()

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

importsys

importpygame

fromsettingsimportSettings

fromshipimportShip

importgame_functions as gf

defrun_game():

#initialize game and create a dispaly object

pygame.init()

ai_settings=Settings()

总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:什么是Python语言?Python可以做什么?
下一篇:python实现读取并显示图片的方法(python读图片数据)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~