系列文章目录

第一章:武装飞船

06:让飞船移动

目录

系列文章目录

第一章:武装飞船

06:让飞船移动

一、驾驶飞船

二、让飞船移动

1.代码及注释(笔记)

A:修改文件:game_functions.py

B:修改文件:alien_invasion.py

C:修改文件:ship.py

2.运行效果

A.按下右箭头键后向右移动,再按下左箭头键时停止

B.按下左箭头键后向右移动,再按下右箭头键时停止


一、驾驶飞船

下面来让玩家能够左右移动飞船。我们将编写代码,在用户按左或右箭头键时做出响应。我们将首先专注于向右移动,再使用同样的原理来控制向左移动。通过这样做,你将学会如何控制屏幕图像的移动。

二、让飞船移动

1.代码及注释(笔记)

(笔记在代码的注释中!!!)

A:修改文件:game_functions.py

#渗透小红帽python的学习之路
#外星人入侵小游戏
#game_functions.py
#存储让游戏运行的函数import sysimport pygamedef check_events(ship): # 在玩家按右箭头时需要将飞船向右移动,# 所以给函数加上了形参shipfor event in pygame.event.get():  # 监听键盘和鼠标事件if event.type == pygame.QUIT:sys.exit()#修改alien_invasion.py,使其导入game_functions#并将事件循环替换为对函数check_events()的调用elif event.type == pygame.KEYDOWN:if event.key == pygame.K_RIGHT:#移动飞船ship.moving_right = True#玩家按下右箭头键时标志设为trueelif event.key == pygame.K_LEFT:ship.moving_left = True# 玩家按下左箭头键时标志设为trueelif event.type == pygame.KEYUP:if event.key == pygame.K_RIGHT:ship.moving_right = False# 玩家松开右箭头键时标志设为falseelif event.key == pygame.K_LEFT:ship.moving_left = False# 玩家松开左箭头键时标志设为falsedef update_screen(ai_settings,screen,ship):# 将更新屏幕的代码移到此处screen.fill(ai_settings.bg_color)  # 每次循环都会重绘屏幕ship.blitme()  # 每次循环时重新绘制飞船pygame.display.flip()  # 让最近绘制的屏幕可见# 然后修改alien_invasion.py

B:修改文件:alien_invasion.py

#渗透小红帽python的学习之路
#外星人入侵小游戏
#game_functions.py
#存储让游戏运行的函数import sysimport pygamedef check_events(ship): # 在玩家按右箭头时需要将飞船向右移动,# 所以给函数加上了形参shipfor event in pygame.event.get():  # 监听键盘和鼠标事件if event.type == pygame.QUIT:sys.exit()#修改alien_invasion.py,使其导入game_functions#并将事件循环替换为对函数check_events()的调用elif event.type == pygame.KEYDOWN:if event.key == pygame.K_RIGHT:#移动飞船ship.moving_right = True#玩家按下右箭头键时标志设为trueelif event.key == pygame.K_LEFT:ship.moving_left = True# 玩家按下左箭头键时标志设为trueelif event.type == pygame.KEYUP:if event.key == pygame.K_RIGHT:ship.moving_right = False# 玩家松开右箭头键时标志设为falseelif event.key == pygame.K_LEFT:ship.moving_left = False# 玩家松开左箭头键时标志设为falsedef update_screen(ai_settings,screen,ship):# 将更新屏幕的代码移到此处screen.fill(ai_settings.bg_color)  # 每次循环都会重绘屏幕ship.blitme()  # 每次循环时重新绘制飞船pygame.display.flip()  # 让最近绘制的屏幕可见# 然后修改alien_invasion.py

C:修改文件:ship.py

#渗透小红帽python的学习之路
#外星人入侵小游戏
#ship.py
#管理飞船行为的类import pygameclass Ship():def __init__(self,screen):#参数screen用来指定将飞船绘制到什么地方self.screen = screen#加载飞船图片并获取其外接矩形self.image = pygame.image.load('F:/PythonProject/pythongame/images/ship.bmp')#复制图片路径后需要将斜杠改为反斜杠self.rect = self.image.get_rect()self.screen_rect = screen.get_rect()#将每艘新飞船放在屏幕中间self.rect.centerx = self.screen_rect.centerxself.rect.bottom = self.screen_rect.bottom# 移动标志,玩家按下右箭头键时,将标志设为true,松开时重新设置为falseself.moving_right = Falseself.moving_left = False# 方法update()检查标志状态,标志为true时调整飞船位置def update(self):if self.moving_right:self.rect.centerx += 1 #实现了飞船向右移动if self.moving_left:self.rect.centerx -= 1 #实现了飞船向左移动def blitme(self):# 在指定位置绘制飞船self.screen.blit(self.image, self.rect)

2.运行效果

A.按下右箭头键后向右移动,再按下左箭头键时停止

B.按下左箭头键后向左移动,再按下右箭头键时停止

有什么不懂的地方在评论区留言哦!希望我的文章能对你有所帮助,如果喜欢我的文章,请点赞收藏并关注!你的认可是对我创作最大的鼓励!

