当前位置: 首页 > news >正文

做球迷网站济南网络招聘

做球迷网站,济南网络招聘,wordpress更改布局,房屋装修公司目录 13.6.2 响应外星人和飞船碰撞 game_stats.py settings.py alien_invasion.py game_functions.py ship.py 注意 13.6.3 有外星人到达屏幕底端 game_functions.py 13.6.4 游戏结束 game_stats.py game_functions.py 13.7 确定应运行游戏的哪些部分 alien_inva… 目录 13.6.2 响应外星人和飞船碰撞 game_stats.py settings.py alien_invasion.py game_functions.py ship.py 注意 13.6.3 有外星人到达屏幕底端 game_functions.py 13.6.4 游戏结束 game_stats.py game_functions.py 13.7 确定应运行游戏的哪些部分 alien_invasion.py 13.8 小结 第4 章 记 分 14.1 添加 Play 按钮 game_stats.py 往期快速传送门在文章最后 感谢大家的支持欢迎订阅收藏专栏将持续更新 13.6.2 响应外星人和飞船碰撞 现在需要确定外星人与飞船发生碰撞时该做些什么。我们不销毁ship实例并创建一个新的 ship实例而是通过跟踪游戏的统计信息来记录飞船被撞了多少次跟踪统计信息还有助于记 分。 下面来编写一个用于跟踪游戏统计信息的新类——GameStats并将其保存为文件 game_stats.py game_stats.py class GameStats(): 跟踪游戏的统计信息def __init__(self, ai_settings):初始化统计信息self.ai_settings ai_settings 1 self.reset_stats()def reset_stats(self):初始化在游戏运行期间可能变化的统计信息self.ships_left self.ai_settings.ship_limit 在这个游戏运行期间我们只创建一个GameStats实例但每当玩家开始新游戏时需要重 置一些统计信息。为此我们在方法reset_stats()中初始化大部分统计信息而不是在__init__() 中直接初始化它们。我们在__init__()中调用这个方法这样创建GameStats实例时将妥善地设置 这些统计信息见Ø同时在玩家开始新游戏时也能调用reset_stats()。 当前只有一项统计信息——ships_left其值在游戏运行期间将不断变化。一开始玩家拥有 的飞船数存储在settings.py的ship_limit中 settings.py # 飞船设置self.ship_speed_factor 1.5self.ship_limit 3 我们还需对alien_invasion.py做些修改以创建一个GameStats实例 alien_invasion.py --snip-- from settings import Settings 1 from game_stats import GameStats --snip-- def run_game():--snip--pygame.display.set_caption(Alien Invasion)# 创建一个用于存储游戏统计信息的实例 2 stats GameStats(ai_settings) --snip-- # 开始游戏主循环 while True:--snip--gf.update_bullets(ai_settings, screen, ship, aliens, bullets) 3 gf.update_aliens(ai_settings, stats, screen, ship, aliens, bullets)--snip-- 我们导入了新类GameStats 见1创建了一个名为stats的实例见2再调用 update_aliens()并添加了实参stats、screen和ship见3。在有外星人撞到飞船时我们将使用这些实参来跟踪玩家还有多少艘飞船以及创建一群新的外星人。 有外星人撞到飞船时我们将余下的飞船数减1创建一群新的外星人并将飞船重新放置 到屏幕底端中央我们还将让游戏暂停一段时间让玩家在新外星人群出现前注意到发生了碰撞 并将重新创建外星人群。 下面将实现这些功能的大部分代码放到函数ship_hit()中 game_functions.py import sys 1 from time import sleep import pygame --snip-- def ship_hit(ai_settings, stats, screen, ship, aliens, bullets):响应被外星人撞到的飞船# 将ships_left减1 2 stats.ships_left - 1# 清空外星人列表和子弹列表 3 aliens.empty()bullets.empty()# 创建一群新的外星人并将飞船放到屏幕底端中央 4 create_fleet(ai_settings, screen, ship, aliens)ship.center_ship()# 暂停 5 sleep(0.5) 6 def update_aliens(ai_settings, stats, screen, ship, aliens, bullets):--snip--# 检测外星人和飞船碰撞if pygame.sprite.spritecollideany(ship, aliens):ship_hit(ai_settings, stats, screen, ship, aliens, bullets) 我们首先从模块time中导入了函数sleep()以便使用它来让游戏暂停见1。新函数 ship_hit()在飞船被外星人撞到时作出响应。在这个函数内部将余下的飞船数减1见2然 后清空编组aliens和bullets见3。 接下来我们创建一群新的外星人并将飞船居中见4稍后将在Ship类中添加方法 center_ship()。最后我们更新所有元素后但在将修改显示到屏幕前暂停让玩家知道其 飞船被撞到了见5。屏幕将暂时停止变化让玩家能够看到外星人撞到了飞船。函数sleep() 执行完毕后将接着执行函数update_screen()将新的外星人群绘制到屏幕上。 我们还更新了update_aliens()的定义使其包含形参stats、screen和bullets6让它 能够在调用ship_hit()时传递这些值。 下面是新方法center_ship()请将其添加到ship.py的末尾 ship.py def center_ship(self):让飞船在屏幕上居中self.center self.screen_rect.centerx 为让飞船居中我们将飞船的属性center设置为屏幕中心的x坐标而该坐标是通过属性 screen_rect获得的。 注意 我们根本没有创建多艘飞船在整个游戏运行期间我们都只创建了一个飞船实例并 在该飞船被撞到时将其居中。统计信息ships_left让我们知道飞船是否用完。 请运行这个游戏射杀几个外星人并让一个外星人撞到飞船。游戏暂停后将出现一群新 的外星人而飞船将在屏幕底端居中。 13.6.3 有外星人到达屏幕底端 如果有外星人到达屏幕底端我们将像有外星人撞到飞船那样作出响应。请添加一个执行这 项任务的新函数并将其命名为update_aliens() game_functions.py def check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets):检查是否有外星人到达了屏幕底端screen_rect screen.get_rect()for alien in aliens.sprites(): 1 if alien.rect.bottom screen_rect.bottom:# 像飞船被撞到一样进行处理ship_hit(ai_settings, stats, screen, ship, aliens, bullets)break def update_aliens(ai_settings, stats, screen, ship, aliens, bullets):--snip--# 检查是否有外星人到达屏幕底端 2 check_aliens_bottom(ai_settings, stats, screen, ship, aliens, bullets) 函数check_aliens_bottom()检查是否有外星人到达了屏幕底端。到达屏幕底端后外星人的 属性rect.bottom的值大于或等于屏幕的属性rect.bottom的值见1。如果有外星人到达屏幕底 端我们就调用ship_hit()只要检测到一个外星人到达屏幕底端就无需检查其他外星人因 此我们在调用ship_hit()后退出循环。 我们在更新所有外星人的位置并检测是否有外星人和飞船发生碰撞后调用check_aliens_ bottom()见2。现在每当有外星人撞到飞船或抵达屏幕底端时都将出现一群新的外星人。 13.6.4 游戏结束 现在这个游戏看起来更完整了但它永远都不会结束只是ships_left不断变成更小的负数。 下面在GameStats中添加一个作为标志的属性game_active以便在玩家的飞船用完后结束游戏 game_stats.py def __init__(self, settings):--snip--# 游戏刚启动时处于活动状态self.game_active True 现在在ship_hit()中添加代码在玩家的飞船都用完后将game_active设置为False game_functions.py def ship_hit(ai_settings, stats, screen, ship, aliens, bullets):响应飞船被外星人撞到if stats.ships_left 0:# 将ships_left减1stats.ships_left - 1--snip--#暂停一会儿sleep(0.5)else:stats.game_active False ship_hit()的大部分代码都没变。我们将原来的所有代码都移到了一个if语句块中这条if 语句检查玩家是否至少还有一艘飞船。如果是这样就创建一群新的外星人暂停一会儿再接 着往下执行。如果玩家没有飞船了就将game_active设置为False。 13.7 确定应运行游戏的哪些部分 在alien_invasion.py中我们需要确定游戏的哪些部分在任何情况下都应运行哪些部分仅在 游戏处于活动状态时才运行 alien_invasion.py # 开始游戏主循环while True:gf.check_events(ai_settings, screen, ship, bullets)if stats.game_active:ship.update()gf.update_bullets(ai_settings, screen, ship, aliens, bullets)gf.update_aliens(ai_settings, stats, screen, ship, aliens, bullets)gf.update_screen(ai_settings, screen, ship, aliens, bullets) 在主循环中在任何情况下都需要调用check_events()即便游戏处于非活动状态时亦如此。 例如我们需要知道玩家是否按了Q键以退出游戏或单击关闭窗口的按钮。我们还需要不断更 新屏幕以便在等待玩家是否选择开始新游戏时能够修改屏幕。其他的函数仅在游戏处于活动状 态时才需要调用因为游戏处于非活动状态时我们不用更新游戏元素的位置。 现在你运行这个游戏时它将在飞船用完后停止不动。 13.8 小结 在本章中你学习了如何在游戏中添加大量相同的元素如创建一群外星人如何使用嵌 套循环来创建元素网格还通过调用每个元素的方法update()移动了大量的元素如何控制对象 在屏幕上移动的方向以及如何响应事件如有外星人到达屏幕边缘如何检测和响应子弹和外 星人碰撞以及外星人和飞船碰撞如何在游戏中跟踪统计信息以及如何使用标志game_active 来判断游戏是否结束了。 在与这个项目相关的最后一章中我们将添加一个Play按钮让玩家能够开始游戏以及游 戏结束后再玩。每当玩家消灭一群外星人后我们都将加快游戏的节奏并添加一个记分系统 得到一个极具可玩性的游戏 第4 章 记 分 14.1 添加 Play 按钮 在本节中我们将添加一个Play按钮它在游戏开始前出现并在游戏结束后再次出现让 玩家能够开始新游戏。 当前这个游戏在玩家运行alien_invasion.py时就开始了。下面让游戏一开始处于非活动状态 并提示玩家单击Play按钮来开始游戏。为此在game_stats.py中输入如下代码 game_stats.py def __init__(self, ai_settings):初始化统计信息self.ai_settings ai_settingsself.reset_stats()# 让游戏一开始处于非活动状态self.game_active Falsedef reset_stats(self):--snip-- 现在游戏一开始将处于非活动状态等我们创建Play按钮后玩家才能开始游戏。 关于“Python”的核心知识点整理大全35-CSDN博客 关于“Python”的核心知识点整理大全34-CSDN博客 关于“Python”的核心知识点整理大全33-CSDN博客 关于“Python”的核心知识点整理大全32-CSDN博客 关于“Python”的核心知识点整理大全31-CSDN博客 关于“Python”的核心知识点整理大全30-CSDN博客 关于“Python”的核心知识点整理大全29-CSDN博客 关于“Python”的核心知识点整理大全28-CSDN博客 关于“Python”的核心知识点整理大全27-CSDN博客 关于“Python”的核心知识点整理大全26-CSDN博客 关于“Python”的核心知识点整理大全25-CSDN博客 关于“Python”的核心知识点整理大全12-CSDN博客 往期快速传送门在文章最后 感谢大家的支持欢迎订阅收藏专栏将持续更新
http://www.dnsts.com.cn/news/14461.html

