0
点赞
收藏
分享

微信扫一扫

物联网主机E6000:引领智能安防新时代

精进的医生 2023-12-23 阅读 29

目录

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 小结

第14 章

记 分

14.1 添加 Play 按钮

game_stats.py

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!


13.6.2 响应外星人和飞船碰撞

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
 # 飞船设置
 self.ship_speed_factor = 1.5
 self.ship_limit = 3 
--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-- 
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) 
def center_ship(self):
 """让飞船在屏幕上居中"""
 self.center = self.screen_rect.centerx 

注意

我们根本没有创建多艘飞船,在整个游戏运行期间,我们都只创建了一个飞船实例,并 在该飞船被撞到时将其居中。统计信息ships_left让我们知道飞船是否用完。


13.6.3 有外星人到达屏幕底端

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)

13.6.4 游戏结束

 def __init__(self, settings):
 --snip--
 # 游戏刚启动时处于活动状态
 self.game_active = True 
def ship_hit(ai_settings, stats, screen, ship, aliens, bullets):
 """响应飞船被外星人撞到"""
 if stats.ships_left > 0:
 # 将ships_left减1
 stats.ships_left -= 1
 --snip--
 #暂停一会儿
 sleep(0.5)
 else:
 stats.game_active = False

13.7 确定应运行游戏的哪些部分

 # 开始游戏主循环
 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)

13.8 小结

第14 章

记 分

14.1 添加 Play 按钮

def __init__(self, ai_settings):
 """初始化统计信息"""
 self.ai_settings = ai_settings
 self.reset_stats()
 # 让游戏一开始处于非活动状态
 self.game_active = False
 def reset_stats(self):
 --snip-- 

关于“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博客

往期快速传送门👆(在文章最后):

感谢大家的支持!欢迎订阅收藏!专栏将持续更新!

举报

相关推荐

0 条评论