教你如何用 Python 写一个小游戏

引言

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

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

安装 pygame

本人电脑是 windows 10python3.6,pygame 下载地址: 传送门 https://pypi.python.org/pypi/Pygame/1.9.3

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

运行以下命令$ pip install wheel

$ pip install pygame1.9.3cp36cp36mwin_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 默认加载位图虽然其他类型的图像也能加载, 但是需要安装额外的库我们推荐去免费的图片素材网站上去找图像: 传送门 https://pixabay.com/ 我们在主项目文件夹 (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_functionsasgf

defrun_game():

#initialize game and create a dispaly object

pygame.init()

ai_settings=Settings()

来源: https://cloud.tencent.com/developer/article/1023469?fromSource=waitui

手机版python3h如何自制游戏_教你如何用 Python 写一个小游戏相关推荐

  1. python文字小游戏大全_教你如何用Python写一个小游戏

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

  2. python能制作游戏吗_如何用python写一个小游戏

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 引言最近python语言大火,除了在科学计算领域python有用武之地之外,在游 ...

  3. 使用python制作聊天框解谜游戏_使用Python写一个小游戏alien invasion!

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

  4. 关于python小游戏的毕业论文_使用Python写一个小游戏

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

  5. python写游戏脚本-使用Python写一个小游戏

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

  6. python编程小游戏-使用Python写一个小游戏

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

  7. 用python做一个简单的游戏,用python写一个小游戏

    大家好,本文将围绕如何用python做一个简单的小游戏展开说明,python编写的入门简单小游戏是一个很多人都想弄明白的事情,想搞清楚用python做一个简单的游戏需要先了解以下几个事情. 1.Pyt ...

  8. python编写一个弹球游戏_Python实战案例:用Python写一个弹球游戏,就是这么强

    我们前面讲了几篇关于类的知识点,为了让大家更好的掌握类的概念,并灵活的运用这些知识,我写了一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python ...

  9. python如何开发网站_如何用Python写一个小网站?

    一.准备 python基础相关准备:pygame的基础知识,参考目光博客的"用Python和Pygame写游戏-从入门到精通"安python 3.8.0 在python官网下载,不 ...

最新文章

  1. Asp.net based Web Application部署后的问题
  2. 用Itext把数据导出到Pdf文档
  3. Docker操作命令详解
  4. 2013.10u-boot移植之SD保存环境变量
  5. 前端学习(1848)vue之电商管理系统电商系统的开发模式和技术选型
  6. 领域驱动战略设计实践
  7. 自定制shell提示符
  8. 来了!5G和AI的未来 这10位行业领袖这么说
  9. 从IIS到PAGE对象:ASP.NET之旅
  10. C++中在堆区用new开辟空间
  11. 用vivo手机拍照一定要先打开这个设置,不然白浪费这么强大的手机
  12. IPv6基础介绍--IPv6路由基础--DHCPv6原理与配置——总结
  13. windows11配置检测工具-win11配置检测工具
  14. [cv]郑哲东 Deep-ReID——Learn pedestrian representations from
  15. MaC 修改MySQL密码
  16. 散列函数设计:除留余数法
  17. 苹果手机来电归属地_工信部 : 暂未出台取消手机号码归属地政策!
  18. 创业全攻略:从零到开具第一张发票
  19. JAVA面向对象程序设计-FeiGe快递系统-继承II
  20. 熬夜人必看!华佗在世!不看终身后悔

热门文章

  1. 第六周组会摘要工作计划与分工
  2. Linux分布式缓存系统——memcached+LAMP环境搭建+监控
  3. canvas画笔自定义笔触
  4. 苹果自研M1芯片跑分曝光-新MacBook Air超2019款顶配MacBook Pro
  5. 如何让Word中某一页横放
  6. python实现录屏录音小工具
  7. html中的表格和表单设计总结
  8. 下雨打雷效果(动态)html
  9. c语言中lookup函数功能,查询引用之王——Lookup函数实用技巧解读!
  10. 前端如何创建好看的简洁的蒙版弹窗