相关文章:

  • 亚洲做性视频网站网站策划编辑如何做
  • c语言怎么做网站重庆网站建公司大全
  • 网站移动端指的是什么网站类别标签文本
  • 寮步做网站济南j建设网
  • 广东网站建设哪里有赣州门户网站建设
  • 网站租用泸州网站建设公司
  • 建设网站服务商小白学网站建设与设计书
  • iis网站主目录阿里云网站更换域名
  • 西安关键词网站排名输入关键词就能写文章的软件
  • 网站可以同时做竞价和优化吗注册门户网站
  • 专业制作网站服务wordpress静态页生成
  • 喜欢网站建设学什么专业微信网站改版价格
  • 做网站人wordpress 管理密码
  • 网站开发房源岗位网站定位
  • 北京建网站公司哪家便宜广告免费设计在线生成
  • 网站开发过程分为哪几个阶段lnmp 网站开发总结
  • 佛山网站设计代理商泰国做彩票网站
  • 网站开发客户wordpress常见问题
  • 做汽车商城网站seo自助建站平台
  • 网站运营内容方案wordpress ftp 主机名
  • 东营做网站优化的公司中航建设集团网站
  • 如何更快的学习.net网站开发用凡科做的手机网站版
  • 请人做ppt的网站网上购物最实惠的网站
  • 介绍一个做美食的网站上海网站的优化公司哪家好
  • 厦门网站设计公司推荐网站空间的申请
  • 成都网站维护网页微博视频不能播放
  • wordpress公司网站插件工信部备案网站打不开
  • 高端网站有哪些优势阿里云的wordpress如何设置
  • 郑州企业建站网站建设工程造价管理总站网站
  • 网站文章页图片大全网站分析论文