Python小游戏——外星人入侵(保姆级教程)第一章 06让飞船移动相关推荐

  1. Python小游戏——外星人入侵(保姆级教程)第一章 03设置飞船图片 04创建Ship类

    系列文章目录 第一章:武装飞船 03:设置飞船图片 04:创建Ship类--管理飞船行为的类 目录 系列文章目录 第一章:武装飞船 03:设置飞船图片 04:创建Ship类--管理飞船行为的类 一.设 ...

  2. Python小游戏——外星人入侵(保姆级教程)第一章 07调整飞船速度 08限制飞船活动范围

    系列文章目录 第一章:武装飞船 07调整飞船速度 08限制飞船活动范围 目录 系列文章目录 第一章:武装飞船 07调整飞船速度 08限制飞船活动范围 一.代码及演示 1.修改settings 2.修改 ...

  3. Ubuntu22.04LST版本如何安装/卸载steam游戏平台(保姆级教程)

    目录: 第一种安装/卸载方法:Ubuntu Softwaer安装steam 第二种安装方法:linux终端安装 卸载steam游戏平台 steam游戏平台如何配置中文 补充 steam是一个含有数千款 ...

  4. python小游戏----外星人入侵

    源代码: AlienInvasion/game at main · CrashBugger/AlienInvasion (github.com) 本文来自作者对<python编程-从入门到实践& ...

  5. 还不会小程序开发?适用于新手、前端、后端、全栈的小程序开发保姆级教程!

    2017年,那个男人微信之父"龙哥",在公开课上提出"小程序".那时大家都还在享受移动互联网所带来的便捷体验,对于微信这个庞然大物所倡导的新物种显然是有点不知所 ...

  6. 【Python黑科技】tkinter库实战“俄罗斯方块”小游戏(保姆级图文+实现代码)

    目录 实现效果 实现思路 实现代码 总结 欢迎关注 『Python黑科技』 系列,持续更新中 欢迎关注 『Python黑科技』 系列,持续更新中 实现效果 实现思路 空间――由 15*25 个空格组成 ...

  7. 【Python黑科技】tkinter库实战“连连看”小游戏(保姆级图文+实现代码)

    目录 实现效果 实现思路 实现代码 总结 欢迎关注 『Python黑科技』 系列,持续更新中 欢迎关注 『Python黑科技』 系列,持续更新中 实现效果 实现思路 链接: https://pan.b ...

  8. 【Python黑科技】tkinter库实战“贪吃蛇”小游戏(保姆级图文+实现代码)

    目录 实现效果 实现思路 实现代码 总结 欢迎关注 『Python黑科技』 系列,持续更新中 欢迎关注 『Python黑科技』 系列,持续更新中 实现效果 实现思路 初始状态的蛇的长 3个像素点,食物 ...

  9. 【Python黑科技】tkinter库实战“2048”小游戏(保姆级图文+实现代码)

    目录 实现效果 实现思路 接收玩家操作 实现代码 总结 欢迎关注 『Python黑科技』 系列,持续更新中 欢迎关注 『Python黑科技』 系列,持续更新中 实现效果 实现思路 按上下左右移动方块. ...

最新文章

  1. c java utf 8_如何对javac设置encoding utf 8
  2. Spark的RDD操作之Join大全
  3. 【bzoj1597】 土地购买
  4. .NET/.NET Core中更清晰的堆栈跟踪
  5. 如何掌握Java内存(并保存程序)
  6. AutoCAD.net Transaction实例4 标高
  7. Uber上市即破发 CEO安慰员工:Facebook和亚马逊上市后股价表现也不好
  8. mysql查询之左连接查询与右连接查询
  9. PlatON云图CSO肖紫闻:面对巨头的榨取,我们能做点什么?
  10. 来soul,遇见你的奇妙缘分
  11. 软通动力、海辉、文思以及金融外包
  12. 虚拟化中的链接克隆技术
  13. 密码学之数字签名是什么
  14. docker 学习记录1
  15. 程序员如何缓解压力,保持心理健康(转)
  16. 7个半月股价涨了40%多,DXC做对了什么?
  17. Win10 WSL忘记用户密码,重置密码
  18. firebug兼容的firefox版本
  19. 阿联酋的20by2020计划为柬埔寨村庄数千居民带来挽救生命的水资源解决方案
  20. 《Linux/UNIX OpenLDAP实战指南》——1.7 对象标识符讲解

热门文章

  1. Rails-treasure chest4: 使用图表对资料进行分析chart.js(及其他);管理用户权限的gem 'Pumdit'(6000)...
  2. 未隔离电源设备使用usb转串口调试导致串口模块爆炸烧坏事故记录
  3. 计算机网络【java面试题】
  4. 大图中找小图(根据图片定位)
  5. Android 应用程序
  6. 磁盘概述、磁盘缓存、虚拟内存及虚拟内存与内存的交换方式
  7. 课时19 函数:我的地盘听我的
  8. 啊哈添柴挑战Java1651. 一个萝卜一个坑
  9. 《独孤九剑学习法》最新修订版
  10. 硅胶盐蓄电池和太阳能电池