系列文章目录

第一章:武装飞船

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. 设置IDEA自动导入import 关联的包
  2. 如何轻松学会一门外语?
  3. 30天敏捷结果(4):放弃一些事情
  4. gzcms技术开发文档
  5. js 字符串操作函数有哪些
  6. 伺服系统控制网络的重要性! 现场总线的重要性! SSCNET运动控制系统与发展趋势
  7. java外部接口图解_java代码实现访问网络外部接口并获取数据的工具类详解
  8. checked exception和unchecked exception区别
  9. 机器学习9-案例1:银行营销策略分析
  10. 淘宝首页性能优化实践
  11. 加盟 XEIM 开源即时通讯软件团队
  12. c语言中地址值是什么意思,单片机C语言中如何区别是地址还是数值啊?
  13. 电脑卡顿反应慢解决办法
  14. 全球首家BAYC NFT主题餐厅BoredHungry开业,可使用APE和ETH支付
  15. 简单介绍区块链的联盟链
  16. 收获之英雄会产品论坛
  17. IntelliJ IDEA配置开发环境
  18. 意想不到的试衣方法, kinect试衣镜将问世,神奇!
  19. 【华为机考】俄罗斯方块详解——图文并茂,绘声绘色
  20. 小觅相机问题解决后开始进行标定的事

热门文章

  1. 如何在隔离电源 PCB 布局中接地
  2. vscode网页版的正确打开方式(建立tunnel-p2p连接)
  3. 案例—手机号码归属地专业在线查询
  4. React学习笔记01: JSX 代码是如何“摇身一变”成为 DOM 的?
  5. 测试用例方法---场景法(黑盒)
  6. 拿酒杯的优雅姿态(组图)
  7. 电容感应触摸屏工作原理
  8. RabbitMQ——邮件服务,初学记录
  9. VFX Graph 魔法图书馆
  10. 通过中断来控制led灯亮