-
手机版python3h如何自制游戏_教你如何用 Python 写一个小游戏
2020-12-29 02:35:35教你如何用 Python 写一个小游戏引言最近 python 语言大火, 除了在科学计算领域 python 有用武之地之外, 在游戏后台等方面, python 也大放异彩, 本篇博文将按照正规的项目开发流程, 手把手教大家写个 python 小游戏,...教你如何用 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
-
自制物联网智能设备-9.分享我的物联网设备
2018-03-29 10:30:30假设我们用一台手机A为绑定设备的控制端。现在将灯管这个设备分享给手机B。01单个分享点击设备二维码小图标。2.再用手机B去扫下,这样子手机B就获得这个设备的控制权。02如何看到获得分享设备的历史记录进入物联网...导读:
如何分享物联网设备,单个分享、获得分享设备历史记录、批量分享及取消分享。
假设我们用一台手机A为绑定设备的控制端。现在将灯管这个设备分享给手机B。
01单个分享
点击设备二维码小图标。
2.再用手机B去扫下,这样子手机B就获得这个设备的控制权。
02如何看到获得分享设备的历史记录
进入物联网平台管理(或在公众号“红纳里斯”那也可以进入到平台)。点击控制端界面右下方“分享管理”——“分享给我的”,便可。
03取消分享
点击右上角的工具按钮,“共享控制”为“禁止”。这样子共享控制就关闭掉。
手机B再次点击“分享给我的”,列表就会没有灯管这个设备。
如果想再次分享的话,“分享控制”为“打开”,手机B再次刷新一次,即可再次看到灯管这个设备。
04批量分享
先将左上角的小框勾选上,然后再点击“分享管理”——“批量分享”。
这样子就可一次性获得多个设备。
清空获得的分享设备:点击右上角的“”清空分享给我的设备”即可。
-
Google Android SDK开发范例大全(第3版) 1/5
2013-01-20 18:45:35《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计... -
Google Android SDK开发范例大全(第3版) 4/5
2013-01-20 19:16:09《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计... -
《Google Android SDK开发范例大全(第3版)》.pdf
2013-02-17 14:30:16《google android sdk开发范例大全(第3版)》在上一版的基础上,以android手机应用程序开发(采用android sdk 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计... -
Google Android SDK开发范例大全的目录
2010-03-26 09:49:405.5 自制日历手机数据库——实现SQLiteOpenHelper 5.6 手机震动的节奏——Vibrator对象及周期运用 5.7 图文可视化提醒——Toast与LinearLayoutView 5.8 状态栏的图标与文字提醒——NotificationManager与... -
开发者和案例更多:HBuilder装机量500万台,开发者社区月活百万,70多个QQ微信群承载10万人。案例众多,uni统计月活10亿(详见) 性能更高(见评测) 更丰富的周边生态,插件市场数千款插件 提供比小程序原生开发更...
-
开发者和案例更多:HBuilder装机量500万台,开发者社区月活百万,70多个QQ微信群承载10万人。案例众多,uni统计月活10亿(详见) 性能更高(见评测) 更丰富的周边生态,插件市场数千款插件 提供比小程序原生开发更...
-
本项目使用了大量Gif图片, 而且github在国内的访问速度非常不稳定,导致文章页面打开稍慢, 为了解决大陆用户访问项目速度慢的问题, zhaoolee在阿里云买了一台5M的VPS, 已将所有文章链接替换到v2fy.com域名下, 访问...
-
软件工程师典藏:C#程序开发范例宝典(第2版).part01
2012-11-11 20:05:51一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后... -
C#程序开发范例宝典(第2版).part02
2012-11-12 07:55:11一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后... -
C#程序开发范例宝典(第2版).part13
2012-11-12 20:17:14一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后... -
C#程序开发范例宝典(第2版).part08
2012-11-12 08:04:21一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后... -
C#程序开发范例宝典(第2版).part03
2012-11-12 07:56:38一部久享盛誉的程序开发宝典。精选570个典型范例,全面覆盖实用和热点技术,涉及面广,实用性强源于实际项目开发,帮助读者短时间掌握更多实用技术,提高编程水平范例经过精心编排,重点、难点突出,易学易懂书后... -
程序开发范例宝典>>
2012-10-24 10:41:28实例088 自制平滑进度条控件 125 实例089 MaskedTextBox控件的简单应用 128 实例090 制作日历计划任务 130 实例091 在ProgressBar控件中显示进度百分比 132 实例092 在NumericUpDown控件中显示当前系统... -
书 名:程序开发范例宝典>>【中卷】(分三卷上传完本书案例)
2010-04-05 21:59:37实例088 自制平滑进度条控件 125 实例089 MaskedTextBox控件的简单应用 128 实例090 制作日历计划任务 130 实例091 在ProgressBar控件中显示进度百分比 132 实例092 在NumericUpDown控件中显示当前系统日期... -
书 名:程序开发范例宝典>>【下卷】(分三卷上传完本书案例)
2010-04-05 03:24:09实例088 自制平滑进度条控件 125 实例089 MaskedTextBox控件的简单应用 128 实例090 制作日历计划任务 130 实例091 在ProgressBar控件中显示进度百分比 132 实例092 在NumericUpDown控件中显示当前系统日期... -
Visual Basic开发实战1200例(第2卷)(完整版).(清华出版.孙秀梅.巩建华).part1
2016-06-15 00:31:36实例012 自制录音机 34 实例013 实时在线广播 38 实例014 播放MIDI和WAV文件 40 实例015 利用sndPlaySound()函数播放音频文件 41 实例016 利用mciExecute()函数播放WAV文件 42 实例017 播放资源文件中的声音 43... -
Visual Basic开发实战1200例(第2卷)(完整版).(清华出版.孙秀梅.巩建华).part2
2016-06-15 00:34:01实例012 自制录音机 34 实例013 实时在线广播 38 实例014 播放MIDI和WAV文件 40 实例015 利用sndPlaySound()函数播放音频文件 41 实例016 利用mciExecute()函数播放WAV文件 42 实例017 播放资源文件中的声音 43... -
《Java Web开发实战1200例(第I卷)》(清华出版.卢瀚.王春斌).part2 高清完整PDF版
2016-06-13 12:06:47实例212 验证手机号码是否正确 实例213 验证字符串是否为汉字 实例214 验证身份证号码是否有效 实例215 验证车牌号码是否有效 实例216 验证网站地址是否有效 实例217 验证数量和金额 实例218 验证字符串是否...